CCF-GESP计算机学会等级考试2023年9月三级C++T2进制判断

试题名称 :进制判断
时间限制 1.0 s
内存限制 128.0 MB
3.2.1
问题描述
N进制数指的是逢 N进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进 制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A F 表示十至十 五)。
现在有N 个数,请你分别判断他们是否可能是二进制、八进制、十进制、十六进制。例如, 15A6F 就只可能是十 六进制,而 1011 则是四种进制皆有可能。
3.2.2
输入描述
输入的第一行为一个十进制表示的整数 N。接下来N 行,每行一个字符串,表示需要判断的数。保证所有字符串均 由数字和大写字母组成,且不以 0 开头。保证不会出现空行。
保证1<=N<=1000 ,保证所有字符串长度不超过 10。
3.2.3
输出描述
输出 N行,每行 4个数,用空格隔开,分别表示给定的字符串是否可能表示一个二进制数、八进制数、十进制数、 十六进制数。使用 1 表示可能,使用 0 表示不可能。
例如,对于只可能是十六进制数的 15A6F ,就需要输出 0 0 0 1 ;而对于四者皆有可能的 1011 ,则需要输出 1 1 1 1
3.2.4
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任 何提示信息。
3.2.5
样例输入 1
2
15A6F
1011
3.2.6
样例输出 1

0 0 0 1

1 1 1 1
3.2.7
样例输入 2
4
1234567
12345678
FF
GG
3.2.8
样例输出 2
0 1 1 1
0 0 1 1
0 0 0 1
0 0 0 0
解析:找出每个字符串中最大的字符,根据其大小判断可能是几进制数,详见代码:
#include <iostream>
using namespace std;
int main() {
    int n = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {
        string s;
        cin >> s;
        char maxc = '0';
        for (int i = 0; i<s.length(); i++)
            if (s[i] > maxc)
                maxc = s[i];
        if (maxc>'F'){
            cout<<"0 0 0 0"<<endl;
        }else if(maxc>'9'){
            cout<<"0 0 0 1"<<endl;
        }else if (maxc>'7'){
            cout<<"0 0 1 1"<<endl;
        }else if (maxc>'1'){
            cout<<"0 1 1 1"<<endl;
        }else{
            cout<<"1 1 1 1"<<endl;
        }
    }
    return 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];
        cout << (max <= '1') << " " << (max <= '7') << " " << (max <= '9') << " " <<
             (max <= 'F') << endl;
    }
    return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长春高老师编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值