一个c语言的小问题,求高手解答
#include"stdio.h"voidmain(){intnum,the_unit,decade,hundred,thousand;printf("请输入不多于4位数...
#include"stdio.h"
void main()
{
int num,the_unit,decade,hundred,thousand;
printf("请输入不多于4位数的正整数=");
loop:scanf("%d",&num);
if(num>=9999)
{
printf("错误,请重新输入=");
goto loop;
}
else if((num/1000)!=0)
{
printf("这个数字是4位数\n");
thousand=num/1000;
hundred=num%1000/100;
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d,百位是%d,千位是%d\n",the_unit,decade,hundred,thousand);
printf("逆序输出是\n");
printf("%d%d%d%d",thousand,hundred,decade,the_unit);
}
else if((num/100)!=0)
{
printf("这个数字是3位数\n");
hundred=num%1000/100;
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d,百位是%d\n",the_unit,decade,hundred);
printf("逆序输出是\n");
printf("%d%d%d",hundred,decade,the_unit);
}
else if((num/10)!=0)
{
printf("这个数字是2位数\n");
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d\n",the_unit,decade);
printf("逆序输出是\n");
printf("%d%d",decade,the_unit);
}
else if(num/10!=0)
{
printf("这个数字是1位数\n");
the_unit=num%1000%100%10;
printf("个位是%d\n",the_unit);
printf("逆序输出是\n");
printf("%d",the_unit);
}
}
这道题的要求是给一个不多于4位数的正整数,(1)求出它是几位数,(2)分别输出每一位数字;(3)按逆序输出数字,程序已经调试好了,但是发现了一个问题,如果我随便输入一个很大的数字如图,就会出现如下的问题,请问这是什么情况啊,谢谢! 展开
void main()
{
int num,the_unit,decade,hundred,thousand;
printf("请输入不多于4位数的正整数=");
loop:scanf("%d",&num);
if(num>=9999)
{
printf("错误,请重新输入=");
goto loop;
}
else if((num/1000)!=0)
{
printf("这个数字是4位数\n");
thousand=num/1000;
hundred=num%1000/100;
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d,百位是%d,千位是%d\n",the_unit,decade,hundred,thousand);
printf("逆序输出是\n");
printf("%d%d%d%d",thousand,hundred,decade,the_unit);
}
else if((num/100)!=0)
{
printf("这个数字是3位数\n");
hundred=num%1000/100;
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d,百位是%d\n",the_unit,decade,hundred);
printf("逆序输出是\n");
printf("%d%d%d",hundred,decade,the_unit);
}
else if((num/10)!=0)
{
printf("这个数字是2位数\n");
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d\n",the_unit,decade);
printf("逆序输出是\n");
printf("%d%d",decade,the_unit);
}
else if(num/10!=0)
{
printf("这个数字是1位数\n");
the_unit=num%1000%100%10;
printf("个位是%d\n",the_unit);
printf("逆序输出是\n");
printf("%d",the_unit);
}
}
这道题的要求是给一个不多于4位数的正整数,(1)求出它是几位数,(2)分别输出每一位数字;(3)按逆序输出数字,程序已经调试好了,但是发现了一个问题,如果我随便输入一个很大的数字如图,就会出现如下的问题,请问这是什么情况啊,谢谢! 展开
展开全部
#include"stdio.h"
void main()
{
unsigned num,the_unit,decade,hundred,thousand;
printf("请输入不多于4位数的正整数=");
loop:scanf("%d",&num);
if(num>=9999)
{
printf("错误,请重新输入=");
goto loop;
}
else if((num/1000)!=0)
{
printf("这个数字是4位数\n");
thousand=num/1000;
hundred=num%1000/100;
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d,百位是%d,千位是%d\n",the_unit,decade,hundred,thousand);
printf("逆序输出是\n");
printf("%d%d%d%d",the_unit,decade,hundred,thousand);
}
else if((num/100)!=0)
{
printf("这个数字是3位数\n");
hundred=num%1000/100;
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d,百位是%d\n",the_unit,decade,hundred);
printf("逆序输出是\n");
printf("%d%d%d",the_unit,decade,hundred);
}
else if((num/10)!=0)
{
printf("这个数字是2位数\n");
decade=num%1000%100/10;
the_unit=num%1000%100%10;
printf("个位是%d,十位是%d\n",the_unit,decade);
printf("逆序输出是\n");
printf("%d%d",the_unit,decade);
}
else if(num/10!=0)
{
printf("这个数字是1位数\n");
the_unit=num%1000%100%10;
printf("个位是%d\n",the_unit);
printf("逆序输出是\n");
printf("%d",the_unit);
}
}
输入太大的数可能被读成负数,而负数是满足<=9999的。
建议把前面的变量定义成unsigned无符号数,这样就不会有负数了。
另外,你的代码里逆序输出输出循序反了,我改了一下。
追问
高手啊!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询