当前位置: 首页 > news >正文

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十六进制有


🎉 恭喜你,已经掌握了:

✅ 字符数组遍历
✅ 字符大小比较
✅ 字符串题技巧
✅ 进制判断思维


http://www.cnnetsun.cn/news/2041579.html

相关文章:

  • 从性能限制到性能释放:Universal-x86-Tuning-Utility 硬件调优全攻略
  • R-CNN目标检测算法精读全解
  • Phi-4-Reasoning-Vision行业落地:用多模态推理替代传统CV+LLM串联方案
  • 神经网络与数学理论的深度结合及应用实践
  • 9 款任务管理工具对比:哪类更适合企业协作场景
  • 告别环境配置焦虑:用Docker Compose一键部署RuoYi-Vue前后端开发环境(含MySQL 5.7/Redis 6.2)
  • 碧蓝航线Alas自动化脚本:解放双手的终极懒人指南
  • 边缘断网场景下Docker容器自动降级运行的7种配置组合(含离线证书续签、本地镜像签名验证等军工级实践)
  • AWS CI流水线自动化安全补丁方案解析
  • NS-USBLoader完整指南:Switch玩家的全能文件管理解决方案
  • 文科生也能轻松入局AI行业?高薪岗位唾手可得!
  • 软件数据访问对象管理中的持久化层
  • 2026降AI工具实测:论文降AIGC率首选方案指南
  • 财务BP,财务,会计,到底有什么区别?一文帮你分清财务BP,财务,会计!
  • 不只是QTextCodec:盘点Qt处理中文乱码时那些容易被忽略的‘坑’(含文件读写与UI设计器)
  • 简单几步!VoxCPM-1.5-WEBUI实现文字转语音,支持在线试听
  • NVIDIA Jetson AGX Orin边缘AI开发套件深度解析与实战指南
  • 比迪丽AI绘画实战案例:用bdl触发词精准还原龙珠角色神韵
  • Three.js 工程向:GPU Overdraw 诊断与前端渲染优化
  • Rust async trait 的性能优化实践
  • nli-MiniLM2-L6-H768基础教程:从BERT到MiniLM2的NLI模型演进
  • WeDLM-7B-Base实际作品:技术博客续写、古诗新创、科幻短篇生成效果集
  • 【Docker网络隔离终极指南】:20年运维专家亲授5种生产级隔离配置方案,99%的团队都用错了
  • Oumuamua-7b-RP详细步骤:基于start.sh脚本的零基础Web UI启动教程
  • 如何查看物化视图DDL_DBMS_METADATA.GET_DDL提取完整的视图与日志语句
  • nli-MiniLM2-L6-H768效果展示:MiniLM vs RoBERTa-base零样本准确率对比
  • 从RPA到PlayWright:我用Java重写Boss直聘爬虫的完整心路与代码
  • FIFOAdvisor:FPGA数据流架构中的FIFO深度优化工具
  • 10分钟实现魔兽争霸3现代化改造:WarcraftHelper深度配置指南
  • 020、智能体框架初探:LangChain核心概念与链式调用