使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是将十进制正整数m转换成k(2≤k≤9)进制数,并按位输出。 例如,若输入8和2,则应输出1000(十进

admin2023-02-27  3

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是将十进制正整数m转换成k(2≤k≤9)进制数,并按位输出。
    例如,若输入8和2,则应输出1000(十进制数8转换成二进制表示应为1000)。
    请改正程序中的错误,使它能得出正确的结果。
    注意:部分源程序在文件modi1.c中,不要改动main()函数,不得增行或删行,也不得更改程序的结构!
    试题程序:
1 #include<stdio.h>
2 #include<conio.h>
3 /*********found*********/
4 void fun{int m,int k);
5 {int aa[20],i;
6  for(i=0;m;i++)
7  {
8 /*********found*********/
9    aa=m/k;
10    m/=k;
11  }
12  for(;i;i--)
13   /*********found*********/
14    printf("%d",aa);
15 }
16 main()
17 {
18  int b,n;
19  print:f("\nPlease enter a number and a base:\n");
20  scanf("%d%d",&n,&b);
21  fun(n,b);
22  printf("\n");
23 }

选项

答案(1)void fun(int m,int k) (2)aa[i]=m%k; (3)printf("%d",aa[i-1]);

解析 (1)函数定义的格式错误,不应带有";"。
  (2)将十进制正整数转换为任意进制的数与十进制正整数转换成二进制数的方法是一样的。从整数n译出它的k进制数值,需采用除以k取余的方法,即求n除以k的余数,得到它的k进制的个位数,接着将n除以k。在n不等于0的情况下循环,能顺序求出n的k进制的各个位上的数。
    (3)在for(i=0;m;i++)循环结束时,i已经多加了一个1,所以这里要减去1。  
转载请注明原文地址:https://kaotiyun.com/show/Bx0D777K
0

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