应用题 1. 使用VC++2010打开考生文件夹下“proj3”文件夹中的工程proj3.sln。请完成函数fun(char*s),该函数完成以下功能:
    (1)把s中的大写字母转换成小写字母,把其中的小写字母转换成大写字母。并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。
    例如:s="helloTEST",则结果为:s="HELLOtest"
    (2)完成函数WriteFile(char*s),把字符串输入文件中。
    提示:打开文件使用的第二参数为ios_base::binary|ios_base::app。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    #include<iostream>
    #include<fstream>
    #include<cmath>
    using namespace std;
    void WriteFile(char*s)
    {
    }
    void fun(char*s)
    {
    }
    void ClearFile()
    {
    ofstream out1;
    out1.open("modi2.txt");
    out1.close();
    }
    int main()
    {
    ClearFile();
    char s[1024];
    cout<<"please input a string:"<<endl;
    cin.getline(s,1024);
    fun(s);
    return 0;
    }
【正确答案】(1)void WriteFile(char*s)中的命令语句:
   ofstream out1;
   out1.open("modi2.txt",ios_base::binary|ios_base::app);    //打开文件modi2
   out1<<s;  //写入字符串s
   out1.close();
   (2)void fun(char *s)中的命令语句:
   for(int i=0;s[i]!=0;i++)     //循环判断每一个字符
   {
   if(s[i]>='A'&&s[i]<='Z')   //如果是大写字符,转换为小写字符
   {
   s[i]=s[i]-'A'+'a';
   //'s[i]-'A'+'a'等于字符s[i]+32'
   }
   Else if(s[i]>='a'&&s[i]<='z')    //如果是小写字符,转换为大写字符
   {
   s[i]=s[i]-'a'+'A'; //'s[i]-'a'+'A''等于字符s[i]-32
   }
   }
   WriteFile(s);
【答案解析】 (1)本题要求实现两个函数的功能,其中WriteFile(char*s)实现把字符串输入到文件中;fun(char*s)函数实现大写字母转换成小写字母,把其中的小写字母转换成大写字母。其中大小写字母之间的ASCII码差为32。
   (2)从已给部分源程序的main主函数开始入手,首先实现WriteFile函数,然后再实现fun函数,并在其中调用WrileFile函数。
   (3)在WriteFile(char*s)函数中,利用标准流ofstream实现字符串写入文件modi2.txt。
   (4)在fun函数中,利用for循环逐个判断字符是大写还是小写。
   (5)如果是大写,那么加上32实现大写转换为小写。否则,就减去32,实现小写到大写的转换。最后调用前面实现的WliteFile函数,将字符串写入文件。