2013-11-10 80 views
-1

所以我有麻煩找出我的問題是與它 輸出需要的東西像什麼 「結果1:55.00級P」麻煩了proecdure

我是初學者所以任何幫助就在這段時間鬥爭的高度讚賞,感謝

for(int a=0;a< 10;a++) 
{ 
cout << "Result " << a+1 << " " << score[a] << " " << determine_grade(score[a]) << "\n"; 
} 
system("Pause"); 


} 



char determine_grade(double a) 
{ 
char grade; 
switch(grade) 
{ 
    case(1): 
     if (a >100) 
      cout << "Invalid Input!"; 
    case(2): 
     if (a >= 90) 
      grade = 'A'; 
     break; 
    case(3): 
     if (a >= 70) 
      grade = 'B'; 
     break; 
    case(4): 
     if (a >= 60) 
      grade = 'C'; 
     break; 
    case(5): 
     if (a >= 50) 
      grade = 'P'; 
     break; 
    default: grade = 'U'; 
} 

cout << grade; 
} 
+1

應該是'case('1')'..等等。 'grade'是一個'char',而不是'int'。此外,由於沒有初始化,因此它具有垃圾值。 – Maroun

回答

3

首先,你使用正確switchgrade是不是一個有效的選擇,它甚至沒有初始化。只使用if-else重寫塊。

第二:在功能上,你應該是return grade;,而不是cout吧。這就是整個觀點:函數計算一些值,調用函數決定如何處理它(打印或存儲它或其他)。

2

試試這個

char determine_grade(double a) 
{ 
    if (a > 100) 
    { 
     cout << "Invalid Input!"; 
     return '?'; 
    } 
    if (a >= 90) 
     return 'A'; 
    if (a >= 70) 
     return 'B'; 
    ... 
    return 'U'; 
} 

不知道爲什麼你使用switch語句。

您的代碼編寫方式determine_grade的工作是返回一個值,然後將打印在調用代碼中(即for循環)。因此在determine_grade中使用return而不是cout