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

admin2016-10-28  26

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数DecToBin(char*des,int n)的功能是将十进制数据n转换成二进制数据,并将转换结果存放在des中。
如:120的二进制数据为1111000
例:
DecToBin(char*des,120);
cout<<des<<endl;
输出为:1111000
注意:不能修改程序的其他部分,只能补充DecToBin(char*des,int n)函数。
#include<iostream.h>
#define MAXLEN1024
void DecToBin(char*des,int n)
{

}
void main()
{
char des[MAXLEN];
int n=120;
DecToBin(des,n);
cout<<des<<endl;
return;
}

选项

答案int j,i=0; char temp; while(n!=0) { des[i]=n%2+’0’; n=n/2; i++; )//转化结果为2进制最高位在des的下标最低处,顺序刚好反了 des[i]=NULL; for(j=0;j<i/2;J++)//将顺序倒过来 { temp=des[j];//交换 des[j]=des[i-1-j]; des[i-1-j]=temp; }

解析 (1)本题为将十进制数转换成二进制数,因此采用除2求余法,通过该方法最终可以将一个十进制数转换成一个只包含1和0的数组。
(2)除2求余法得到的是0和1的数值,不是“0”和“1”字符,还需将数字转化成字符,0和1通过加上“0”的ASCII码便可得到0和1的ASCII码字符。
(3)因为除2求余法得到的字符数组是从低位到高位保存的,因此需要先倒序后再输出,可利用循环方式将顺序调转过来。
转载请注明原文地址:https://kaotiyun.com/show/jONp777K
0

最新回复(0)