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

admin2010-11-26  17

问题 下列给定程序中,函数fun ()的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为 6250
   请改正程序中的错误,使它能得出正确的结果。
    注意:不要改动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
           ("%1d%1d", &x, &y);
    t=fun (x,y, &r);
    printf("\n\nx=%d, y=%d,r=%1d, last=
            %1d\n\n ",x, y, r,t);
   }

选项

答案(1)错误:for:(i=1;i<y; i++) 正确:for(i=1;i<=y;i++) (2)错误:t=t/1000; 正确:t=t%1000;

解析 我们先用简单的思想理解一下该程序,如果当x=y=1时,程序的问题出在哪儿?很简单吧,所以for(i=1;i<y;i++)的循环条件应该是for (i=1;i++),另外,t=t/1000;中的错误是混淆了“/”和“%”的定义,对这样的细节问题务必注意。
转载请注明原文地址:https://jikaoti.com/ti/wBkiFFFM
0

相关试题推荐
最新回复(0)