问答题
使用VC6打开考生文件夹下的源程序文件modi2.epp。请完成函数fun(char*s),该函数完成以下功能: (1)把S中的大写字母转换成小写字母,把其中的小写字母转换成大写字母。并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。 例如:s=''helloTEST'',则结果为:s=''HELLOtest'' (2)完成函数WriteFile(char*s),把字符串输入文件中。 提示:打开文件使用的第二参数为ios 注意:不要改动main函数,不得增行或行,也不得更改程序的结构。#include<iostream>#include<fstream>#include<cmath>using narnespace std;void WriteFile(char*s){}void fun(ehar*s){}void ClearFile(){ orstream out1; out1.open(''modi2.txt''); out1.close(); } intmain() { ClearFile(); char s[1024]; tout<<''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::binarylios_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)函数中,利用标准流ofstream实现字符串写入文件modi2.txt。 (2)在fun函数中,利用for循环逐个判断字符是大写还是小写。 (3)如果是大写,那么加上32实现大写转换为小写。否则,就减去32,实现小写到大写的转换。最后调用前面实现的WriteFile函数,将字符串写入文件。