PAT (Basic Level) Practice (中文)1002

1002 写出这个数 (20 分)

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10?100??。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789 

输出样例:

yi san wu


#include<stdio.h>

#include<stdlib.h>

int main(void)

{

    int total=0,m,i=0,a[4];     //最大不会超过10000,数组a有4个元素

    char num=0;

    char *digit[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};

    

    while((num=getchar())!=‘\n‘)

        total=total+num-‘0‘;        //输入累加

    do

    {

        a[i]=total%10;              //取出最低位数放入数组a

        i++;

        total=total/10;

    }while(total);

    if(i!=1)                        //为符合输出要求

        {

            for(m=i;m>1;m--)

                printf("%s ",digit[a[m-1]]);

            printf("%s\n",digit[a[0]]);

        }

    else

        printf("%s\n",digit[a[0]]);

system("pause");

    return 0;

}

原文地址:https://www.cnblogs.com/cqce/p/10082301.html

时间: 2024-08-30 10:39:03

PAT (Basic Level) Practice (中文)1002的相关文章

PAT (Basic Level) Practice (中文) 1002 写出这个数

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 1 #include<stdio.h> 2 int main(){ 3 char c; 4 int sumt=0,t[10],count,i; 5 scanf("%c",&c); 6 while(c!='\0'&&c!='\n'){ 7 sumt += (c-'0'); 8 scanf("%c",&c); 9 } 10 count = 0; 11 wh

PAT (Basic Level) Practice (中文)1041 考试座位号 (15 分)

每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座.但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码. 输入格式: 输入第一行给出一个正整数 N(≤),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号.其中准考证号由 16 位数字组成,座位从 1 到 N 编号.输入

PAT (Basic Level) Practice (中文)1023 组个最小数 (20 分) (排序)

给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558. 现给定数字,请编写程序输出能够组成的最小的数. 输入格式: 输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0.数字 1.……数字 9 的个数.整数间用一个空格分隔.10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字. 输出格式: 在一行中输出能够组

PAT (Basic Level) Practice (中文)1047 编程团体赛 (20 分)

编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: 输入第一行给出一个正整数 N(≤),即所有参赛队员总数.随后 N 行,每行给出一位队员的成绩,格式为:队伍编号-队员编号 成绩,其中队伍编号为 1 到 1000 的正整数,队员编号为 1 到 10 的正整数,成绩为 0 到 100 的整数. 输出格式: 在一行中输出冠军队的编号和总成绩,其间以一个空格分隔.注意:题目保

PAT (Basic Level) Practice (中文)1070 结绳 (25 分) (优先队列)

给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度就会减半. 给定 N 段绳子的长度,你需要找出它们能串成的绳子的最大长度. 输入格式: 每个输入包含 1 个测试用例.每个测试用例第 1 行给出正整数 N (2):第 2 行给出 N 个正整数,即原始绳段的长度,数字间以空格分隔.所有整数都不超过1. 输出格式: 在一行中输出能够串成的绳子的最大长度

PAT (Basic Level) Practice (中文)1046 划拳 (15 分)

划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒.两人同赢或两人同输则继续下一轮,直到唯一的赢家出现. 下面给出甲.乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒. 输入格式: 输入第一行先给出一个正整数 N(≤),随后 N 行,每行给出一轮划拳的记录,格式为: 甲喊 甲划 乙喊 乙划 其中喊是喊出的数字,划是划出的数字,均为不超过 100 的正整数(两只手一起

PAT (Basic Level) Practice (中文)1043 输出PATest (20 分)

给定一个长度不超过 1 的.仅由英文字母构成的字符串.请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出. 输入格式: 输入在一行中给出一个长度不超过 1 的.仅由英文字母构成的非空字符串. 输出格式: 在一行中按题目要求输出排序后的字符串.题目保证输出非空. 输入样例: redlesPayBestPATTopTeePHPereat

PAT (Basic Level) Practice (中文)1011 A+B 和 C

1 #include<cstdio> 2 using namespace std; 3 int t; 4 int main(){ 5 long long int a,b,c; 6 scanf("%d",&t); 7 for(int i=1;i<=t;i++){ 8 scanf("%lld %lld %lld",&a,&b,&c); 9 if((a+b)>c) printf("Case #%d: tru

PAT (Basic Level) Practice (中文) 1012 数字分类

1 #include<cstdio> 2 using namespace std; 3 int num[5],sumn[5],n; 4 void init(); 5 void read(); 6 void deal(); 7 int main(){ 8 init(); 9 read(); 10 deal(); 11 return 0; 12 } 13 void init(){ 14 for(int i=0;i<=4;i++){ 15 num[i] = 0; 16 sumn[i] = 0;