给定程序MODl1.C中函数fun的功能:将一个十进制整数n转换成r(二~十六)进制形式。 示例如下。 输入125 16,则输出:7D 输入9 2,则输出:1001 请改正程序中的错误,使它能得出正确的结果。

admin2022-10-25  42

问题 给定程序MODl1.C中函数fun的功能:将一个十进制整数n转换成r(二~十六)进制形式。
     示例如下。
     输入125 16,则输出:7D
     输入9 2,则输出:1001
     请改正程序中的错误,使它能得出正确的结果。
     注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
     #include<stdio.h>
     void fun(int num,int r)
     {int i=0,a[32];
       char b[16]={’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’};
     do
     {
       a=num%r;
     /************found************/
       num%=r;
       i++:
     /************found************/
     }while(num==0);
     /************found************/
     for(i;i>0;--i)
       printf(”%c”,b[a]);
     }
     int main()
     {  int num,r;
     printf(”\n请输入整数和进制:”);
     scanf(”%d%d”,&num,&r);
     fun(num,r);
     printf(”\n”);
     return 0;

选项

答案(1)num/=r;或者num=num/r; (2)while(num>0);或者while(num!=0); (3)for(﹣﹣i;i>=0;﹣﹣i)或者for(i﹣﹣;i>=0;﹣﹣i)

解析 将十进制整数转换为r进制数可以采用基数除法,即除基数取余法,余数反序排列。
     (1)数组a中存放变量num除以r的余数。nun等于变量num除以r的商。此处将“num%=r;”修改为“num/=r;”或者“num=num/r;”。
     (2)当变量num的值为0时循环退出。正常进行循环的条件为nun不等于0,或者num>0。此处将“while(num==0);”修改为“while(num>0);”或者“while(num!=0);”。
     (3)将得到的余数逆序存放,此时的i为余数的个数,此处需要i减1后,作为循环变量遍历数组a,循环条件为i>=0。此处将“for(i;i>0;﹣﹣i)”修改为“for(﹣﹣i;i>=0;﹣﹣i)”或“for(i﹣﹣;i>=0;﹣﹣i)”。
转载请注明原文地址:https://jikaoti.com/ti/zGd0FFFM
0

最新回复(0)