2、给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中.高位仍在高位,低位仍在低位.

问题描述:

2、给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中.高位仍在高位,低位仍在低位.
例如,当s中的数为:7654321时,t中的数为:7531.
#include
//
sl = sl*100; /* sl=sl*10;
} }
main()
{long s,t;
printf("\nPlease enter s:"); scanf("%ld",&s);
fun(s,&t);
printf("The result is:%ld\n",t); }

解释如楼上所说.
不过你的代码错了,按照你的代码运行的结果只可能是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("%ld\n",total);

return 0;
}