0

我是 C++ 的初学者。我只是想在数字等级旁边输出字母等级,但我不知道如何将 int W 转换为输出字母。

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

3 回答 3

2

您需要了解typesC++ 程序中存在的差异。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;
}

现在,作为变量Achar变量具有值'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.
}
于 2013-08-02T22:48:38.137 回答
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';
}
于 2013-08-02T22:51:08.877 回答
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;
}
于 2013-08-02T23:37:17.753 回答