我似乎无法修复下面代码中的“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 许可协议
哦哦!菜鸟警报!只是在开玩笑;我们都必须从某个地方开始;)
所以别担心,美丽的少女!问题出在这里:
声明 if 语句时,必须用花括号括住 if 语句的主体。如果您不这样做,则只会运行 if 语句下方的第一行。这是一个例子:
所以回到你的问题。如果 if 语句主体包含多行,则 必须 在 if 语句中的代码周围放置花括号 {}。
相当于
这就是为什么你的 else 语句会引发错误。每个 else 之前都必须有一个 if 。