编译没有错。组建也没有错,为啥运行出现runtime error的错误

2024-12-20 21:54:57
推荐回答(2个)
回答1:

#include
#include
void main ()
{
int shuzhi,diyiwei,dierwei,disanwei,disiwei,diwuwei,daoshu;
printf("输入一个不多于5位的正整数:");
scanf("%d",&shuzhi);
if(shuzhi>=99999||shuzhi<=0)
printf("请正确输入数字");
else
{ //这里有一个大括号,将下面的情况都包括。
if (shuzhi>=0 && shuzhi<=9) printf("为一位数\n,每位数字(从左到右)=%d\n,逆输出个位数字=%d\n",shuzhi,shuzhi);

if (shuzhi>=10 && shuzhi<=99)
{ diyiwei=(shuzhi%10);
dierwei=(shuzhi-diyiwei)/10;
daoshu=diyiwei*10+dierwei;
printf("为二位数\n,每位数字(从左到右)=%d%d\n,逆输出各位数字=%d\n",dierwei,diyiwei,daoshu);
}
if(shuzhi>=100 && shuzhi<=999)
{ diyiwei=(shuzhi%10);
dierwei=((shuzhi%100)-diyiwei)/10;
disanwei=(shuzhi-diyiwei-10*dierwei)/100;
daoshu=diyiwei*100+dierwei*10+disanwei;
printf("为三位数\n,每位数字(从左到右)=%d,%d,%d\n,逆输出各位数字=%d\n",disanwei,dierwei,diyiwei,daoshu);
}

if (shuzhi>=1000 && shuzhi<=9999)
{ diyiwei=(shuzhi%10);
dierwei=((shuzhi%100)-diyiwei)/10;
disanwei=(((shuzhi%1000))-diyiwei-10*dierwei)/100;
disiwei=(shuzhi-diyiwei-10*dierwei-100*disanwei)/1000;
daoshu=diyiwei*1000+dierwei*100+disanwei*10+disiwei;
printf("为三位数\n,每位数字(从左到右)=%d,%d,%d,%d\n,逆输出各位数字=%d\n",disiwei,disanwei,dierwei,diyiwei,daoshu);
}
if (shuzhi>=10000 && shuzhi<=99999)
{ diyiwei=(shuzhi%10);
dierwei=((shuzhi%100)-diyiwei)/10;
disanwei=(((shuzhi%1000))-diyiwei-10*dierwei)/100;
disiwei=(((shuzhi%10000))-diyiwei-10*dierwei-100*disanwei)/1000;
diwuwei=(shuzhi-1000*disiwei-100*disanwei-10*dierwei-diyiwei)/10000;
daoshu=diyiwei*10000+dierwei*1000+disanwei*100+disiwei*10+diwuwei;
printf("为三位数\n,每位数字(从左到右)=%d,%d,%d,%d,%d\n,逆输出各位数字=%d\n",diwuwei,disiwei,disanwei,dierwei,diyiwei,daoshu);
}
}
}
//错误1:int对应%d。float对应%f。
//错误2:||需要改为&& 是左右两个条件都需要满足。
//错误3:else后面加上大括号,后面的都属于else输入正确的情况。

回答2:

1:你定义的变量为整形,输出用%d
2:||改成&&