讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式: 每個測試輸入包含1個測試用例,即給出自然數n的值。這里保證n小于10 100 。
輸出格式: 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最后一個拼音數字后沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
?
?
?
1 #include <stdio.h> 2 #include < string .h> 3 #define N 1000 4 5 void read( int sum); // 讀出函數聲明 6 7 int main() 8 { 9 char str[N]; // 要輸入一個小于1000位的數字,顯然不能用int,在這里定義一個str字符數組接收輸入的數字 10 gets(str); // 使用gets輸入這個全是數字的字符串 11 int len; // len表示str字符串的長度(也就是數字的個數) 12 len = strlen(str); // 使用strlen函數可以直接測出len的大小 13 int i, sum = 0 ; // sum為各位數字的和 14 for (i = 0 ;i < len;i++) { // 從第一個數字開始遍歷到最后一個數字 15 sum += str[i] - ' 0 ' ; // 因為str為字符數組,所以str【i】-‘0’就等于str【i】數字的大小 16 } 17 18 read(sum); // 讀出函數 19 20 return 0 ; 21 } 22 23 void read( int sum) // 讀出函數 24 { 25 int i; 26 // 因為下面要算sum的每位數的大小,mask為10的(sum的位數(幾位數)次方減一 ) 27 // 如:sum為三位數,mask為10,sum/mask就等于sum的首位 ,現初始為一 28 int mask = 1 ; 29 int t = sum; 30 while (t > 9 ) { // t循環了sum的位數減一遍 31 t /= 10 ; 32 mask *= 10 ; 33 } 34 35 // 定義一個指針數組,數組中的每一個元素都是指針 36 char *c[ 10 ] = { " ling " , " yi " , " er " , " san " , " si " , " wu " , " liu " , " qi " , " ba " , " jiu " }; 37 // 循環sum的位數次,并輸出每位 38 do { 39 i = sum / mask; 40 printf( " %s " ,c[i]); 41 if (mask > 9 ) { 42 printf( " " ); 43 } 44 sum %= mask; 45 mask /= 10 ; 46 } while (mask > 0 ); 47 }
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
