问答题
给定程序MODI1.C中函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 long fun(int x,int y,long *p)3 { int i;4 long t=1;5 /**********found**********/6 for(i=1 ; i<y; i++)7 t=t* x;8 *p=t;9 /**********found**********/10 t=t/1000;11 return t;12 }13 main()14 { long t,r; int x,y;15 printf(''\nTnput x and y: '');scanf(''%1d%1d'',&x,&y);16 t=fun(x,y,&r);17 printf(''\n\nx=%d,y=%d,r=%1d,1ast=%1d\n\n'',x,y,r,t);18 }
【正确答案】正确答案:(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;”。