1. 程式人生 > >1002 寫出這個數

1002 寫出這個數

1002 寫出這個數 (20 分)

讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。

輸入格式:

每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10​100​​。

輸出格式:

在一行內輸出 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; }