查看: 672|回复: 0

PAT乙级真题1006. 换个格式输出整数 (15)(2016-4-26更新)

[复制链接]
  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

    发表于 2016-4-26 08:43:07 | 显示全部楼层 |阅读模式
    本帖最后由 fengyu_wollon 于 2016-5-8 01:00 编辑

    原题:
    让我们用字母B来表示“百”、字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。

    输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000)。
    输出格式:每个测试用例的输出占一行,用规定的格式输出n。
    输入样例1:
    234
    输出样例1:
    BBSSS1234
    输入样例2:
    23
    输出样例2:
    SS123

    我的理解:
    题意应该很清晰,一个B表示一百,一个S表示一十,个位用连续的数字表示
    那么首先应该找出个位,十位,百位各是多少
    然后按要求打印就行

    code:
    1. #include<stdio.h>
    2. int main()
    3. {
    4.         int n=0,i=0,j=0;
    5.         int a[3];
    6.         char b[3]={'0','S','B'};//这里为了打印的时候,内外层循环下标同步,从b[1]开始赋值
    7.         scanf("%d",&n);
    8.         while(n!=0)
    9.         {
    10.                 a[i]=n%10;//计算个,十,百位的数字,并按个位数,十位数,百位数的顺序保存
    11.                 n/=10;
    12.                 i++;
    13.         }
    14.         for(i=i-1;i>0;i--)//打印百位B,十位S
    15.         {
    16.                 for(j=0;j<a[i];j++)
    17.                         printf("%c",b[i]);
    18.         }
    19.         for(j=1;j<=a[0];j++)//打印个位
    20.                 printf("%d",j);
    21.         return 0;
    22. }
    复制代码

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|空中社区  

    GMT+8, 2017-11-21 04:49 , Processed in 0.125018 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表