问答题
给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:7654321时,t中的数为:642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
/**********found**********/
void fun(10ng 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);
}
【正确答案】
【答案解析】(1)void fun(long s, long *t)
(2)while(s>0)
答案考生文件夹 [解析] 函数目的是取出长整型变量s中偶数位上的数。
(1)第一个标识下的形参t被定义为一个long型变量,而对应的主函数中的实参却是一个地址值。因此,t在函数定义中应该被定义为一个指针变量,即“void fun(long s, long t)”改为“void fun(long s, long *t)”。
(2)第二个标识下的while循环控制表达式“s<0”要求s小于0才进入循环。而s的值总是大于0,因此将“while(s<0)”改为“while(s>0)”。
[考点] while循环控制、运算符。