You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言测验项目:用while/for统计用户答对题数并展示

问题解决:测验程序的答对次数统计修复

你的代码存在几处关键问题导致统计功能异常,以下是修复方案及说明:

核心问题分析

  1. 计数器未初始化:变量i未赋值就直接使用,导致输出垃圾值(如32767)。
  2. 错误的循环用法:用while循环递增计数器完全多余,且写法错误(如while(i=1)是赋值操作,会触发无限循环)。
  3. 条件判断语法错误:if (answer == 1, 3, 4)不符合C语言规则,逗号运算符只会保留最后一个值,导致条件永远为真。
  4. 冗余的switch结构:原代码靠switch的fall-through特性执行所有题目,但switch并非实现该逻辑的合适方式,可直接顺序执行题目。

修复后的完整代码

#include <stdio.h>

int main() {
    int x, answer, i = 0; // 初始化计数器i为0,移除未使用的冗余变量

    printf("Καλώς ήρθατε στο quiz/εργασία:)\n");
    printf("Αυτό το κουίζ περιέχει ερωτήσεις για χώρες επειδή δεν ήθελα να βάλω μαθηματικά\n");
    
    // 用do-while替代goto,更符合结构化编程规范
    do {
        printf("Πάτα *1* για έναρξη\n");
        scanf("%d", &x);
    } while (x != 1);

    printf("Πρεπει να απαντησεις συνολικα 8 ερωτησεις\n");

    // 题目1
    printf("ποια ειναι η πρωτεύουσα της Ρουμανίας;:\n");
    printf("1=Κραϊοβα, 2=Βουκουρέστη, 3=Βουδαπέστη, 4=Οραντέα\n");
    scanf("%d", &answer);
    if (answer == 2) {
        i++; // 答对时计数器加1
        printf("Σωστό!Ειναι η 'Βουκουρέστη.'\n"); // 修正原错误的城市名称
    } else if (answer == 1 || answer == 3 || answer == 4) {
        printf("Λαθος.\n");
    }

    // 题目2
    printf("ποια χώρα κατανάλλωσε το περισσότερο τσάι το 2022;:\n");
    printf("1=Ιρλανδία, 2=Ηνωμένο Βασίλειο, 3=Τουρκία, 4=Ινδονησία\n");
    scanf("%d", &answer);
    if (answer == 3) {
        i++;
        printf("Σωστό!Με τον μέσο Τούρκο να καταναλλωνει 3.16kg ετησίως.\n");
    } else if (answer == 1 || answer == 2 || answer == 4) {
        printf("Λαθος.\n");
    }

    // 题目3
    printf("Ποια από τις παρακάτω χώρες έχουν 3 πρωτεύουσες;:\n");
    printf("1=Ελβετία, 2=Νότια Αφρική, 3=Κίνα, 4=Αυστραλία\n");
    scanf("%d", &answer);
    if (answer == 2) {
        i++;
        printf("Σωστό!Ειναι η Νότια Αφρική(1:Κέιπ τάουν, 2:Πρετόρια, 3:Μπλουμφοντέιν.\n");
    } else if (answer == 1 || answer == 3 || answer == 4) {
        printf("Λαθος.\n");
    }

    // 题目4
    printf("Ποιανής χώρας ο εθνικός ύμνος δεν έχει στίχους;:\n");
    printf("1=Μάλτα, 2=Νορβηγία, 3=Ισλανδία, 4=Ισπανία\n");
    scanf("%d", &answer);
    if (answer == 4) {
        i++;
        printf("Σωστό!Ειναι η Ισπανία.\n");
    } else if (answer == 1 || answer == 2 || answer == 3) {
        printf("Λαθος.\n");
    }

    // 题目5
    printf("ποια ειναι η πρωτεύουσα της Εσθονίας;:\n");
    printf("1=Ταλίν, 2=Τάρτου, 3=Νάρβα, 4=Ρακβερέ\n");
    scanf("%d", &answer);
    if (answer == 1) {
        i++;
        printf("Σωστό!Ειναι το Ταλίν.\n");
    } else if (answer == 2 || answer == 3 || answer == 4) {
        printf("Λαθος.\n");
    }

    // 题目6
    printf("Ποια είναι η μικρότερη χώρα της κεντρικής Αμερικής;:\n");
    printf("1=Ελ Σαλβαδόρ, 2=Ονδούρα, 3=Νικαράγουα, 4=Γουατεμάλα\n");
    scanf("%d", &answer);
    if (answer == 1) {
        i++;
        printf("Σωστό!Είναι το Ελ Σαλβαδόρ με έδαφος μόλις 21,041km²\n");
    } else if (answer == 2 || answer == 3 || answer == 4) {
        printf("Λαθος.\n");
    }

    // 题目7
    printf("Ποια χώρα έχει τις περισσότερες ζώνες ώρας;:\n");
    printf("1=Ρωσία, 2=ΗΠΑ, 3=Γαλλία, 4=Ηνωμένο Βασίλειο\n");
    scanf("%d", &answer);
    if (answer == 3) {
        i++;
        printf("Σωστό!Ειναι η Γαλλία με 12 ζώνες ώρας(+παραθαλάσσια εδάφη).\n");
    } else if (answer == 1 || answer == 2 || answer == 4) {
        printf("Λαθος.\n");
    }

    // 题目8
    printf("Ποια ήπειρος φιλοξενεί τις περισσότερες χώρες;:\n");
    printf("1=Ευρώπη, 2=Νότια Αμερική, 3=Αφρική, 4=Ασία\n");
    scanf("%d", &answer);
    if (answer == 3) {
        i++;
        printf("Σωστό!Ειναι η Αφρική με 54 χώρες.\n");
    } else if (answer == 1 || answer == 2 || answer == 4) {
        printf("Λαθος.\n");
    }

    printf("απαντησες σωστα %d\n", i);
    return 0;
}

关键修复说明

  • 计数器初始化:int i = 0; 确保从0开始统计答对次数,避免垃圾值。
  • 替换错误循环:用i++替代冗余且错误的while循环,每次答对仅递增一次。
  • 修正条件判断:使用||逻辑或运算符判断多个错误选项,符合C语言语法规则。
  • 优化代码结构:用do-while循环替代goto,移除冗余的switch结构,让代码更易读。
  • 修正内容错误:第一题的正确答案提示文字写错了城市名称,已修正为正确的Βουκουρέστη(布加勒斯特)。

内容的提问来源于stack exchange,提问作者George Christou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:15:43