2017-07-29 126 views
-2

Noob here。我似乎無法修復下面的代碼中的「錯誤的其他」錯誤。此代碼應收集並計算學期成績,並根據分數給予評論。任何幫助表示讚賞。C++上的「錯位的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; 
} 
+4

您需要爲每個「if」塊添加大括號「{}」。沒有它們,你的代碼就會被破壞。 C++沒有基於像Python這樣的縮進範圍。 ***不要從你的代碼中忽略手肘。*** – Carcigenicate

+2

你在使用C++而不是python,使用大括號。 – DimChtz

回答

0

C++不使用縮進來確定語句的結束。如果你想要多個陳述,你需要大括號。

相反的:

if (a) 
    b; 
    c; 
else 
    d; 

用途:

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

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

呃哦! noob警報!只是開玩笑,我們都必須從某處開始;)

所以不要擔心公平的少女!問題在於:

當你聲明一個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語句正文由多於1行組成,則在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。

+0

感謝這工作!在課堂上沒有提到,因爲我們不必在一個if語句中使用多個語句。非常感謝! –

+0

很高興聽到!點擊複選標記按鈕和這個問題的向上箭頭,如果它幫助你;) – travisjayday

+0

@MonCabrera點擊複選標記按鈕;它會幫助我很多 – travisjayday