问答题
给定程序MODI1.C中函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
long fun(int x,int y,long *p)
{ int i;
long t=1;
/*************found*************/
for(i=1;i<y;i++)
t=t*x;
*p=t;
/*************found*************/
t=t/1000;
return t;
}
main()
{ long t,r;int x,y;
printf("/nInput x and y:");scanf("%ld%ld",&x,&y);
t=fun(x,y,&r);
printf("/n/nx=%d,y=%d,r=%ld,last=%ld/n/n",x,y,r,t);
}
【正确答案】
【答案解析】(1)for(i=1;i<=y;i++) (2)t=t%1000;
答案考生文件夹 [解析] 函数的功能是求整数x的y次方的低3位值。
(1)第一个标识下的“for(i=1;i<y;i++)”说明进行了y-1次方,而不是y次方,所以将“for(i=1;i<y;i++)”改为“for(i=1;i<=y;i++)”。
(2)题目中要求截取前面求得结果的低三位,因此,第二个标识下“t=t/1000;”应该改为“t=t%1000;”。
[考点] for循环结构、运算符。