2015-09-19 19 views
-2

else語句我在C有非常基本的程序,計算等級,但它的運行不正常的取悅任何人的幫助,這裏是代碼程序嵌套如果c中

#include <stdio.h> 
#include <math.h> 

int main() 
{ 
     int test1 ,test2,assignment1 , assignment2; 

     printf("Please enter the first test mark: ");  
     scanf("%f", &test1); 
     printf("You entered: %f \n", test1); 

     printf("Please enter the second test mark: ");  
     scanf("%f", &test2); 
     printf("You entered: %f \n",test2); 

     printf("Please enter the first assignment mark: ");  
     scanf("%f", &assignment1); 
     printf("You entered: %f \n", assignment1); 

     printf("Please enter the second assignment mark: ");  
     scanf("%f", &assignment2); 
     printf("You entered: %f \n", assignment2); 

/* Now using nested ifs the program will use the calculate the average of the entered numbers and will 
    determine what the final mark is for the student */ 

     if ((test1+test2+assignment1+assignment2)/4 == '100>80') 
      printf ("You got an A! \n"); 
     else 
      if ((test1+test2+assignment1+assignment2)/4 == '79>70') 
      printf ("You got a B! \n"); 
     else 
      if ((test1+test2+assignment1+assignment2)/4 == '69>60') 
      printf ("You got a C! \n"); 
     else 
      if ((test1+test2+assignment1+assignment2)/4 == '59>50') 
      printf ("You got a D! \n");   
     else 
      if ((test1+test2+assignment1+assignment2)/4 == '49>0') 
      printf ("You got an F! \n"); 
     else 
      if (test1,test2 == '50>0') 
       printf ("You got an F! \n"); 
     else 
      if ((assignment1, assignment2) == '50>0') 
       printf ("You got a ! \n");     
     else 
      printf ("INVALID MARK! \n"); 
     return 0; 
} 

這裏是輸出。 enter image description here

+0

[你應該警告編譯](http://coliru.stacked-crooked.com/a/d153a2a9b687ba8e) – chris

+0

請勿張貼截圖!而是粘貼相關的文字。 – Olaf

+2

你爲什麼要標記一個C問題[tag:C++]?沒有「C/C++」這樣的語言。 –

回答

0

變化int test1 ,test2,assignment1 , assignment2;

float test1 ,test2,assignment1 , assignment2;

0

雖然您提交編譯和構建語法,它發出多次警告這樣做。例如,評估行可以編譯,但不要做你想要的。
聲明:如果這樣寫的

if ((test1+test2+assignment1+assignment2)/4 == '100>80')// '100>80' ?? 

例如會更有意義:

if ((test1+test2+assignment1+assignment2)/4 >= 80)//A 

和:

if ((test1+test2+assignment1+assignment2)/4 == '79>70') 

改爲:

if (((test1+test2+assignment1+assignment2)/4 > 70) && 
    ((test1+test2+assignment1+assignment2)/4 <= 79))) //B 
-1

嘗試這樣的:

#include <stdio.h> 
#include <math.h> 

int main(){ 

    int test1 ,test2,assignment1 , assignment2; 

    printf("Please enter the first test mark: ");  
    scanf("%d", &test1); 
    printf("You entered: %d \n", test1); 

    printf("Please enter the second test mark: ");  
    scanf("%d", &test2); 
    printf("You entered: %d \n",test2); 

    printf("Please enter the first assignment mark: ");  
    scanf("%d", &assignment1); 
    printf("You entered: %d \n", assignment1); 

    printf("Please enter the second assignment mark: ");  
    scanf("%d", &assignment2); 
    printf("You entered: %d \n", assignment2); 

    if ((test1+test2+assignment1+assignment2)/4 > 100 || 
     test1 < 0 || test2 < 0 || 
     assignment1 < 0 || assignment2 < 0) 
     printf ("INVALID MARK!\n"); 

    else if ((test1 + test2 > 0) && (test1 + test2 < 50)) 
     printf ("You got an F! \n"); 

    else if ((assignment1 + assignment2 > 0) 
     && (assignment1 + assignment2 < 50)) 
     printf ("You got a ! \n"); 

    else if ((test1+test2+assignment1+assignment2)/4 >= 80) 
     printf ("You got an A! \n"); 

    else if ((test1+test2+assignment1+assignment2)/4 >= 70) 
     printf ("You got a B! \n"); 

    else if ((test1+test2+assignment1+assignment2)/4 >= 60) 
     printf ("You got a C! \n"); 

    else if ((test1+test2+assignment1+assignment2)/4 >= 50) 
     printf ("You got a D! \n"); 

    else if ((test1+test2+assignment1+assignment2)/4 >= 0) 
     printf ("You got an F! \n"); 

    else 
     printf ("INVALID MARK! \n"); 

    return 0; 

}