给定程序MODI1.C中函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得

admin2017-07-27  22

问题 给定程序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;”。
转载请注明原文地址:https://jikaoti.com/ti/UMi0FFFM
0

最新回复(0)