1002 寫出這個數
1002 寫出這個數 (20 分)
讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式:
每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10100。
輸出格式:
在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
這道題的意思是將輸入的數字分別加起來 然後把得到的值按照漢字讀音來輸出 輸出是要注意每個數字之間加個空格
所以思路為:
1)輸入資料,得到所輸入各位數字之和
2)運用sprintf函式將得到的數字轉換成字元
3)利用switch語句來將轉化後的拼音輸出
4)注意輸出空格 然而結尾的不需要空格
5)sum = sum + (a[i] - 48)中的48為 0的ASCII碼
所以程式碼如下:
#include<stdio.h> #include<string.h> int main(){ char a[105],s[10]; int i,n,sum = 0; gets(a); for(i = 0;a[i] != '\0';i++){ sum = sum +(a[i] - 48); } sprintf(s,"%d",sum); for(i = 0;s[i]!= '\0';i++){ switch(s[i]){ 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(s[i+1]!= '\0') printf(" "); } return 0; }