1002. 写出这个数 (20)PAT乙级真题
2017-10-31 17:19
288 查看
1002. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:
在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
这题的数据n<10的100次方,即最后各位的数字总和最大是3位数。我一开始把所有数据都当成3位数处理的,数字翻
转有点小问题,后来加了判断位数的片段才AC,还有要注意最后结果为0的特殊情况,下面是我的代码,有点长···
#include<stdio.h> #include<string.h> int main(void) { int i=0,s=0,b,c; char a[200]; gets(a); while(a[200]!='\0') { s+=a-48;i++; } c=0; if (s>99) //判断是否是3位数 { s=( ((s%10)*100) + (((s-(s/100)*100)/10)*10) + (s/100) ); c=2; } else { if(s>9) //判断是否是2位数,一位数就不用处理了 { s=((s/10)+(s%10)*10); c=1; } } i=0; if (s==0) printf("ling"); //判断0的特殊情况 do { b=s%10;s=s/10; if ((b==0)&&(i!=0)) printf("ling"); else if (b==1) printf("yi"); else if (b==2) printf("er"); else if (b==3) printf("san"); else if (b==4) printf("si"); else if (b==5) printf("wu"); else if (b==6) printf("liu"); else if (b==7) printf("qi"); else if (b==8) printf("ba"); else if (b==9) printf("jiu"); if (i<c) printf(" "); i++; }while(i<=c); putchar('\n'); return 0; }
相关文章推荐
- 【PAT乙级真题及训练集】1002. 写出这个数 (20)
- PAT乙级真题及训练集(21)--1002. 写出这个数 (20)
- 1002. 写出这个数 (20)-PAT乙级真题
- PAT乙级真题及训练集 PAT (Basic Level) Practise (中文)1002. 写出这个数
- PAT训练(乙级)—— 1002. 写出这个数 (20)
- PAT 乙级 1002. 写出这个数 (20) Java版
- PAT乙级 1002. 写出这个数 (20)
- PAT乙级1002. 写出这个数 (20)
- 【PAT】(乙级)1002. 写出这个数 (20)
- PAT乙级1002. 写出这个数 (20)
- 乙级 PAT 1002. 写出这个数(20)
- PAT乙级.1002. 写出这个数 (20)
- java_patest乙级真题1002. 写出这个数 (20)
- PAT 乙级 真题 1002. 写出这个数
- 浙江大学PAT乙级试题.1002. 写出这个数 (20)C语言
- PAT 乙级 1002. 写出这个数 (20) Java版
- PAT乙级1002写出这个数 (20)
- PAT乙级1002(C语言)- 写出这个数 (20)
- PAT乙级1002. 写出这个数 (20)
- pat乙级1002. 写出这个数 (20)