猿问

求大神查错赐教!

//取出一个无符号的十进制整数中所有奇数数字,按原来的顺序组成一个新的数
# include<stdio.h>
int main()
{	
	unsigned int m=0,n,k;
	scanf("%d",&n);
	if(n<=0)
	printf("数据输入错误,请重新输入");
     for(k=n;k>0;k=k/10)
	{
		if((k%10)%2==1)
			m=(k%10)+m*10;
	 }
while (m!=0)
{
	printf("%d",m%10);
	m=m/10;
}
return 0;
}

//为什么输入的数超过十位数输出的结果就不正确了,应该怎么解决??


路卡利欧
浏览 1627回答 2
2回答

Yexiaomo

因为十多位的时候,数据溢出了......unsigned int 数据类型最大范围是 0 ~4294 967 295 , 所以超过 十位以上就错了, 不是你程序写错了, ...改进的话, 需要写成 改为 数组 , 或者 字符串----------------------------------分---割---线---------------------------------------------------如果 你要是想看 代码, 在下面回复, 我再给你贴.啦啦啦~~Imcainiao

Yexiaomo

首先, 我不是大神, 呜呜~~~~~Imcainiao---> I am cai niao  我是菜鸟----------------------------------分---割---线---------------------------------------------------你说没学过,数组...... 就写个 用字符 的吧, #include<stdio.h> int main() { char c; while ( (c=getchar())!='\n' && c != '-') { if(c>='0' && c<='9' && (c%2!=0)) printf("%c",c); } }时间紧, 没写注释, 阿西吧~~   不会了再问
随时随地看视频慕课网APP
我要回答