下列程序是分别判断输入的 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;看到题目先想字符串中的最大字符是什么,然后判断该字符是否小于等于各进制的上限字符。二进制上限是 '1',八进制是 '7',十进制是 '9',十六进制是 'F'。程序中已经找到了 max,所以只需要输出四个布尔值。
选项 B 和 C 中使用了数字 1、7、9、F,而不是字符 '1'、'7'、'9'、'F',这是类型错误。选项 D 使用了 >= 而不是 <=,逻辑错误。选项 A 是正确的。
本题考查 GESP 三级 C++ 大纲中"基本数据类型与运算"模块的字符比较,以及"算法基础"模块的进制判断。命题人放这道题是为了卡住考生对字符与数字比较的混淆,以及对进制上限的掌握。
看到题目先想字符串中的最大字符是什么,然后判断该字符是否小于等于各进制的上限字符。二进制上限是 '1',八进制是 '7',十进制是 '9',十六进制是 'F'。程序中已经找到了 max,所以只需要输出四个布尔值。