こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

C言語でのプログラミングについて

キーボードから入力された文字列に含まれる各文字の個数を出力するプログラムを作成せよ。
条件
・対象とする文字は英字の小文字のみでよい
・文字列の長さは100文字まで対応できるようにせよ

$ ./a.out
input:aaabtzz
a:3
b:1
t:1
z:2

という問がわかりません。
プログラムの例(C言語)と出来れば解説もご教授ください。
※大学で一年c言語をやった程度なので難しいことや高度なテクニックはわかりません。多少面倒でも初歩的な知識だけで理解できるようにお願いします。
#include<stdio.h>内でできるものでお願いします。

以下、自分なりに考えたものです。
#include<stdio.h>
int main(void)
{
char a[100];

printf("input:");
scanf("%100s",a);

(ここからがわかりません)

return 0;
}

本当に困っています。ご教授お願いします。

投稿日時 - 2012-04-07 00:23:04

QNo.7406965

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

本質的な回答ではないのであれですが……。

「教授」には、「教示」と同じ意味の使い方もありますので、「教授する」や「ご教授ください」は間違いとはいえないと思うわけです。

ニュアンスとしては、「教授する」のほうが、「教示する」よりも内容が専門的なようです。

投稿日時 - 2012-04-09 09:59:00

ANo.4

>多少面倒でも初歩的な知識だけで理解できるように・・

 a から z まで順番に数えて出力するだけなので、「面倒」はありません。
 (○教授、×ご教授、○ご教示)

注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。

#include <stdio.h>

int main( void )
{
 char n, a[ 128 ];
 int i, iCnt;

 printf( "input:" );

 scanf( "%100s", a );

 for( n = 'a'; n <= 'z'; n++ ){

  iCnt = 0;

  for( i = 0; a[ i ] != '\0'; i++ ){

   if( a[ i ] == n ) iCnt++;
  }
  if( 0 == iCnt ) continue;

  printf( "%c:%3d\n", n, iCnt );
 }
 return( 0 );
}

投稿日時 - 2012-04-08 06:43:00

ANo.3

少なくとも char a[100] だと100文字入力されたときダメだと思うけど。

投稿日時 - 2012-04-07 10:47:30

ANo.2

int hist[26]; /* あらかじめ0で埋めておくべし */
char a[100]; /* 入力された文字を格納しておくべし */
int i;

for ( i = 0; a[i] != '\0'; ++i ) {
char x = a[i];
 if ( x == 'a' ) ++hist[0];
 if ( x == 'b' ) ++hist[1];
 ... /* 26個延々と並べるのは能がない
     じゃぁどうするか考えようね */
}

投稿日時 - 2012-04-07 07:36:30

ANo.1

あなたが紙と鉛筆でやるとしたら, どうしますか?

投稿日時 - 2012-04-07 00:36:57

あなたにオススメの質問