#pragma warning(disable:4996)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
const char *question;
const char *choices[3];
int correct; // 1〜3
int points;
} Quiz;
static int read_answer_1to3(void) {
char buf[64];
for (;;) {
fflush(stdout
); // これを入れると環境によって表示が確実になる
if (fgets(buf
, sizeof(buf
), stdin
) == NULL
) { return -1;
}
char *end = NULL;
long v
= strtol(buf
, &end
, 10);
if (end == buf || *end != '\0') {
continue;
}
if (v < 1 || v > 3) {
puts("1〜3の範囲で入力してください。"); continue;
}
return (int)v;
}
}
int main(void) {
Quiz quizzes[6] = {
{"かな文字で,物語「源氏物語」を書いた。", {"1. 紫式部","2. 天草四郎","3. ヘレン・ケラー"}, 1, 20},
{"随筆「枕草子」を書いた。", {"1. エジソン","2. 小野小町","3. 清少納言"}, 3, 15},
{"全国各地を実測し,日本地図の作成に努めた。", {"1. 徳川家光","2. 伊能忠敬","3. 吉田松陰"}, 2, 10},
{"日本最初の内閣総理大臣。", {"1. 田中正造","2. 小村寿太郎","3. 伊藤博文"}, 3, 15},
{"「学問のすすめ」を書いた人物。", {"1. 福沢諭吉","2. 樋口一葉","3. 新渡戸稲造"}, 1, 20},
{"細菌学者(医者)として,黄熱病の解明に努めた。", {"1. 山本五十六","2. 吉田茂","3. 野口英世"}, 3, 20}
};
int total = 0;
int n = (int)(sizeof(quizzes) / sizeof(quizzes[0]));
puts("--------クイズを答えてください。--------");
for (int i = 0; i < n; i++) {
printf("第%d問(配点 %d点)\n", i
+ 1, quizzes
[i
].
points); puts(quizzes
[i
].
question); puts(quizzes
[i
].
choices[0]); puts(quizzes
[i
].
choices[1]); puts(quizzes
[i
].
choices[2]);
int ans = read_answer_1to3();
if (ans == -1) {
break;
}
if (ans == quizzes[i].correct) {
total += quizzes[i].points;
} else {
printf("不正解です。正解は%dです。\n", quizzes
[i
].
correct); }
}
printf("あなたの得点は %d 点です。\n", total
);
// ここが重要:Visual Studioでウィンドウが閉じる問題を潰す
return 0;
}
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikKCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnR5cGVkZWYgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIgKnF1ZXN0aW9uOwogICAgY29uc3QgY2hhciAqY2hvaWNlc1szXTsKICAgIGludCBjb3JyZWN0OyAgIC8vIDHjgJwzCiAgICBpbnQgcG9pbnRzOwp9IFF1aXo7CgpzdGF0aWMgaW50IHJlYWRfYW5zd2VyXzF0bzModm9pZCkgewogICAgY2hhciBidWZbNjRdOwoKICAgIGZvciAoOzspIHsKICAgICAgICBwcmludGYoIuWbnuetlO+8iDHjgJwz77yJPiAiKTsKICAgICAgICBmZmx1c2goc3Rkb3V0KTsgLy8g44GT44KM44KS5YWl44KM44KL44Go55Kw5aKD44Gr44KI44Gj44Gm6KGo56S644GM56K65a6f44Gr44Gq44KLCgogICAgICAgIGlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBzdGRpbikgPT0gTlVMTCkgewogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQoKICAgICAgICBidWZbc3RyY3NwbihidWYsICJcclxuIildID0gJ1wwJzsKCiAgICAgICAgY2hhciAqZW5kID0gTlVMTDsKICAgICAgICBsb25nIHYgPSBzdHJ0b2woYnVmLCAmZW5kLCAxMCk7CgogICAgICAgIGlmIChlbmQgPT0gYnVmIHx8ICplbmQgIT0gJ1wwJykgewogICAgICAgICAgICBwdXRzKCLmlbDlrZfjgaDjgZHjgaflhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIIiKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGlmICh2IDwgMSB8fCB2ID4gMykgewogICAgICAgICAgICBwdXRzKCIx44CcM+OBruevhOWbsuOBp+WFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAgiIpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIChpbnQpdjsKICAgIH0KfQoKaW50IG1haW4odm9pZCkgewogICAgUXVpeiBxdWl6emVzWzZdID0gewogICAgICAgIHsi44GL44Gq5paH5a2X44Gn77yM54mp6Kqe44CM5rqQ5rCP54mp6Kqe44CN44KS5pu444GE44Gf44CCIiwgeyIxLiDntKvlvI/pg6giLCIyLiDlpKnojYnlm5vpg44iLCIzLiDjg5jjg6zjg7Pjg7vjgrHjg6njg7wifSwgMSwgMjB9LAogICAgICAgIHsi6ZqP562G44CM5p6V6I2J5a2Q44CN44KS5pu444GE44Gf44CCIiwgeyIxLiDjgqjjgrjjgr3jg7MiLCIyLiDlsI/ph47lsI/nlLoiLCIzLiDmuIXlsJHntI3oqIAifSwgMywgMTV9LAogICAgICAgIHsi5YWo5Zu95ZCE5Zyw44KS5a6f5ris44GX77yM5pel5pys5Zyw5Zuz44Gu5L2c5oiQ44Gr5Yqq44KB44Gf44CCIiwgeyIxLiDlvrPlt53lrrblhYkiLCIyLiDkvIrog73lv6DmlawiLCIzLiDlkInnlLDmnb7pmbAifSwgMiwgMTB9LAogICAgICAgIHsi5pel5pys5pyA5Yid44Gu5YaF6Zaj57eP55CG5aSn6Iej44CCIiwgeyIxLiDnlLDkuK3mraPpgKAiLCIyLiDlsI/mnZHlr7/lpKrpg44iLCIzLiDkvIrol6TljZrmlocifSwgMywgMTV9LAogICAgICAgIHsi44CM5a2m5ZWP44Gu44GZ44GZ44KB44CN44KS5pu444GE44Gf5Lq654mp44CCIiwgeyIxLiDnpo/msqLoq63lkIkiLCIyLiDmqIvlj6PkuIDokYkiLCIzLiDmlrDmuKHmiLjnqLLpgKAifSwgMSwgMjB9LAogICAgICAgIHsi57Sw6I+M5a2m6ICF77yI5Yy76ICF77yJ44Go44GX44Gm77yM6buE54ax55eF44Gu6Kej5piO44Gr5Yqq44KB44Gf44CCIiwgeyIxLiDlsbHmnKzkupTljYHlha0iLCIyLiDlkInnlLDojIIiLCIzLiDph47lj6Poi7HkuJYifSwgMywgMjB9CiAgICB9OwoKICAgIGludCB0b3RhbCA9IDA7CiAgICBpbnQgbiA9IChpbnQpKHNpemVvZihxdWl6emVzKSAvIHNpemVvZihxdWl6emVzWzBdKSk7CgogICAgcHV0cygiLS0tLS0tLS3jgq/jgqTjgrrjgpLnrZTjgYjjgabjgY/jgaDjgZXjgYTjgIItLS0tLS0tLSIpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcHV0cygiIik7CiAgICAgICAgcHJpbnRmKCLnrKwlZOWVj++8iOmFjeeCuSAlZOeCue+8iVxuIiwgaSArIDEsIHF1aXp6ZXNbaV0ucG9pbnRzKTsKICAgICAgICBwdXRzKHF1aXp6ZXNbaV0ucXVlc3Rpb24pOwogICAgICAgIHB1dHMocXVpenplc1tpXS5jaG9pY2VzWzBdKTsKICAgICAgICBwdXRzKHF1aXp6ZXNbaV0uY2hvaWNlc1sxXSk7CiAgICAgICAgcHV0cyhxdWl6emVzW2ldLmNob2ljZXNbMl0pOwoKICAgICAgICBpbnQgYW5zID0gcmVhZF9hbnN3ZXJfMXRvMygpOwogICAgICAgIGlmIChhbnMgPT0gLTEpIHsKICAgICAgICAgICAgcHV0cygiXG7lhaXlipvjgYzntYLkuobjgZfjgb7jgZfjgZ/jgIIiKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoYW5zID09IHF1aXp6ZXNbaV0uY29ycmVjdCkgewogICAgICAgICAgICBwdXRzKCLmraPop6PjgafjgZnjgIIiKTsKICAgICAgICAgICAgdG90YWwgKz0gcXVpenplc1tpXS5wb2ludHM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHJpbnRmKCLkuI3mraPop6PjgafjgZnjgILmraPop6Pjga8lZOOBp+OBmeOAglxuIiwgcXVpenplc1tpXS5jb3JyZWN0KTsKICAgICAgICB9CiAgICB9CgogICAgcHV0cygiIik7CiAgICBwcmludGYoIuOBguOBquOBn+OBruW+l+eCueOBryAlZCDngrnjgafjgZnjgIJcbiIsIHRvdGFsKTsKCiAgICAvLyDjgZPjgZPjgYzph43opoHvvJpWaXN1YWwgU3R1ZGlv44Gn44Km44Kj44Oz44OJ44Km44GM6ZaJ44GY44KL5ZWP6aGM44KS5r2w44GZCiAgICBwdXRzKCJFbnRlcuOCreODvOOBp+e1guS6huOBl+OBvuOBmeOAgiIpOwogICAgZ2V0Y2hhcigpOwoKICAgIHJldHVybiAwOwp9