此 C 程序中的“misplaced else”错误

新手上路,请多包涵

我似乎无法修复下面代码中的“misplaced else”错误。此代码应收集和计算学期成绩,并根据分数给出评论。

 #include <conio.h>
#include <stdio.h>

main()
{
    char name[20];
    int exam, q1, q2, q3, ass, sw, att, avgq, CS, TG;
    clrscr();
    printf("Name: ");
    gets(name);
    printf("\nExam: ");
    scanf("%d", &exam);
    printf("\nQuiz #1: ");
    scanf("%d", &q1);
    printf("\nQuiz #2: );
    scanf("%d", &q2);
    printf("\nQuiz #3: ");
    scanf("%d", &q3);
    printf("\nAssignment: ");
    scanf("%d", &ass);
    printf("\nSeatwotk: ");
    scanf("%d", &sw);
    printf("\nAttendance: ");
    scanf("%d", &att);
    CS = (0.4*ass) + (0.4*sw) + (0.2*att);  // class standing //
    avgq = (q1 + q2 + q3)/3;  // Average quiz //
    TG = (0.4*exam) + (0.3*avgq) + (0.3*CS);  // Term grade //
    if(TG >= 90)
       printf("Term Grade: %d", TG);
       printf("Remarks: EXCELLENT");
    else if (TG>=80 && TG<=89)
       printf("Term Grade: %d", TG);
       printf("Remarks: SATISFACTORY");
    else if (TG>=76 && TG<=79)
       printf("Term Grade: %d", TG);
       printf("Remarks: GOOD");
    else if (TG == 75)
       printf("Term Grade: %d", TG);
       printf("Remarks: PASSING");
    else if (TG<74)
       printf("Term Grade: %d", TG);
       printf("Remarks: FAILED");
    else
       printf("Invalid Input.  Try again");
    getch();
    return 0;
}

原文由 Mon Cabrera 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 556
1 个回答

哦哦!菜鸟警报!只是在开玩笑;我们都必须从某个地方开始;)

所以别担心,美丽的少女!问题出在这里:

声明 if 语句时,必须用花括号括住 if 语句的主体。如果您不这样做,则只会运行 if 语句下方的第一行。这是一个例子:

 // Here, both do something 1 and do something 2 are being run in the 'if' statement
if (something) {
    do something 1;
    do something 2;
}

// Here, only do something 1 will get run inside the 'if' statement
if (something)
    do something 1;
    do something 2;

所以回到你的问题。如果 if 语句主体包含多行,则 必须if 语句中的代码周围放置花括号 {}。

 if (something)
    do something 1;
    do something 2;
else
    do something 3;

相当于

if (something)
    do something 1;
do something 2;
else do something 3;

这就是为什么你的 else 语句会引发错误。每个 else 之前都必须有一个 if

原文由 travisjayday 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题