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

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