应用题 1.  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(int x),该函数的功能是将x的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile()将结果输出到2.txt文件中。
    例如:x=6,6的二进制数为110,则输出到屏幕的数为110。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<iostream>
    #include<fstream>
    #include<cmath>
    using namespace std;
    void WriteFile(char *str)
    {
    ofstream out1;
    out1.open("2.txt",ios_base::binary|ios_base::app);
    for(int i=0; str[i] != 0; i++)
    out1.put( str[i]);
    out1.close();
    }
    void fun(int x)
    {
    }
    void ClearFile()
    {
    ofstream out1;
    out1.open("2.txt");
    out1.close();
    }
    int main()
    {
    ClearFile();
    fun(13);
    return 0;
    }
【正确答案】char str[32];
   int i;
   for(i=30;i>=0;i--)//计算二进制
   {
   if(x%2)str[i]=′1′;//求余,如果余不为零字符串str第i位为1  
   else str[i]=′0′; //否则为0
   x>>=1;
   if(!x)break;
   }
   str[31]=′\0′; //串加尾符
   cout<<&str[i]<<endl;
   WriteFile(&str[i]);
   
【答案解析】 本题要求定义存放二进制的字符串str。利用for循环对十进制数字x进行取余运算,直到余数为0结束。如果取余结果为0,则二进制字符串这个字符位的值为0,否则为1。调用WriteFile,将运算结果存入文件。