PAT乙级1006

本文提供了PAT Basic Level 1006题目的两种C++解法,第一种方法通过判断数字位数并使用字符串拼接实现,第二种方法则直接获取百位、十位和个位数字进行输出,简洁高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592

题解一

这道题其实很简单,获取用户输入后,判断数字的位数,根据位数的不同,再获取百位、十位、个位的数字,然后据其进行字符串拼接,最后输出。

啧,太久没有写C++代码了,下面代码里的numArr可以用string类型的,而且你看完题解二会觉得我是不是傻了。

// PAT BasicLevel 1006
// https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592

#include <iostream>
#include <string>
using namespace std;

int getbitnum(int num);

int main()
{
    // 获取用户输入的数字
    int num=0;
    cin >>num;

    // 获取数字位数
    int numOfBits=getbitnum(num);

    // 存储输出内容
    string str="";

    // 十个数字,C++的字符串不能直接加数字进行拼接
    char numArr[9] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};

    // 生成输出内容所用的中间变量
    switch (numOfBits)
    {
    case 3:{
        int bai = num / 100;
        for (int i = 0; i < bai; i++)
        {
            str += "B";
        }
        num %= 100;
    }
        
    case 2:{
        int shi = num / 10;
        for (int i = 0; i < shi; i++)
        {
            str += "S";
        }
        num %= 10;
    }
        
    case 1:
        for(int i=0;i<num;i++){
            str +=numArr[i];
        }
    }

    // 输出结果
    cout << str;
    return 0;
}

// 获取数字的位数
int getbitnum(int num)
{
    // 默认一位数
    int numOfBits=1;

    if(num>99){ // 三位数
        numOfBits=3;
    }else if(num>9){    //两位数
        numOfBits=2;
    }
    return numOfBits;
}

题解二

这是网上搜到的题解,比题解一好多了。我傻了我傻了。

// PAT BasicLevel 1006
// https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592

#include <iostream>
#include <string>
using namespace std;


int main()
{
    // 获取用户输入的数字
    int num=0;
    cin >>num;

    // 得到每位数字
    int bai = num / 100;
    int shi = num % 100 / 10;
    int ge = num % 10;
    
    // 输出结果
    for (int i = 0; i < bai; i++){
        cout << 'B';
    }
    
    for (int i = 0; i < shi; i++)
    {
        cout << 'S';
    }
    
    for(int i=1;i<=ge;i++){
        cout << i;
    }

    //system("pause"); 
    return 0;
}

作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!


转载于:https://www.cnblogs.com/chouxianyu/p/11296672.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值