填空题 下列给定程序中,函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动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;
}
void 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=1时,程序的问题就很简单了,所以for语句的循环条件应该是for(i=1;i<=y;i++)。另外,t=t/1000;中的错误是混淆了"/"和"%"的定义,这样的细节问题曾多次出现,请考生务必引起注意。