#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];
while (1) {
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;
const 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
);
return 0;
}
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikKCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnR5cGVkZWYgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIgKnF1ZXN0aW9uOwogICAgY29uc3QgY2hhciAqY2hvaWNlc1szXTsKICAgIGludCBjb3JyZWN0OyAgIC8vIDHjgJwzCiAgICBpbnQgcG9pbnRzOwp9IFF1aXo7CgpzdGF0aWMgaW50IHJlYWRfYW5zd2VyXzF0bzModm9pZCkgewogICAgY2hhciBidWZbNjRdOwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgcHJpbnRmKCLlm57nrZTvvIgx44CcM++8iT4gIik7CiAgICAgICAgaWYgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHN0ZGluKSA9PSBOVUxMKSB7CiAgICAgICAgICAgIHJldHVybiAtMTsgLy8g5YWl5Yqb57WC5LqG44Gq44GpCiAgICAgICAgfQoKICAgICAgICAvLyDmlLnooYzpmaTljrsKICAgICAgICBidWZbc3RyY3NwbihidWYsICJcclxuIildID0gJ1wwJzsKCiAgICAgICAgY2hhciAqZW5kID0gTlVMTDsKICAgICAgICBsb25nIHYgPSBzdHJ0b2woYnVmLCAmZW5kLCAxMCk7CgogICAgICAgIC8vIOaVsOWtl+S7peWkluOBjOa3t+OBmOOCiy/nqbov56+E5Zuy5aSW44Gv44KE44KK55u044GXCiAgICAgICAgaWYgKGVuZCA9PSBidWYgfHwgKmVuZCAhPSAnXDAnKSB7CiAgICAgICAgICAgIHB1dHMoIuaVsOWtl+OBoOOBkeOBp+WFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAgiIpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKHYgPCAxIHx8IHYgPiAzKSB7CiAgICAgICAgICAgIHB1dHMoIjHjgJwz44Gu56+E5Zuy44Gn5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCIik7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKGludCl2OwogICAgfQp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBRdWl6IHF1aXp6ZXNbNl0gPSB7CiAgICAgICAgewogICAgICAgICAgICAi44GL44Gq5paH5a2X44Gn77yM54mp6Kqe44CM5rqQ5rCP54mp6Kqe44CN44KS5pu444GE44Gf44CCIiwKICAgICAgICAgICAgeyIxLiDntKvlvI/pg6giLCAiMi4g5aSp6I2J5Zub6YOOIiwgIjMuIOODmOODrOODs+ODu+OCseODqeODvCJ9LAogICAgICAgICAgICAxLCAyMAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAi6ZqP562G44CM5p6V6I2J5a2Q44CN44KS5pu444GE44Gf44CCIiwKICAgICAgICAgICAgeyIxLiDjgqjjgrjjgr3jg7MiLCAiMi4g5bCP6YeO5bCP55S6IiwgIjMuIOa4heWwkee0jeiogCJ9LAogICAgICAgICAgICAzLCAxNQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAi5YWo5Zu95ZCE5Zyw44KS5a6f5ris44GX77yM5pel5pys5Zyw5Zuz44Gu5L2c5oiQ44Gr5Yqq44KB44Gf44CCIiwKICAgICAgICAgICAgeyIxLiDlvrPlt53lrrblhYkiLCAiMi4g5LyK6IO95b+g5pWsIiwgIjMuIOWQieeUsOadvumZsCJ9LAogICAgICAgICAgICAyLCAxMAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAi5pel5pys5pyA5Yid44Gu5YaF6Zaj57eP55CG5aSn6Iej44CCIiwKICAgICAgICAgICAgeyIxLiDnlLDkuK3mraPpgKAiLCAiMi4g5bCP5p2R5a+/5aSq6YOOIiwgIjMuIOS8iuiXpOWNmuaWhyJ9LAogICAgICAgICAgICAzLCAxNQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAi44CM5a2m5ZWP44Gu44GZ44GZ44KB44CN44KS5pu444GE44Gf5Lq654mp44CCIiwKICAgICAgICAgICAgeyIxLiDnpo/msqLoq63lkIkiLCAiMi4g5qiL5Y+j5LiA6JGJIiwgIjMuIOaWsOa4oeaIuOeosumAoCJ9LAogICAgICAgICAgICAxLCAyMAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAi57Sw6I+M5a2m6ICF77yI5Yy76ICF77yJ44Go44GX44Gm77yM6buE54ax55eF44Gu6Kej5piO44Gr5Yqq44KB44Gf44CCIiwKICAgICAgICAgICAgeyIxLiDlsbHmnKzkupTljYHlha0iLCAiMi4g5ZCJ55Sw6IyCIiwgIjMuIOmHjuWPo+iLseS4liJ9LAogICAgICAgICAgICAzLCAyMAogICAgICAgIH0KICAgIH07CgogICAgaW50IHRvdGFsID0gMDsKICAgIGNvbnN0IGludCBuID0gKGludCkoc2l6ZW9mKHF1aXp6ZXMpIC8gc2l6ZW9mKHF1aXp6ZXNbMF0pKTsKCiAgICBwdXRzKCItLS0tLS0tLeOCr+OCpOOCuuOCkuetlOOBiOOBpuOBj+OBoOOBleOBhOOAgi0tLS0tLS0tIik7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBwdXRzKCIiKTsKICAgICAgICBwcmludGYoIuesrCVk5ZWP77yI6YWN54K5ICVk54K577yJXG4iLCBpICsgMSwgcXVpenplc1tpXS5wb2ludHMpOwogICAgICAgIHB1dHMocXVpenplc1tpXS5xdWVzdGlvbik7CiAgICAgICAgcHV0cyhxdWl6emVzW2ldLmNob2ljZXNbMF0pOwogICAgICAgIHB1dHMocXVpenplc1tpXS5jaG9pY2VzWzFdKTsKICAgICAgICBwdXRzKHF1aXp6ZXNbaV0uY2hvaWNlc1syXSk7CgogICAgICAgIGludCBhbnMgPSByZWFkX2Fuc3dlcl8xdG8zKCk7CiAgICAgICAgaWYgKGFucyA9PSAtMSkgewogICAgICAgICAgICBwdXRzKCJcbuWFpeWKm+OBjOe1guS6huOBl+OBvuOBl+OBn+OAgiIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmIChhbnMgPT0gcXVpenplc1tpXS5jb3JyZWN0KSB7CiAgICAgICAgICAgIHB1dHMoIuato+ino+OBp+OBmeOAgiIpOwogICAgICAgICAgICB0b3RhbCArPSBxdWl6emVzW2ldLnBvaW50czsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwcmludGYoIuS4jeato+ino+OBp+OBmeOAguato+ino+OBryVk44Gn44GZ44CCXG4iLCBxdWl6emVzW2ldLmNvcnJlY3QpOwogICAgICAgIH0KICAgIH0KCiAgICBwdXRzKCIiKTsKICAgIHByaW50Zigi44GC44Gq44Gf44Gu5b6X54K544GvICVkIOeCueOBp+OBmeOAglxuIiwgdG90YWwpOwoKICAgIHJldHVybiAwOwp9Cg==