PTA甲級問題 寫出這個數 第二個測試點無法通過


如題,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 }

 通過啦~~

 

 總結,有某個測試點過不去,肯定是代碼某個細節有問題,要仔細查邏輯哦~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM