将整数转换为字母字符
Converting integers to alphabetic characters
我想根据考试成绩分配成绩。
- 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;
}
在输入选择数量有限的情况下,标准方法是使用查找表:
cout << "FFFFFFDCBAA"[Score/10];
演示。
(来自评论)你能解释一下代码中发生了什么吗?
字符串文本"FFFFFFDCBAA"
被视为const char*
指针,允许应用索引器[]
运算符。Score
在整数中除以 10,产生一个介于 0 和 10 之间的数字(包括 0 和 10)。字符串中的 11 个字符对应于"原始"分数除以 10 的字母等级。
代码长度是一个糟糕的标准=)出于多种原因,我建议您使用自定义映射函数(整数到字符或字符串)或带有switch / if
的类。
如果我们遵循 OOP 方法,我们可以定义一个类Grade
使用构造函数从整数Grade(int)
与方法toString()
或toChar
.最好从客户端代码中封装类中的等级转换逻辑 - 因为将来您可以添加不同的语言环境(例如我们在俄罗斯没有 A-C 等级系统,我们只有 1-5) - 并从配置加载语言环境,例如在XML
中。此外,您可以在某个容器中静态预定义范围并运行for-each来分配char表示形式,但是在时间和内存方面效率低下。
我认为为人类编写代码是更好的解决方案(除了性能或其他标准很重要的情况 - 但据我所知,事实并非如此)
相关文章:
- 显示基于用户输入的整数的字符
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 将超出范围的整数分配给有符号字符类型
- 碱基对映射 - 将 argv[i] 移动到整数或字符作为输入
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 输入验证以筛选出字符、字符串和一系列整数
- 字符和整数中 **(ptr+1) 的值差异
- 如何将整数向量值插入字符向量
- 字符到整数数组
- 为什么对无符号字符进行算术运算会将它们提升为有符号整数
- 不能将字符转换为整数吗?
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 为什么我们不能将使用异或运算找到的整数转换为字符?
- 有没有办法将字符类型转换为整数?
- 在c++中读取文件时,它如何自动将字符放入字符数组,将数字放入整数变量
- (C/C++)fscanf_s从txt文件以字符形式读取数组时缺少整数参数错误
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 将矢量的整数内容打印为字符串会导致分割错误
- 如何从文件的输入文本中消除字符/整数