C语言程序设计题不知道哪里错了求解大神

pta判定结果为个位数零结尾和9位数的时候格式错误但是devc运行后看不出哪里格式错误了代码如下#include<stdio.h>#include<string.h>in... pta判定结果为个位数 零结尾和9位数的时候格式错误 但是devc运行后看不出哪里格式错误了
代码如下
#include<stdio.h>
#include<string.h>
int main(void)
{char str[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char b[99][99];
int n,i,j=0,flag=0,gongju,count=0,k;
int a[99];
scanf("%d",&n);
gongju=n;
if(gongju<0)
{flag=1;
gongju=-gongju;}
for(i=0;gongju!=0;i++)
{gongju=gongju/10;
count++; } /*检测输入位数段*/
gongju=n;
if(flag==1)
gongju=-gongju;
k=count-1;
for(i=1;i<=count;i++)
{a[k]=gongju%10;
k--;
gongju=gongju/10; } /*存入数组段*/ if(flag==0) /*控制输出拼音段*/ {for(i=0;i<count;i++)
{strcpy(b[j],str[a[i]]);
j++;}
}
else if(flag==1)
{strcpy(b[0],"fu");
j++;
for(i=0;i<count;i++)
{strcpy(b[j],str[a[i]]);
j++;}
}
if(n==0)
{printf("ling");
return 0;}
printf("%s",b[0]);
for(i=1;i<=count;i++)
printf(" %s",b[i]);
return 0; }
展开
 我来答
瀚漠
2020-02-27 · 专注C语言发开,Linux系统相关
瀚漠
采纳数:309 获赞数:1286

向TA提问 私信TA
展开全部

输出格式中有个规定:行末没有最后的空格。

你这边的代码最后输出时有个问题:

printf("%s",b[0]);

for(i=1;i<=count;i++) 

printf(" %s",b[i]);

count是输入数据的位数,比如输入:123,count的值就等于3,这时候应该输出:b[0],b[1],b[2],你这里是输出:b[0],b[1],b[2],b[3]。当为负数时,输入:123,count的值等于3,但是前面有个“fu”,需要输出:b[0],b[1],b[2],b[3]。

所以实际输出位数应该是:正数=count,负数=count+1

改为如下即可:

printf("%s",b[0]);

if(flag==1) count++;

for(i=1;i<count;i++) 

printf(" %s",b[i]);

追问
厉害👍 谢谢大神
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式