PTA甲级问题 写出这个数 第二个测试点无法通过
Posted littlealice
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()) != ‘
‘){
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 }
通过啦~~
总结,有某个测试点过不去,肯定是代码某个细节有问题,要仔细查逻辑哦~
以上是关于PTA甲级问题 写出这个数 第二个测试点无法通过的主要内容,如果未能解决你的问题,请参考以下文章