问答题 给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。 例如,当s中的数为:7654321时,t中的数为:7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include /************found************/ void fun (long s, long t) { long sl=10; *t = s % 10; while (s > 0) { s = s/100; *t = s%10 * s1 + *t; /************ found************/ sl = sl*100; } } main () { long s, t; printf("/nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld/n",t); }
【正确答案】正确答案:(1)void fun (long s, long *t) (2)s1=s1*10;
【答案解析】解析:(1)根据“*t=s%10”判断,t应该是个指针变量,所以“void fun(long s,long t)”语句中的t只需改为“void fun(long s,long *t)”。 (2)分析函数内的循环过程可知s1的用途是每次将*t扩大,记录每次得到的奇数位的数字的权值,s1的权值每次增加1位,因此,第二个标识下应该是“s1=s1*10;”。