[计算机类试卷]国家二级C++机试(操作题)模拟试卷61及答案与解析.doc

上传人:eventdump275 文档编号:497620 上传时间:2018-11-28 格式:DOC 页数:7 大小:35KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(操作题)模拟试卷61及答案与解析.doc_第1页
第1页 / 共7页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷61及答案与解析.doc_第2页
第2页 / 共7页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷61及答案与解析.doc_第3页
第3页 / 共7页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷61及答案与解析.doc_第4页
第4页 / 共7页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷61及答案与解析.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、国家二级 C+机试(操作题)模拟试卷 61及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,但该程序运行有问题,请改正 main函数中的错误,使程序的输出结果是: 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 1 #include 2 #include 3 void main()f 4 int a33=1, 2, 3), 4, 5, 6), 7, 8, 9); 5 int *p, i ; 6 *error* 7 P=a

2、; 8 for(i=0 ; i 2 int fun(char*data) 3 4 5 6 void main() 7 8 char Str1024; 9 cout 2 class MyFileClasS 3 4 private: 5 char filename64; 6 char*contex; 7 int FileLength; 8 public: 9 MyFileClasS() 10 11 *1* 12 13 contex=NULL; 14 FileLength=0; 15 16 MyFileClasS() 17 18 if(FileLength) 19 *2* 20 21 22 void

3、 OpenFile(char*str, int len) 23 24 for(int i=0 ; ilen; i+) 25 26 filenamei=stri; 27 28 filenamelen=0; 29 FileLength=0; 30 if(contex) 31 32 deletecontex; 33 contex=NULL; 34 35 36 void WriteFlie(char*str, int len) 37 38 if(contex!=NULL) 39 *3* 40 41 contex=new char1en+1; 42 for(int i=0; ilen; i+) 43 c

4、ontexi=stri; 44 contex1en=0 ; 45 FileLength=len; 46 47 void CopyFile(MyFileClass&file) 48 49 *4* 50 51 52 void display() 53 54 Coutcontexendl; 55 56 ; 57 int main() 58 59 MyFileClass filel, file2 ; 60 filel OpenFile(“txtl“, 4); i61 file2 OpenFile(“txt2“, 4); 62 filel WriteFlie(“hello!“, 6); 63 file2

5、 CopyFile(filel); 64 file1 display(); 65 file2 display(); 66 return 0 ; 67 国家二级 C+机试(操作题)模拟试卷 61答案 与解析 一、基本操作题 1 【正确答案】 (1)P=&a00; (2)coutsetw(2)*(*a+i); 【试题解析】 从已给定源程序的 main主函数开始入手,可以看出程序是通过数组与指针两种方法输出数组值。 解题思路 (1)打开 modil cpp,调试程序,显示错误提示为第一标识下 “modi1 cpp(71:error C2440: =: cannot conve fromint33to

6、 int*”, a为二维数组型变量,将其值赋值给 p,应该是 P指向数组 a的起始位置,即 “p=&a00; ”。 (2)程序中第 2个标识下的 “coutsetw(2)*(a+i); ”语句应该是输出数组 a中元素的值,而该语句是 *(a+i)指向数组第 i个位置,要指向其值应该是 *(*a+i),所以第 2个标识下的语句改为 “coutsetw(2) *(*a+i); ”。 二、简单应用题 2 【正确答案】 1 int MinPos=0 ; 初始化最小值位置 2 if(data=NULL) 判断输入字符串是否为空 3 return -1; 4 char MinData=data0;设置字符

7、串第一个字符为最小值 5 if(MinData=0) 判断第一个字符是否存在 6 return一 1 ; 7 for(int i=1 ; datai!=0 ; i+) 8 9 if(datai=MinData) 10 11i MinData=datai; 逐个判断 每个字母是否小于标记字符 12 MinPos=i; 最小值位置 13 14 15 return MinPos ; 【试题解析】 (1)该程序功能是找出字符串数组中最小的 ASCII值。它的解题思路,用最小值变量标记第一个待找字符,把所有待找字符和标记字符逐个进行比较,并标记其当前最小值及其所在位置,从而找出最小值。 (2)从已给部分

8、源程序的 main主函数开始入手,核心函数 int fun(char*data)中的data参数为输入的 字符串数组,其中 MinPos为最小值位置。 解题思路 (1)MinPos变量首先指向字符串 data的第一个字符,同时将标志位 MinPos初始值赋为 0。 (2)然后利用 for循环对每一个当前字符与 MinPos标记的字符进行比较。 (3)循环中将求得的最小数据 datai赋值给 MinData,并将该数据项数组标志位赋给标志位 MinPos。 三、综合应用题 3 【正确答案】 (1)添加语句: filename0=0;或 filename0=NULL ; (2)添加语句: dele

9、tecontex; (3)添加语句: delete contex; (4)添加语句: WriteFlie(file contex, file FileLength); 【试题解析】 程序当中定义了类 MyFileClass,包含 3个成员变量,分别为filename、 contex和 FileLength,分别表示文件名、文件内容和文件长度,类MyFileClass有多个成员函数:构造函数、析构函数、 OpenFile(char*str,int len)、WriteFlie(char*str,int len)、 CopyFile(MyFileClass&file)和 display(), Op

10、enFile()用来给 filename赋值,并清空 contex内容; WriteFileO函数用来对 contex内容进行设置填充内容; CopyFile(MyFileClass&file)函数完成将参数 file对象的 contex内容拷贝到当前的文件内容中; display()将 contex内容打印到屏幕上。 解题思路 (1)构造函数 MyFileClass()完成类成员变量的初始化,将 数据成员变量 filename和 contex为空,内容长度 FileLength为 0,因此第 1个标识下应添加“filename0=0; ”或 “filename0=NULL; ”。 (2)析构

11、函数用来释放一个对象,在对象删除前,用它来做一些清理工作,WriteFlie()函数会申请内存空间,因此在对象删除的时候必须将这些内存空间释放,这个工作可以放在析构函数中来处理,第 2个标识下是释放由 new申请的内存空间,因此第 2个标识下应添加 “deletecontex; ”。 (3)WriteFile0函数首先对 contex内容清空,第 3个标识下应添加 “delete contex; ”。 (4)CopyFile(MyFileClass&file)函数完成将参数 file对象的 contex的内容拷贝到当前的文件内容中,可直接调用 WriteFlie()函数,因此第 4个标识下应添加“WriteFlie(file contex, file FileLength); ”。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1