1、国家二级 C+机试(操作题)模拟试卷 394及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp。本程序要求输入一字符串,然后将其中的小写字母改变成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到界面。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include Void main() int i=0; char Str12 0; cout=astri=Z)解析:解析:同一英文字母的大写和小写形
2、式的 ASCII码值相差 32,因此,要将小写字母转换为大写字母,只要将其对应的 ASC码值减去 32即可,程序中给出的语句中,减去字符a的 ASC码再加上字符A的 ASC码正好是减去 32。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说日月和代码,完成空出部分程序。函数 fun(int*arr,int n)的功能是将指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除:并返回互不相同的元素的个数。 注意:不能修改程序的其他部分,只能修改 fun()函数,#includeiostreamint
3、 fun(int*a,int n)void msin() int A=6,6,5,4,4,3,3,2,1; Int j =fun(A,s i zeof(A)si zeof(int); for(int i=0 ; ij ;i+) std:coutAi ; std:couts td:endl; return;(分数:2.00)_正确答案:(正确答案:Int j; int k=0;指向数组第一个元素 j=1; 指向数组第二个元素 while(jn)将本次循环 k指向的元素依次与其他元素比较,如果不同,则存入数组 if(aj!=ak) a+k=aj; k 指向下一个元素 j+; return k+1;
4、 为新数组大小)解析:三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)完成构造函数的定义,使得数据成员变量 filename和 contex为空,内容长度 FileLength为 0。请在注释*1*后添加适当的语句。 (2)完成析构函数,对 contex内存的释放。请在注释*2*后添加适当的语句。 (3)完成 WriteFile()函数,用来对 contex内容进行设置填充内容,如果以前有内容,则删除以前的内容,重新填写。请在注释*3*后添加适当的语句
5、。 (4)完成 CopyFile()函数,完成将参数对象的 contex的内容拷贝到当前的文件内容中,请在注释*4*后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include class MyFileClasS private: char filename64; char*contex; int FileLength; public: MyFileClass() *1* contex=NULL; FileLength=0; 一 MyFileClasS() if(FileLength) *2* void OpenFile(char*str,int len)
6、 for(int i=0;icontex_正确答案:(正确答案:(1)添加语句:filename0 =0;或 filename0=NULL; (2)添加语句:deletecontex; (3)添加语句:delete contex; (4)添加语句:WriteFlie(filecontex,fileFileLength);)解析:解析:程序当中定义了类 MyFileClass,包含 3个成员变量,分别为 filename、contex 和FileLength,分别表示文件名、文件内容和文件长度,类 MyFileClass有多个成员函数:构造函数、析构函数、OpenFile(char*str,int len)、WriteFlie(char*str,intlen)、CopyFile(MyFileClass&file)和display(),OpenFile()用来给 filename赋值,并清空 contex内容;WriteFile()函数用来对 contex内容进行设置填充内容;CopyFile(MyFileClass&file)函数完成将参数 file对象的 contex内容拷贝到当前的文件内容中;display()将 contex内容打印到屏幕上。