共回答了15个问题采纳率:100%
解释如楼上所说.
不过你的代码错了,按照你的代码运行的结果只可能是7050301,也就是说你没有从本质上把十位,千位和十万位上的数字取消,只是把他们换成了0.下面这个是我写的,你看下,最好运行一下.#include
#include
long main(void)
{
long s,total;
int i,val;
i=0;
total=0;
printf("Enter the number:");
scanf("%ld",&s);
while(s>0)
{
val=s%10; //求每个位数上的数值,
if(val%2!=0) /*判断,如果是奇数,依次将它们和10的递增幂数相乘,*
*比如,分离出的数值为1,则total=1*pow(10,0),第二 *
*次分离的是3,则total=3*pow(10,1),如此下去,直到 *
*while结束,并且每次将total 相加 */
{
total+=val*pow(10,i);
i++;
}
s=s/10;
}
printf("%ldn",total);
return 0;
}
1年前
5