使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s),该函数完成以下功能: (1)把s中的大写字母转换成小写字母,把其中的小写字母转换成大写字母。并且在函数中调用写函数WriteFile()将结果输出到modi

admin2018-10-23  24

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s),该函数完成以下功能:
    (1)把s中的大写字母转换成小写字母,把其中的小写字母转换成大写字母。并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。
    例如:s=’’helloTEST’’,则结果为:s=’’HELLOtest’’
    (2)完成函数WriteFile(char*s),把字符串输入文件中。
    提示:打开文件使用的第二参数为ios_base::binarylios_base::app。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
1  #include<iostream>
2  #include<fstream>
4  #include<cmath>
4  using namespace std;
5  void WriteFile(char *s)
6  {
7
8  }
9  void fun(char* s)
10  {
11
12  }
13  void ClearFile()
14  {
15   Ofstream out1;
16  out1.open(’’modi2.txt’’);
17  out1.close();
18  }
19  int main()
20  {
21  ClearFile();
22   char s[1024];
23    cout<<’’please input a string:’’<<end1;
24    cin.getline(s,1024);
25   fun(s);
26    return 0;
27  }

选项

答案(1)void WriteFile(char*s)中的命令语句: 1 ofstream ont1; 2 out1.open(’’modi2.txt’’,ios_base::binary| ios_base::app);//打开文件modi2 3 out1<<s; //写入字符串s 4 out1.close(); (2)void fun(char*s)中的命令语句: 1 for(int i=0;s[i]!=0;i++)//循环判断每一个字符 2 { 3 if(s[i]>=’A’&&s[i]<=’Z’) //如果是大写字符,转换为小写字符 4 { 5 s[i]=s[i]=’A’+’a’;//’s[i]-’A’+’a’等于字符s[i]+32’ 6 } 7 Else if(s[i]>=’a’&&s[i]<=’Z’)//如果是小写字符,转换为大写字符 8 { 9 s[i]=s[i]-’a’+’A’;//’ s[i]-’a’+’A’等于字符s[i]-32 10 } 11 } 12 WriteFile(s);

解析 (1)本题要求实现两个函数的功能,其中WriteFile(char *s)实现把字符串输入到文件中;fun(char*s)函数实现大写字母转换成小写字母,把其中的小写字母转换成大写字母。其中大小写字母之间的ASCII码差为32。
    (2)从已给部分源程序的main主函数开始入手,首先实现WriteFile函数,然后再实现fun函数,并在其中调用WriteFile函数。
    (3)在WriteFile(char *s)函数中,利用标准流ofstream实现字符串写入文件modi2.txt。
    (4)在fun函数中,利用for循环逐个判断字符是大写还是小写。
    (5)如果是大写,那么加上32实现大写转换为小写。否则,就减去32,实现小写到大写的转换。最后调用前面实现的WriteFile函数,将字符串写入文件。
转载请注明原文地址:https://kaotiyun.com/show/N5Ap777K
0

最新回复(0)