GESP C++ 真题 · 逐题精解
首页C++三级真题 › 2026年6月 › 第15题

GESP 2026年6月 C++三级 单选题 第15题

C++三级单选题2026年6月第15题

所属知识点:高精度与数论 难度要求:掌握 考频:—

现在有一个数,请分别判断它是否可能是二进制、八进制、十进制、十六进制。例如 6AFF 只可能是十六进制,而 1011 则四种进制皆有可能。输入 N(1 ≤ N ≤ 1000)个字符串(长度不超过 10),每行输出 4 个数(空格分隔),分别表示能否表示二、八、十、十六进制数,1 表示可能、0 表示不可能。下面程序横线处可满足要求的是( )。
#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];
        ___________________________   // L1
    }
    return 0;
}

正确答案:B

题目解析
先求出字符串中最大的字符 max,某进制可行当且仅当所有字符都不超过该进制的最大数字,即 max ≤ 对应上界:二进制 ≤ '1'、八进制 ≤ '7'、十进制 ≤ '9'、十六进制 ≤ 'F'。所以用 <= 比较,选 B。C 误用赋值 =;D 用严格 < 会把恰好等于上界的情况判错(如 1011 的 '1')。💡 「全部满足」可转化为「最大值满足」。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习