c语言数据逆向输出~~

来源:百度知道 编辑:UC知道 时间:2024/05/15 08:23:21
改错题
下列给定程序中函数fun()的功能是:将长整型数中每一位上为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如当s中的数为25846513时,t中的数为6482。
请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio.h>
#include <conio.h>
void fun(long s,long *t)
{
int d;
long s1=1,i=1;
*t=0;
while(s/i>0)
i=i*10;
i=i/10;
while(s>0)
{
d=s/i;
/**********************found***********************/
if(d%2!=0)
{
/**********************found***********************/
t=d*s1+t;
s1*=10;
}
s=s%i;
i=i/10;
}
}
main()
{
long s, t;
clrscr();
printf("\nPlease enter s: ");
scanf("%ld",&s);
fun(s,&t);
printf("The result is :%ld\n",t);
}
解释一下这个被调用函数是什么意思啊??

1.fun函数的思路太乱,把简单问题复杂话了;
2.你想在fun中改变t的值,并试图将t作为结果输出。你写的fun函数是实现不了的,在fun函数中t是一个局部变量,fun函数调用结束,t也就释放了。主函数中t的值并没有改变(a.将t设为全局变量;b。fun函数只用一个参数,将t作为函数返回值;c.采用引用;);
3.不要改动main函数,不得增行或删行,也不得更改程序的结构。这一点或许使你错过一些更好的算法。