如題,PTA甲級問題 寫出這個數 第二個測試點無法通過,沒有報錯信息
提交結果如下:
題目 1002 寫出這個數 (20)(20 分)
作者: CHEN, Yue
單位: PAT聯盟
時間限制: 400 ms
內存限制: 64 MB
代碼長度限制: 16 KB
讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這里保證n小於10^100^。
輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最后一個拼音數字后沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
我的代碼如下:
1 #include<stdio.h>
2 #include<string.h> 3 /*輸入n<10^100,則nmax=999…^9,100個9。則輸出s<=9*100=900*/ 4 5 const char *ntoc[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; 6 7 int main(){ 8 char inputString[100]; 9 int s,i; 10 s=i=0; 11 12 if(scanf("%s",inputString)==1){ 13 for(int i=0;i<strlen(inputString);i++){ 14 s+=(int)inputString[i]-48; 15 } 16 //printf("%d:",s); 17 //接下來對結果進行拼音轉換 18 //結果肯定是1至3位 19 if(s/100!=0){//百位數不為零,s是三位數,輸出百位 20 printf("%s",ntoc[s/100]); 21 s=s%100; 22 } 23 //十位數不為零 24 if(s/10!=0){ 25 printf("%s",ntoc[s/10]); 26 s=s%10; 27 } 28 //個位數 29 printf("%s",ntoc[s/1]);//ntoc(n/1); 30 } 31 return 0; 32 }
hhhh 知道了,是 三位數結果X0X,丟失十位
18 //結果肯定是1至3位 19 if(s/100!=0){//百位數不為零,s是三位數,輸出百位 20 printf("%s",ntoc[s/100]); 21 s=s%100; 22 } 23 //十位數不為零 24 if(s/10!=0){ 25 printf("%s",ntoc[s/10]); 26 s=s%10; 27 }
1 #include<stdio.h>
2 #include<string.h> 3 //輸入 n<10^100,則 n 最多有99位,則輸出 s <= 9*99 = 891 4 5 const char *ntoc[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; 6 7 int main(){ 8 char c; 9 int s=0; 10 11 12 while((c = getchar()) != '\n'){ 13 s += c - '0'; 14 } 15 //printf("%d:",s); 16 //接下來對結果進行拼音轉換 17 //結果肯定是1至3位 18 if(s/100!=0){//百位數不為零,s 是三位數,輸出百位和十位 19 printf("%s ",ntoc[s/100]); 20 s=s%100; 21 printf("%s ",ntoc[s/10]); 22 s=s%10; 23 } 24 else if(s/10!=0){//百位數為零,十位數不為零,s 是兩位數,輸出十位 25 printf("%s ",ntoc[s/10]); 26 s=s%10; 27 } 28 //輸出個位數 29 printf("%s",ntoc[s/1]);//ntoc(n/1); 30 return 0; 31 }
通過啦~~
總結,有某個測試點過不去,肯定是代碼某個細節有問題,要仔細查邏輯哦~