//取出一个无符号的十进制整数中所有奇数数字,按原来的顺序组成一个新的数
# 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
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); } }
时间紧, 没写注释, 阿西吧~~ 不会了再问
- 2 回答
- 0 关注
- 1626 浏览
添加回答
举报
0/150
提交
取消