題目描述:
讀入乙個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式:
每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10的100次方。
輸出格式:
在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後乙個拼音數字後沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
在寫這個之前寫一些函式的總結
strcpy的使用
盡量白話說明白
1,strcpy包含在標頭檔案string.h中,只要用到strcpy函式在開頭就必須引用標頭檔案include
2,strcpy(a,b)的意思是把陣列b放到a陣列中(不是陣列也行,a多半是陣列,b可以是乙個字串也可以是陣列)
3,strcpy核心意思是覆蓋
4,定義字陣列的時候,長度必須比字串大,比如定義abcd,那麼就是a[5](可以比5大,不能小),定義a bcd,那麼必須是a[6],可以比6大不能小,這個點是我犯的低階錯誤
5,覆蓋的時候會包括結束符,輸出結束符以空格的形式,會覆蓋掉乙個字元,如果結束符的位置沒有字元正好是空格,也不會多輸出乙個空格,依舊是乙個,結束符的空格覆蓋掉原先的空格
舉個栗子
#include
#include
intmain()
return0;
}
輸出結果是
結束符的位置覆蓋掉了d,如果是空格就是空格覆蓋空格,並不會多乙個空格哈
strlen的使用
1,strlen包含在string.h中,使用前必先寫標頭檔案
2,strlen算字串長度
3,當要計算乙個陣列s的長度時,strlen[s]就可以
#include
#include
intmain()
printf
("%c\n"
,s[5])
;printf
("%c"
,s[4])
;return0;
}
執行結果
gets和scanf
1,都可用於輸入字串,但在功能上有區別。gets可以接收空格;而scanf遇到空格、回車和tab鍵都會認為輸入結束,所有它不能接收空格。
舉個栗子
char string[15];
gets(string); /遇到回車認為輸入結束/
scanf("%s",string); /遇到空格認為輸入結束/
所以在輸入的字串中包含空格時,應該使用gets輸入。
2,語法不同
scanf(「格式控制字串」,變數位址列表);
gets(字元陣列名或指標);
3,接受字串時
scanf("%s",字元陣列名或指標);
gets(字元陣列名或指標)
4,兩者在接受字串時:
(1)不同點:
scanf不能接受空格、製表符tab、回車等;
而gets能夠接受空格、製表符tab和回車等;
(2)相同點:
字串接受結束後自動加』\0』。
現在回到這道題1002
強調幾個基礎的點
1,字串或串 (string)是由數字、字母、下劃線組成的一串字元,所以這裡輸入的數可以用strlen來計算有幾位,我是憨憨,還以為不能用
2,-'0』是將字元型數字轉為整型
3,根據我上面寫的gets和scanf的區別及其使用,以下**輸入部分由gets(n)換成scanf(「%s」,n)也是一樣的
滿分**
#include
#include
intmain()
while
(sum)
for(j=c-
1;j>
0;j--)}
if(j==0)
}return0;
}
最後想說
遇到沒學過的函式,就去查大佬的文章,乙個勁讀,檢驗自己懂沒懂只有乙個辦法,就是運用到自己**裡!
1002 寫出這個數
本題是pat乙級真題 思路 題目本來是大數的問題,但是由於只求各位之和,就可以邊輸入邊處理。訓練目的 字串的運用 讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行內輸出n的各位數...
1002寫出這個數
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行...
1002 寫出這個數
讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後乙個拼音數字後沒有空格。輸入樣例 123456789098765...