浙大PAT-1002
1002. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
尼玛,提交告诉我格式错误,原来题目要求最后不加空格。
#include <stdio.h> #include <string.h> #include <malloc.h> #define MAX_NUM 100 void print_decimal(char num) { switch(num) { 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; default: printf("fault"); break; } } int main(int argc,char **argv) { char nInput[MAX_NUM]; int nWidth = 0; int i = 0; int sum = 0; char strSum[MAX_NUM]; gets(nInput); while(nInput[i] != '\0') { sum += (nInput[i++] - '0'); } sprintf(strSum,"%d",sum); while(sum>0) { sum = sum/10; nWidth++; } for(i=0;i<nWidth-1;i++) { print_decimal(strSum[i]); printf(" "); } print_decimal(strSum[i]); return 0; }