我是一个C初学者,我正在做一个测验。一切都很顺利,但我想计算用户的正确答案,并在测验结束时使用while
或for
显示它们。我已经搜索了几个小时,但没有找到任何东西。如果有人能帮助我,将不胜感激!
下面是我的代码(非英语部分是问题):
#include <stdio.h>
int main() {
int x, a, answer, B, i;
printf("Καλώς ήρθατε στο quiz/εργασία:)\n");
printf("Αυτό το κουίζ περιέχει ερωτήσεις για χώρες επειδή δεν ήθελα να βάλω μαθηματικά\n");
press:
printf("Πάτα *1* για έναρξη\n");
scanf("%d", &x);
if (x <= 1) {
printf("Πρεπει να απαντησεις συνολικα 8 ερωτησεις\n");
goto start;
} else
if (x > 1) {
goto press;
}
start:
switch (x) {
case 1:
{
printf("ποια ειναι η πρωτεύουσα της Ρουμανίας;:\n");
printf("1=Κραϊοβα, 2=Βουκουρέστη, 3=Βουδαπέστη, 4=Οραντέα\n");
scanf("%d", &answer);
if (answer == 2) {
while (i = 1) {
i += 1;
}
printf("Σωστό!Ειναι η 'Βουδαπέστη.'\n");
} else
if (answer == 1, 3, 4) {
printf("Λαθος.\n");
}
}
case 2:
{
printf("ποια χώρα κατανάλλωσε το περισσότερο τσάι το 2022;:\n");
printf("1=Ιρλανδία, 2=Ηνωμένο Βασίλειο, 3=Τουρκία, 4=Ινδονησία\n");
scanf("%d", &answer);
if (answer == 3) {
while (i <= 1) {
i += 1;
}
printf("Σωστό!Με τον μέσο Τούρκο να καταναλλωνει 3.16kg ετησίως.\n");
} else
if (answer == 1, 2, 4) {
printf("Λαθος.\n");
}
}
case 3:
{
printf("Ποια από τις παρακάτω χώρες έχουν 3 πρωτεύουσες;:\n");
printf("1=Ελβετία, 2=Νότια Αφρική, 3=Κίνα, 4=Αυστραλία\n");
scanf("%d", &answer);
if (answer == 2) {
while (i <= 2) {
i += 1;
}
printf("Σωστό!Ειναι η Νότια Αφρική(1:Κέιπ τάουν, 2:Πρετόρια, 3:Μπλουμφοντέιν.\n");
} else
if (answer == 1, 3, 4) {
printf("Λαθος.\n");
}
}
case 4:
{
printf("Ποιανής χώρας ο εθνικός ύμνος δεν έχει στίχους;:\n");
printf("1=Μάλτα, 2=Νορβηγία, 3=Ισλανδία, 4=Ισπανία\n");
scanf("%d", &answer);
if (answer == 4) {
while (i <= 3) {
i += 1;
}
printf("Σωστό!Ειναι η Ισπανία.\n");
} else
if (answer == 1, 3, 2) {
printf("Λαθος.\n");
}
}
case 5:
{
printf("ποια ειναι η πρωτεύουσα της Εσθονίας;:\n");
printf("1=Ταλίν, 2=Τάρτου, 3=Νάρβα, 4=Ρακβερέ\n");
scanf("%d", &answer);
if (answer == 1) {
while (i <= 4) {
i+=1;
}
printf("Σωστό!Ειναι το Ταλίν.\n");
} else
if (answer == 2, 3, 4) {
printf("Λαθος.\n");
}
}
case 6:
{
printf("Ποια είναι η μικρότερη χώρα της κεντρικής Αμερικής;:\n");
printf("1=Ελ Σαλβαδόρ, 2=Ονδούρα, 3=Νικαράγουα, 4=Γουατεμάλα\n");
scanf("%d", &answer);
if (answer == 1) {
while (i <= 5) {
i += 1;
}
printf("Σωστό!Είναι το Ελ Σαλβαδόρ με έδαφος μόλις 21,041km²\n");
} else
if (answer == 2, 3, 4) {
printf("Λαθος.\n");
}
}
case 7:
{
printf("Ποια χώρα έχει τις περισσότερες ζώνες ώρας;:\n");
printf("1=Ρωσία, 2=ΗΠΑ, 3=Γαλλία, 4=Ηνωμένο Βασίλειο\n");
scanf("%d", &answer);
if (answer == 3) {
while (i <= 6) {
i += 1;
}
printf("Σωστό!Ειναι η Γαλλία με 12 ζώνες ώρας(+παραθαλάσσια εδάφη).\n");
} else
if (answer == 1, 2, 4) {
printf("Λαθος.\n");
}
}
case 8:
{
printf("Ποια ήπειρος φιλοξενεί τις περισσότερες χώρες;:\n");
printf("1=Ευρώπη, 2=Νότια Αμερική, 3=Αφρική, 4=Ασία\n");
scanf("%d", &answer);
if (answer == 3) {
while (i <= 7) {
i += 1;
}
printf("Σωστό!Ειναι η Αφρική με 54 χώρες.\n");
} else
if (answer == 1, 2, 4) {
printf("Λαθος.\n");
}
}
printf("απαντησες σωστα %d\n",i);
}
return 0;
}
我试过将while元素以各种形式放在不同的位置,但都没有效果。我得到的最接近“工作”的答案是you answered right- 32767
。
3条答案
按热度按时间ifmq2ha21#
请允许我建议一些其他的代码来简化事情
首先,您很快就会发现,后藤不是建议的最佳实践。
下面查找和解释该程序:
循环结束时,变量中有正确的答案编号 iscorrect
如果你想得到正确答案的解释,你总是可以添加一个exrta数组,并将其作为参数传递给函数,并使其打印出来,而不是我为测试而添加的简单的“correct”。
函数帮助您保持代码整洁有序,它们还可以最大限度地减少空间和时间,因为您可以编写一次,然后在代码中根据需要多次调用它
希望我能帮上忙
laik7k3q2#
我会建议先把它做得尽可能简单。比如:
oipij1gg3#
代码中存在多个问题:
i
未初始化。如果要计算正确答案的数量,请将变量命名为count
,并将其初始化为0
。while (i <= 2) { i += 1; }
都等价于if (i <= 2) { i = 3; }
。你可能应该只计算正确答案的数量。if (answer == 1, 3, 4)
是一个始终为true的常量测试,因为测试表达式中的,
是一个计算结果为第二个操作数的运算符。请注意,无论如何,此测试都是多余的。您应该只使用else {
goto
语句的初始迭代。以下是修改后的版本: