问答题 使用VC6打开考生文件夹下的源程序文件mod12.cpp。请完成函数fun(intx),该函数功能是将x的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。 例如:x=13, 13的二进制数字为1101,则输出到屏幕的为1101。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 #inc1ude <iostream> #inc1ude<fstream> #inc1ude<cmath> using namespace std; void Wr:iteFile(char* str) { ofstream outl; outl.open("modi2.txt",ios_ base::binarylios_base::app); for(int i=0; str[i]!=0;1++) outl.put(str[i]); outl.c1ose(); } void fun(int x) { } void ClearFile() { ofstream outl; out1,open("modi2.txt"); outl.c1ose(), } int main() { ClearFile(); fun(13); return0; }
【正确答案】正确答案:char str[32]; int i: for(1=30;i>20;i——) //计算二进制 { if(x%2)str[il='1'; //求余,如果余不为零字符串str第i位为l else str[i]='0'; //否则为0 x>>=1; if(! x)break; } str[31]='\0'; //串加尾符 cout<<&str[i]<<end1; WriteFile(&str[i]);
【答案解析】解析:该程序功能是实现十进制转换成二进制数。十进制到二进制的转换是对十进制的数字进行2的取余运算,余数不为零则取l,否则为0,然后对余数进行循环取余运算,直到余数为0。 从已给部分源程序的main主函数开始入手,核心函数fun(intx)中的x参数为输入的十进制数。 (1)定义存放二进制的字符串str。 (2)然后利用for循环对十进制数字x进行取余运算,直到余数为0结束。 (3)如果取余结果为0,则二进制字符串这个字符位的值为0,否则为1。 (4)最后调用WriteFile将运算结果存入文件。