GESP 三级 · GESP202609 C++ 三级 第 9 题

选择题 · 答案 A

← 整套速查表 GESP 三级 全部真题

题目

下列程序是分别判断输入的 N 个数是否可能是二进制、八进制、十进制、十六进制,横线处应该填入的是 (  )

#include <iostream>
using namespace std;
int main() {
int n = 0;
cin >> n;
for (int i = 0; i < n; i++) {
char str[11];
cin >> str;
char max = '0';
for (int i = 0; str[i] != '\0'; i++)
if (str[i] > max)
max = str[i];
_____________________________
}
return 0;
}
'F') << endl;
endl;
endl;
endl;
答案:A

解题思维

看到题目先想字符串中的最大字符是什么,然后判断该字符是否小于等于各进制的上限字符。二进制上限是 '1',八进制是 '7',十进制是 '9',十六进制是 'F'。程序中已经找到了 max,所以只需要输出四个布尔值。

常见错误

选项 B 和 C 中使用了数字 1、7、9、F,而不是字符 '1'、'7'、'9'、'F',这是类型错误。选项 D 使用了 >= 而不是 <=,逻辑错误。选项 A 是正确的。

详细解析(节选)

1. 考纲定位

本题考查 GESP 三级 C++ 大纲中"基本数据类型与运算"模块的字符比较,以及"算法基础"模块的进制判断。命题人放这道题是为了卡住考生对字符与数字比较的混淆,以及对进制上限的掌握。

2. 解题思维

看到题目先想字符串中的最大字符是什么,然后判断该字符是否小于等于各进制的上限字符。二进制上限是 '1',八进制是 '7',十进制是 '9',十六进制是 'F'。程序中已经找到了 max,所以只需要输出四个布尔值。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断