讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裏保證n小於10100。
輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後一個拼音數字後沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
實現思路:
1.以字符串格式讀入數據,在將每個字符與字符‘0’相減得到字符對應的整數值,計算所有整數值的和。
2.將和的每一位用拼音打印出來,可以用取餘與除法得到和的每一位數字值。
錯誤記錄:
輸出時的和爲3位數時打印3個拼音,2位數時打印2個拼音,1位數時打印1個拼音。不能出現和爲6時打印“ling ling liu”,要打印成“liu”。前期的代碼在最高位爲0時將0打印出來了導致測試點2、3、4、5答案錯誤。
實現代碼:
#include<stdio.h>
void printNum(int n){
switch(n){
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;
case 0:
printf("ling");
break;
default:
//printf("null");
break;
}
}
int main(){
int i = 0,sum=0;
char num[101];
scanf("%s",num);
while(num[i]!='\0'){
sum=sum+(num[i]-'0');
i++;
}
//打印和
if(sum/100!=0){
printNum(sum/100);
printf(" ");
sum=sum%100;
printNum(sum/10);
printf(" ");
printNum(sum%10);
}
else{
sum=sum%100;
if(sum/10!=0){
printNum(sum/10);
printf(" ");
printNum(sum%10);
}
else printNum(sum%10);
}
return 0;
}