填空题 给定程序MODI1.C中函数fun的功能是从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下。
#include<stdio.h>
/**************found************/
void fun (long s,long t)
{long s1=10;
s/=10;
*t=s%10;
/***************found***********/
while(s<0)
{ s=s/100;
*t=s%10*s1+*t;
s1=s1*10;
}
}
main()
{ long s,t;
printf("/nPlease enter s:");scanf("%ld",&s);
fun(s,&t);
printf("The result is:%ld/n",t);
}
【正确答案】
【答案解析】void fun(long s,long*t)
while(s>0) [解析] 函数的形参类型应与实参类型相同,主函数中函数fun()的调用方式说明其参数应为指针类型,所以形参t应定义为long*t。
while循环的功能是每循环一次就从s中的数上取出一位进行运算,直到取完为止,所以循环条件为s>0。