C++实验问题:使用static_cast实现0-35整数转对应字符
C++实验代码修正方案
核心改动逻辑
- 去掉冗余的switch分支结构,直接通过ASCII码偏移计算对应输出字符,全程使用要求的
static_cast完成类型转换 - 数值≤9的场景:数字字符的ASCII码 = 字符'0'的ASCII码 + 输入数值,转换为char类型输出即可,满足1-9使用
static_cast的要求 - 数值≥10的场景:大写字母A的ASCII码是65,10对应A,所以目标字符ASCII码 = 字符'A'的ASCII码 + (输入数值 - 10),再用
static_cast转成char类型输出,符合题目提示要求
修正后可运行代码
#include <iostream> using namespace std; int main() { int num; cout << "Enter an integer between 0 and 35: "; cin >> num; cout << endl; if (num >= 0 && num <= 9) { // 用static_cast将计算后的ASCII值转为char类型输出 cout << static_cast<char>('0' + num); } else if (num >=10 && num <=35) { // 计算对应大写字母的ASCII值后转char cout << static_cast<char>('A' + (num - 10)); } else { // 可选:非法输入提示,无要求可直接删除该分支 cout << "Invalid input! Please enter a number between 0 and 35."; } return 0; }
验证说明
直接测试边界值即可确认符合要求:
- 输入0输出0、输入9输出9
- 输入10输出A、输入35输出Z
所有转换逻辑都使用了规定的static_cast运算符,满足实验要求。
内容的提问来源于stack exchange,提问作者SadStudent
相关产品推荐
相关产品推荐

