GESP2023年9月认证C++三级( 第三部分编程题(2、进制转换))
🔢《进制判断》魔法学院大冒险!
欢迎来到数字魔法学院🏰✨
今天校长交给你一个重要任务:
来了一群神秘数字串!
你要判断它们分别可能属于哪种进制王国!
这道题会练到:
✅ 字符串 / 字符数组
✅ 遍历字符
✅ 判断条件
✅ 模拟思维
准备出发吧,小小程序员!🚀
🏰 一、讲故事
我们常见的数字国家有:
| 国家 | 使用的数字 |
|---|---|
| 二进制国 | 0~1 |
| 八进制国 | 0~7 |
| 十进制国 | 0~9 |
| 十六进制国 | 0~9 + A~F |
现在给你一些字符串,例如:
1011 15A6F 12345678 FF GG你要判断它们能不能住进这些国家!
🎯 二、规则解释
如果一个字符串里出现了某个国家不允许的字符,就不能属于那个进制。
🌟例如:
1011
只有 0 和 1
所以它可能是:
✅ 二进制
✅ 八进制
✅ 十进制
✅ 十六进制
输出:
1 1 1 1🌟例如:
15A6F
有字母 A 和 F
二进制 ❌
八进制 ❌
十进制 ❌
十六进制 ✅
输出:
0 0 0 1🧠 三、核心秘密:找最大字符!
这是这题最聪明的办法!✨
假设字符串是:
1234567里面最大的字符是:
7如果最大字符是'7':
≤1 ? ❌
≤7 ? ✅
≤9 ? ✅
≤F ? ✅
所以输出:
0 1 1 1🌟 为什么只看最大字符就够了?
因为如果最大的都合法,前面更小的字符肯定也合法!
像班里最高的小朋友能进门,其他更矮的当然也能进。😄
🏗 四、解题步骤
第一步:输入有几组数据
int n; cin >> n;第二步:每次读一个字符串
char str[11]; cin >> str;第三步:找最大字符
char mx = '0'; for(int i=0; str[i]!='\0'; i++) { if(str[i] > mx) mx = str[i]; }第四步:判断四种进制
mx <= '1' mx <= '7' mx <= '9' mx <= 'F'成立输出1,否则输出0。
💻 五、参考程序(字符数组版)
#include <iostream> using namespace std; int main() { int n; cin >> n; while(n--) { char str[11]; cin >> str; char mx = '0'; for(int i = 0; str[i] != '\0'; i++) { if(str[i] > mx) mx = str[i]; } cout << (mx <= '1') << " "; cout << (mx <= '7') << " "; cout << (mx <= '9') << " "; cout << (mx <= 'F') << endl; } return 0; }🌟 六、一步一步运行演示
输入:
2 15A6F 1011第一组:15A6F
字符:
1 5 A 6 F最大字符是:
F判断:
F ≤1 ❌
F ≤7 ❌
F ≤9 ❌
F ≤F ✅
输出:
0 0 0 1第二组:1011
最大字符:
1判断:
1 ≤1 ✅
1 ≤7 ✅
1 ≤9 ✅
1 ≤F ✅
输出:
1 1 1 1🧒 七、小学生能懂的字符比较秘诀
字符其实也有编号!
例如:
'0' < '1' < ... < '9' < 'A' < ... < 'F'所以:
'7' <= '9' // true 'A' <= 'F' // true这就是为什么字符可以直接比较大小!
⚠️ 八、新手容易犯错
❌ 错误1:拿字符串转数字
这题不需要真的算出数值!
只要看字符是否合法。
❌ 错误2:忘记 '\0'
字符数组结尾有结束标记:
str[i] != '\0'❌ 错误3:把字母写成小写
题目保证是大写字母,所以判断到'F'就行。
🌈 九、string写法
我们使用 string的写法:
#include <iostream> #include <string> using namespace std; int main() { int n; cin >> n; while(n--) { string s; cin >> s; char mx = '0'; for(char c : s) if(c > mx) mx = c; cout << (mx <= '1') << " " << (mx <= '7') << " " << (mx <= '9') << " " << (mx <= 'F') << endl; } }🏆 十、总结口诀
🎵 进制判断别发愁
🎵 找最大字最优秀
🎵 小于1是二进制
🎵 小于7八进制收
🎵 小于9十进制走
🎵 小于F十六进制有
🎉 恭喜你,已经掌握了:
✅ 字符数组遍历
✅ 字符大小比较
✅ 字符串题技巧
✅ 进制判断思维
