此C++程序中的"misplaced else"错误



我似乎无法修复下面代码中的"错位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;
}

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

所以别担心,窈窕少女!问题就在这里:

声明 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语句抛出错误的原因。其他人之前必须有一个if

C++不使用缩进来确定语句的结尾。如果需要多个语句,则需要大括号。

而不是:

if (a)
b;
c;
else
d;

用:

if (a) {
b;
c;
} else {
d;
}

如果在 if 或 else 下有超过 1 行,它们必须包含在大括号中,如下所示:

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");
}

最新更新