为了账号安全,请及时绑定邮箱和手机立即绑定

求大神查错赐教!

求大神查错赐教!

C C++
路卡利欧 2016-10-17 16:47:50
//取出一个无符号的十进制整数中所有奇数数字,按原来的顺序组成一个新的数 # 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; } //为什么输入的数超过十位数输出的结果就不正确了,应该怎么解决??
查看完整描述

2 回答

已采纳
?
Yexiaomo

TA贡献152条经验 获得超157个赞

因为十多位的时候,数据溢出了......

unsigned int 数据类型最大范围是 0 ~4294 967 295 , 所以超过 十位以上就错了, 

不是你程序写错了, ...

改进的话, 需要写成 改为 数组 , 或者 字符串

----------------------------------分---割---线---------------------------------------------------

如果 你要是想看 代码, 在下面回复, 我再给你贴.

啦啦啦~~Imcainiao

查看完整回答
2 反对 回复 2016-10-17
  • 路卡利欧
    路卡利欧
    大神又见到你了23333 请把改进的代码贴给我看看吧,我还没学到数组所以不太懂qwq
  • Yexiaomo
    Yexiaomo
    #include<stdio.h> int main() { char c; while ((c=getchar())!='\n' && c != '-') { if(c>='0'&&c<='9'&&(c%2!=0)) printf("%c",c); } }
?
Yexiaomo

TA贡献152条经验 获得超157个赞

首先, 我不是大神, 呜呜~~~~~

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);		
	}
}

时间紧, 没写注释, 阿西吧~~   不会了再问

查看完整回答
反对 回复 2016-10-17
  • 2 回答
  • 0 关注
  • 1626 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信