读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
题解:注意数据的范围想到用字符串 字符-48 就是所对应的数字 最后注意输出格式 最后一位没有空格输出
#include<stdio.h>
#include <string.h>
int MAX= 100;
char str[1000];
int calculate(char chs[], int len){
int num = 0,i;
for(i=0;i<len;i++){
num += ((int)chs[i]) - 48;
}
return num;
}
void print(int x){
static int tmp;
static char pinyin[1000];
for(;x != 0;){
tmp = x%10;
x /= 10;
switch(tmp){
case 1: strcpy(pinyin, "yi ");break;
case 2: strcpy(pinyin, "er ");break;
case 3: strcpy(pinyin, "san ");break;
case 4: strcpy(pinyin, "si ");break;
case 5: strcpy(pinyin, "wu ");break;
case 6: strcpy(pinyin, "liu ");break;
case 7: strcpy(pinyin, "qi ");break;
case 8: strcpy(pinyin, "ba ");break;
case 9: strcpy(pinyin, "jiu ");break;
case 0: strcpy(pinyin, "ling ");break;
}
/*
strcat(pinyin, str);
strcpy(str, pinyin);
*/
strcat(pinyin,str);
strcpy(str,pinyin);
}
}
int main(){
char num[MAX];
int p;
char tmp;
for(p=0;p<MAX;){
scanf("%c", &tmp);
if(tmp != '\n'){
num[p++] = tmp;
} else
break;
}
print(calculate(num, p));
str[strlen(str) - 1] = '\0';
printf("%s", str);
}