1002. 写出这个数 (20) C语言
2018-01-19 23:26
260 查看
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
主要考察hash和‘拆数’吧,将0-9对应到yi-jiu,然后计算和,将和各位拆开(经典的对10取余),最后一一对应即可。
此题是从高位到地位依次读数,或者递归,或者栈(临时数组),这里采用递归,也会将栈的注释到里面。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
主要考察hash和‘拆数’吧,将0-9对应到yi-jiu,然后计算和,将和各位拆开(经典的对10取余),最后一一对应即可。
此题是从高位到地位依次读数,或者递归,或者栈(临时数组),这里采用递归,也会将栈的注释到里面。
#include <stdio.h> /*recursive*/ void read(int d,char **name) { if(d>0) { /*first read higher digits, then lower*/ read(d/10,name); if(d/10==0) { /*highest digit*/ printf("%s",name[d%10]); } else { printf(" %s",name[d%10]); } } } int main() { int d; char *num[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; char c; d=0; while((c=getchar())!='\n') { /*scan the number string*/ d+=(c-'0'); } read(d,num); return 0; } /*non-recursive*/ // int main() // { // int d,digits[100];/*maximum number of digits is 100*/ // int i; // char *num[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; // char c; // d=0; // while((c=getchar())!='\n') // { // /*scan the number string*/ // d+=(c-'0'); // } // i=-1; // while(d>0) // { // /*put digits in order*/ // digits[++i]=d%10; // d=d/10; // } // while(i>0) // { // printf("%s ",num[digits[i--]]); // } // printf("%s",num[digits[i]]); // return 0; // }
相关文章推荐
- 1002. 写出这个数 (20)——C语言
- 浙江大学PAT乙级试题.1002. 写出这个数 (20)C语言
- PAT Basic 1002. 写出这个数 (20)(C语言实现)
- PAT乙级1002(C语言)- 写出这个数 (20)
- PAT (Basic Level) Practise (中文)1002. 写出这个数 (20) C语言
- PAT --- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)PAT乙级真题
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)--PAT乙级
- PAT 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- PAT(Basic Level) 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)——做题纪录
- 1002. 写出这个数 (20)
- PAT Basic Level 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- PAT乙级—1002. 写出这个数 (20)-native
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)