- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 授業/C言語基礎/タイピング・ゲーム へ行く。
- 1 (2016-01-21 (木) 00:27:04)
- 2 (2016-01-21 (木) 12:26:31)
- 3 (2016-01-22 (金) 09:19:32)
文字列の比較 †
string.h には、文字列を比較するstrcmp関数が用意されています。
strcmp関数は、引数として二つの文字列 s1 と s2 を受け取り、辞書式に比較します。 s1 > s2(辞書で s1 が s2 より後に載る場合)ならば正の値、s1 < s2(辞書で s1 が s2 より先に載る場合)ならば負の値、s1 = s2(s1 と s2 が同じ文字列の場合)ならば 0 を返します(プログラム1)。
#include <stdio.h> #include <string.h> #include <time.h> int main(void) { char s1[256], s2[256]; printf("メール・アドレスを入力してください:\n"); scanf("%s", s1) printf("もう一度入力してください:\n"); scanf("%s", s2) if (strcmp(s1, s2) == 0) { printf("OK\n"); } else { printf("NG\n"); } return 0; }
タイピング・ゲーム †
ランダムに文字列を出題し、キーボードから入力された文字列と比較して正解か間違いかを判定します(プログラム2)。
#include <stdio.h> #include <string.h> #include <time.h> int main(void) { char s1[256], s2[256]; printf("メール・アドレスを入力してください:\n"); scanf("%s", s2) strcpy(s1, s2); printf("%s\n", s1); return 0; }
繰り返しタイピング・ゲーム †
タイピング・ゲームを改良し、10問出題して正解数を出力するようにしてみましょう。
/* * タイピング・ゲーム */ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> int main(void) { char s[256]; char ans[10][256] = { "cat", "dog", "lion", "bear", "tiger", "monkey", "giraffe", "elephant", "kangaroo", "hippopotamus" }; srand((unsigned int) time(NULL)); int r = rand() % 10; printf("%s:\n", ans[r]); scanf("%s", s); if (strcmp(s, ans[r]) == 0) { printf("正解!\n"); } else { printf("間違い!\n"); } return 0; }
スピード・タイピング・ゲーム †
次に、スピード計算ゲームと同じように、制限時間内に何問正解できるかを競うゲームにしてみましょう。
/* * 繰り返しタイピング・ゲーム */ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> int main(void) { char s[256]; char ans[10][256] = { "cat", "dog", "lion", "bear", "tiger", "monkey", "giraffe", "elephant", "kangaroo", "hippopotamus" }; srand((unsigned int) time(NULL)); int score = 0; // 得点 int i; for (i = 1; i <= 10; i++) { int r = rand() % 10; printf("第%d問: %s:\n", i, ans[r]); scanf("%s", s); if (strcmp(s, ans[r]) == 0) { printf("正解!\n"); score++; } else { printf("間違い!\n"); } } printf("%d問正解\n", score); return 0; }