读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 1。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
/*
读入一个正整数N,计算各位数字之和,用汉语拼音输出和的每一位数字
其中n<10^(100),故使用字符串数组形式存储,其中每个元素为char类型,根据ASCII表,得到对应数字需要 - '0'
每个拼音数字之间有一个空格,最后一个拼音数字之后无空格 ,
这里的问题有两点,
其一是输出问题,结果的长度是不确定的,只能从低位开始存储
其二是空格插入问题,这里总跟随着一个判断,这里的处理方式很多,有的方法很巧妙,值得借鉴
*/
#include <stdio.h> #include <string.h> char table[][8]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu",32}; int main() { //输入正整数n char str[102]={0}; scanf("%s",str); //计算各位数字之和 int len=strlen(str); int i,sum=0; for ( i=0 ; i<len ; i++ ) { sum += str[i] - '0'; } //以指定格式输出结果 int res[100]={0}; int j; //这里不清楚sum的大小,故从sum低位开始从存储,再倒序输出 do { res[j++] = sum%10; sum /= 10; //按指定格式输出空格 if ( sum != 0 ) { res[j++] = 10; } } while(sum != 0) ; int k; for ( k=j-1 ; k>=0 ; k-- ) { printf("%s",table[res[k]]); } }