标签:
写出这个数
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
这道题首先要明白n的范围已经超过了普通的类型,所以肯定要利用字符数组来进行处理。
其次在求得和之后,输出有两种方法,如果是用sprintf较为简单,但另一种方法也应当掌握。即相当于知道结果的位数,然后除以10的n次方从而得到每一位的值。
#include <stdio.h> void outPut(int sum) { int k = 1; int ans; int t = sum; while (sum > 9) //判断和的位数 { k *= 10; sum /= 10; } /*之前不知道有sprintf这个函数,用这个会简便很多,就不用这样求每一位了 spsprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。 最常用的就是把整数打印到字符串中*/ while (k > 0) //分别计算每一位 { ans = t / k; t %= k; k /= 10; switch (ans) { case 0: printf ("ling"); break; case 1: printf ("yi"); break; case 2: printf ("er"); break; case 3: printf ("san"); break; case 4: printf ("si"); break; case 5: printf ("wu"); break; case 6: printf ("liu"); break; case 7: printf ("qi"); break; case 8: printf ("ba"); break; case 9: printf ("jiu"); break; } if (k > 0) printf (" "); } } int main () { char c[101] = {0}; gets (c); int i = 0,sum = 0; while (c[i] != ‘\0‘) { sum += c[i] - ‘0‘; i ++; } outPut (sum); // printf ("%d",sum); return 0; }
标签:
原文地址:http://www.cnblogs.com/annfly/p/5011406.html