http://dixq.net/forum/blog.php?u=2356&b=6433
ありがたい事にコメントで色々とご指摘をいただいた。
gets関数禁止、要素数不足による不具合解消、関数の自作。
以上を心がけて再び四択クイズを作り直してみた。
#include
int question(), answer();
int in, score, no;
char str[256];
int main()
{
while (no 4) puts("ERROR!!\a\a\a\n");
} while (in 4); //有効な入力がされるまで繰り返す
answer();
no++;
}
printf("あなたは3問中%d問正解しました\n\a", score);
if (score == 3) //全問正解であれば
puts("おめでとうございます!"); //メッセージを追加する
return 0;
}
int question() //問題と選択肢
{
printf("第%d問\n", no + 1);
if (no == 0) {
puts("元素記号の覚え方、すいへーりーべー…?\a\n"
"1:そーですね\t2:おれのふね\n3:わしのふね\t4:ぼくのふね");
}
else if (no == 1) {
puts("次のうち、最も新しい政令指定都市は…?\a\n"
"1:新潟市\t2:岡山市\n3:熊本市\t4:相模原市");
}
else {
puts("サンタクロースは何に乗っている…?\a\n"
"1:トナカイ\t2:馬\n3:そり\t\t4:牛");
}
}
int answer() //答え
{
if (no == 0 && in != 4)
puts("残念!正解は、4の「ぼくのふね」ですよ\n");
else if (no == 1 && in != 3)
puts("残念!正解は、3の「熊本市」ですよ\n");
else if (no == 2 && in != 3)
puts("残念!サンタクロースが乗っているのは、3の「そり」ですよ\n");
else {
puts("正解です!\n");
score++;
}
}
が、果たして関数の使い方ってこれで合っているのか…
一応動くは動いてるけども…