2013-08-02 31 views
0

我是C++的初學者。我只是想輸出數字級別旁邊的字母等級,但我不知道如何將int W轉換爲輸出字母。將int轉換爲用戶定義函數中的字符

char Grade(int W) 
{ 
    char A,B,C,F; 
    if (W == 100) 
     return W = "A"; 
    else if (W == 99) 
     return A; 
} 
+0

你爲什麼要轉換W? –

回答

2

您需要了解存在於C++程序中的不同typesint用於數字,char用於字符。

而且,存在的類型,所述名稱和可變的之間的差。 的聲明

char A,B,C,F; 

意味着你正在創建4個char變量。他們的名稱是A,B,C和F.但現在他們不包含任何。所以,你可以改變你的代碼:

char Grade(int W) 
{ 
char A = 'A',B = 'B',C = 'C',F = 'F'; //now, A has the value 'A', B has the value 'B' etc. 
if(W==100) 
    return A; 
else if(W==99) 
    return A; 
} 

現在,變量A,這是一個char變量的值是'A'。此外,請注意,您返回的類型必須與您的功能返回類型相同。 你的函數具有簽名char Grade(int W),這意味着參數int返回類型char

現在如果W有100個不同的可能值,你會怎麼做?你不想檢查每種可能性。否則,您將以100個不同的else if ...語句結束,這會破壞編程的目的!相反,你想要的一切,這是上面的90是「A」,一切以上80是「B」,等於是你的代碼更改爲:

char Grade(int W) 
{ 
char A = 'A',B = 'B',C = 'C',F = 'F'; 
if(W >= 90)  //Now, any value of W that is greater than 
       //or equal to 90 will return 'A' 
    return A; 
else if(W >= 80) //the 'else' means that (W >= 90) was not true, 
         //so W must be less than 90. Now we check if W >= 80 
    return B; 
else if ..... //do the same for C, F etc. 
} 
1

您可以將分數轉換成一個字母等級簡單的if/else塊。

char Grade(int score) 
{ 
    if(score >= 90) return 'A'; 
    else if(score >= 80) return 'B'; 
    else if(score >= 70) return 'C'; 
    else if(score >= 60) return 'D'; 
    return 'F'; 
} 
+0

是的,這正是需要的,除了耐心之外,您還應該添加一些關於您的代碼的解釋:) – 0decimal0

0

按照其他解釋,改變從100到50的數值等級成「A」到「F」,這裏的一切低於50是一個自動的「F」,但現在而不任何if..else語句。畢竟,這是一個簡單的關係。

char Grade (int W) 
{ 
    return W < 50 ? 'F' : 'F'-(W-50)/10; 
} 

有一點四捨五入:從90到100將返回「A」,80到89將返回「B」,依此類推。

(考慮你的程序級別後)沒有三元運算符的版本,這可能會使邏輯更清晰。還刪除了關於每個可能的內置符號快捷方式。

char Grade (int W) 
{ 
    if (W < 50) 
    return 'F'; 
    W = W-50; /* we know W >= 50 at this point */ 
    /* Now W=0..50 */ 
    W = W/10; 
    /* Now W is 0..5 */ 
    return 'A'+5-W; 
}