给定程序MODI1.C中函数fun的功能是:将十进制正整数m转换成k(2≤k≤9)进制数,并按高位到低位顺序输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正fun函数中的错误,使它能得出正确的

admin2017-02-27  29

问题 给定程序MODI1.C中函数fun的功能是:将十进制正整数m转换成k(2≤k≤9)进制数,并按高位到低位顺序输出。
    例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
    请改正fun函数中的错误,使它能得出正确的结果。
    注意:不要改动maln函数。不得增行或删行,也不得更改程序的结构!
#include
#include   
void fun(int m,int k)
  {
   int  aa [20] , i;
for(i=0;m;i++)
{
/*********found**********/   
      aa   =  m/k;
   m /= k;
       }
  for(; i; i——)
/*********found**********/   
     printf ("%d", aa );
}
main ( )
{
  int b,n;
    printf ("\nPlease enter a number
and a base:\n");
      scanf ( " %d  %d",  &n,  &b) ;
fun (n, b) ;
printf ("\n") ;
}

选项

答案(1) aa [i] =m% k; (2) printf(”% d”, aa [i—1]);

解析 函数的功能是将十进制正整数m转换成k(2≤k≤9)进制数。
(1)第二个标识下的“aa=m/k,”是进制的转换,应该是取余,所以第二个标识下“aa=m/k,”应该改为“aa=n%k:”。
(2)数制转换处理过程中所得的结果,和实际要输出的结果顺序是相反的,所以必须对存放余数的数组反向输出。原题中“printf("%d",aa);”的下标有误。因为下标i的起始值为0,故反向输出时应该从i—1开始,因此改为“printf("%d",aa[i—1]);”。
转载请注明原文地址:https://kaotiyun.com/show/QgID777K
0

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