入出力と文字
数字文字のカウント
getchar()関数は、文字列を読み込んで、それを返す関数。
読み込み時にエラーが発生したり、入力の終了に達すると、EOFという値を返す。
#include<stdio.h> int main(void){ int i,ch; int cnt[10] = {0}; while(1){ ch = getchar(); if(ch == EOF){ break; } switch(ch){ case '0': cnt[0]++; break; case '1': cnt[1]++; break; case '2': cnt[2]++; break; case '3': cnt[3]++; break; case '4': cnt[4]++; break; case '5': cnt[5]++; break; case '6': cnt[6]++; break; case '7': cnt[7]++; break; case '8': cnt[8]++; break; case '9': cnt[9]++; break; } } puts("数字文字の出現回数"); for(i=0;i<10;i++){ printf("'%d' : %d\n",i,cnt[i]); } return 0; }
このプログラムは次のように簡潔に記述できる。
#include<stdio.h> int main(void){ int i,ch; int cnt[10] = {0}; while(1){ ch = getchar(); if(ch == EOF){ break; } if(ch >= '0' && ch <= '9'){ cnt[ch - '0']++; } } puts("数字文字の出現回数"); for(i=0;i<10;i++){ printf("'%d' : %d\n",i,cnt[i]); } return 0; }
C言語での"文字"とは、その文字に与えられた文字コードすなわち整数値である。
グラフにしてみた
#include<stdio.h> int main(void){ int i,j,ch; int cnt[10] = {0}; while(1){ ch = getchar(); if(ch == EOF){ break; } if(ch >= '0' && ch <= '9'){ cnt[ch - '0']++; } } puts("数字文字の出現回数の分布グラフ"); for(i=0;i<10;i++){ printf("'%d':",i); for(j=0;j<cnt[i];j++){ putchar('*'); } putchar('\n'); } return 0; }