我是 C++ 的初学者。我只是想在数字等级旁边输出字母等级,但我不知道如何将 int W 转换为输出字母。
char Grade(int W)
{
char A,B,C,F;
if (W == 100)
return W = "A";
else if (W == 99)
return A;
}
我是 C++ 的初学者。我只是想在数字等级旁边输出字母等级,但我不知道如何将 int W 转换为输出字母。
char Grade(int W)
{
char A,B,C,F;
if (W == 100)
return W = "A";
else if (W == 99)
return A;
}
您需要了解types
C++ 程序中存在的差异。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)
,这意味着参数是 anint
并且返回类型是char
。
现在如果有 100 个不同的可能值,你会怎么做W
?您不想检查每种可能性。否则你最终会得到 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';
}
根据其他解释,将数字等级从 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;
}