将整数转换为字母字符

Moh*_*sin 6 c++ ascii

我想根据考试成绩分配成绩.

  • A为90-100.
  • B为80-89.
  • C为70-79.
  • D为60-69.
  • F为0-59.

我知道如果您使用switch或if..else声明,将会有不超过5个声明,但任何人都有更好的解决方案吗?

我使用ASCII值来解决它,但就代码行而言,它只是相同的.

这是代码:

Score/=10;
Score=min(9,Score);
Score=9-Score;
Score+=65;
if(Score<=68)
{
  cout<<static_cast<char>(Score)<<endl;
}
else
{
   cout<<"F"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 18

在输入选择数量有限的情况下,标准方法是使用查找表:

cout << "FFFFFFDCBAA"[Score/10];
Run Code Online (Sandbox Code Playgroud)

演示.

(来自评论)你能解释一下代码中发生了什么吗?

字符串文字"FFFFFFDCBAA"被视为const char*指针,允许应用索引器[]操作符.Score整数除以10,产生0到10之间的数字.字符串中的11个字符对应于"原始"分数的字母等级除以10.

  • 我的头像是没有,但我心里很喜欢这个:/ (8认同)
  • 字符串是一个字符数组,因此您可以访问它们 (2认同)