使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数DecToBin(char*des,int n)的功能是将十进制数据n转换成二进制数据,并将转换结果存放在des中。 如:120的二进制数据为11

admin2021-09-05  32

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数DecToBin(char*des,int n)的功能是将十进制数据n转换成二进制数据,并将转换结果存放在des中。
    如:120的二进制数据为1111000
    例:
    DecToBin(char*des,120);
    cOut<    输出为:1111000
    注意:不能修改程序的其他部分,只能补充DecToBin(char*des,int n)函数。
    1  #include
    2  #define MAXLEN 1024
    3  void DecToBin(char*des,int n)
    4  {
    5
    6  }
    7  void main()
    8  {
    9    char des[MAXLEN];
    10    int n=120 ;
    11    DecToBin(deS,n);
    12    cout<    13    return;
    14    }

选项

答案1 int j,i=0 ; 2 char temp; 3 while(n!=0) 4 { 5 des[i]=n%2+’0’; 6 n=n/2 ; 7 i++; 8 } //转化结果为2进制最高位在des的下标最低处,顺序刚好反了 9 des[i]=NULL; 10 for(j=0 ; j
解析 函数DecToBin(char*des,int n)的功能是实现十进制数转换成二进制数,可采用除2取余的方法来求得。由于要将最终的结果保存在字符数组中,因此在定义的函数中将将相除得到的数字0和l,再加上字符“0”的ASCII码从而实现将数字转换成ASCII码显示,考虑到除2取余得到的结果是倒序的,因此程序最后通过交换实现结果的正确显示。
    [解题思路]
    (1)本题为将十进制数转换成二进制数,因此采用除2求余法,通过该方法最终可以将一个十进制数转换成一个只包含1和0的数组。
    (2)除2求余法得到的是0和1的数值,不是“0”和“1”字符,还需将数字转化成字符,0和1通过加上“0”的ASCII码便可得到0和l的ASCII码字符。
    (3)因为除2求余法得到的字符数组是从低位到高位保存的,因此需要先倒序后再输出,可利用循环方式将顺序调转过来。
转载请注明原文地址:https://kaotiyun.com/show/cz5p777K
0

最新回复(0)