Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題
1つの単語 W と文章 T が与えられます。T の中にある W の数を出力するプログラムを作成して下さい。
文章 T に含まれるスペースまたは改行で区切られた文字列を単語 Ti とします。
すべての Ti において単語 W と同じになるものを数えて下さい。
なお、大文字と小文字は区別しません。
・入力される値
1行目に単語 W が与えられます。
続いて、複数の行にまたがった文章与えられます。
END_OF_TEXT という文字列が文章の終わりを示します。
・期待する出力
単語 W の数を出力して下さい。
・条件
Wの文字列の長さは10を超えない
Wに含まれる文字はすべてアルファベット小文字である
Tの1行あたりの文字列の長さは1000を超えない
僕が作成、提出したコードは、以下のとおりです。
/* ITP1_9_A Finding a Word http://judge.u-aizu.ac.jp/ 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<stdio.h> #include<string.h> #include<ctype.h> int main(void){ int i; int sum = 0; char W[11],T[1001]; scanf("%s",W); for(i=0;W[i];++i){ W[i]=tolower(W[i]); } while(1){ scanf("%s",T); if(strcmp("END_OF_TEXT", T)==0){ break; } for(i=0;T[i];++i){ T[i] = tolower(T[i]); } if(strcmp(W,T)==0){ ++sum; } } printf("%d\n",sum); return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
ITP1_9_A Finding a Word