作业帮 > 综合 > 作业

本人C语言初学者.题:取出一个无符号的十进制整数中的所有奇数数字,按原来的顺序组成一个新的数.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 11:28:00
本人C语言初学者.题:取出一个无符号的十进制整数中的所有奇数数字,按原来的顺序组成一个新的数.
#include
int main()
{
int x,t,p,m=0,y=0;
scanf("%d",&x);
while(x!=0)
{
t=x%10;
x=x/10;
if(t%2!=0)
m=m*10+t;
}
while(m!=0)
{
p=m%10;
m=m/10;
y=y*10+p;
}
printf("%d",y);
return 0;
}
我这个编程不知道麻烦不麻烦哈,不过随便打几个数都能按题目要求得出答案的,可是一旦输入的数的位数一多 比如十多位 结果就不对了 请问高手这是为什么吖.我的程序有错误吗.
因为十多位的时候,数据溢出了,你把读入的数存在int上,以目前一般的32位平台,int最大都只支持4294967296,更别说16位了,你输入的超过这个,int类型就存不下了.你这种题目应该用字符串读取,然后对每一位进行处理.
读取一个字符串,然后从第一位开始判断,是奇数就取出来放到另一个字符串,最后处理完了就直接把另一个字符串打印出来就行了.