我是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;
}
我是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;
}
您需要了解存在於C++程序中的不同types
。 int
用於數字,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.
}
您可以將分數轉換成一個字母等級簡單的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';
}
是的,這正是需要的,除了耐心之外,您還應該添加一些關於您的代碼的解釋:) – 0decimal0
按照其他解釋,改變從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;
}
你爲什麼要轉換W? –