• 締切済み

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; } 本当に困っています。ご教授お願いします。

みんなの回答

回答No.5

本質的な回答ではないのであれですが……。 「教授」には、「教示」と同じ意味の使い方もありますので、「教授する」や「ご教授ください」は間違いとはいえないと思うわけです。 ニュアンスとしては、「教授する」のほうが、「教示する」よりも内容が専門的なようです。

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.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 ); }

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

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

回答No.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個延々と並べるのは能がない      じゃぁどうするか考えようね */ }

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

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

関連するQ&A