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

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

1、国家二级 C+机试(操作题)模拟试卷 231及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错误,请改正程序中的错误,使得程序运行后没有内存遗漏。可以在修改处增加或者删除一条语句。本程序完成输入两个字符串,分别存储到 s1, s2中。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include iostream h void main() char*s1; char s21024; cout “please input a string: “ endl; *error*

2、 cin getline(s1, 1024), cout “please input a string: “ endl; cin getline(s2, 1024); *error* delete s1; *error* delete s2; return; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。请完成以下两个函数: (1)fun1(int n);求出 n的阶乘,必须使用递归调用。 (2)fun2(int n):求出 n的阶乘,不能使用递归调用。 如果 n小于 1则返回 0。 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花

3、括号中填入所编写的若干语句。 #1nclude ioStream.h 必须使用递归 int fun1(int n) ; 不能使用递归 int fun2(int n) void main() int i; cout “请输入一个整数: “ endl; cin i; cout “输入数字的阶乘是: “ fun1(i) endl; cout “输入数字的阶乘是: “ fun2(i) endl; return; 三、综合应用题 3 使用 VC6打开源程序文件 modi3 cpp。其中类 TestClass用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个

4、文件的大小是剩余部分。 此程序将 int txt文件中的内容输出到屏幕,并且将文件按 照以上方式分割,存于文件 out1 txt和 out2 txt中。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环。请在注释 *1*后添加适当的语句。 (2)把获得的输入文件的内容存储到 buf中,并且用 len记录下文件的长度。请在注释 *2*后添加适当的语句。 (3)将输入文件的后一半内容存储在第二个文件中,请在注释*3*后添 加适当的语句。 (4)使用文件流对象打开输入文件 in txt,请在注释 *4*后添

5、加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。 #include iostream.h #include fstream.h #include stdlib.h Class TestClass public: TestClass(char*fileName) len=0; fstream infile; infile.open(fileName, ios: in); char ch; *1* while() cout ch; *2* infile close(); void split() fStream out file1; fStream

6、outfile2; outfilel open(“out1 txt“, ios: out); outfile2 open(“out2 txt“, ios: out); int i=0; for(i=0; i len 2; i+) outfilel bufi; do *3* while(i!=len); outfile1 close(); outfile2 close(); private: int len; char buf1024; ; void main() *4* TestClass Fsp(); Fsp split(); return; 国家二级 C+机试(操作题)模拟试卷 231答

7、案与解析 一、基本操作题 1 【正确答案】 (1)s1=new char1024; (2)deletes1; (3)删除 “delete s2; ”语句 【试题解析】 (1)s1变量为指针变量,在使用前要对其分配空间,所以第 1个标识下添加 “s1=new char1024; ”。 (2)为了防止内存空间的泄漏,指针变量使用后,要将其空间释放,第二个标识下“deletes1; ”。 (3)s2是数组变量,空间是在使用前静态分配的,不是使用前动态分配的,所以使用后不用释放内存空间,这里应该删除 “delete s2; ”。 二、简单应用题 2 【正确答案】 int fun1(int n)使用递归

8、计算阶乘 if(n =0) n小于等于 0,直接返回 0 return0; if(n=1) n等于 1直接返回 1 return1; return n*fun1(n-1); n大于等于 1,通过递归计算 n! ; 不使用递归计算阶乘 int fun2(int n) if(n =0) n小于 0,直接返回 0 return0; int res=1;初始化阶乘存放变量 res for(int i=1; i =n; i+)通过循环计算 n! res*=i; return res; 【试题解析】 (1)进入 fun1函数,根据前面的定义,它对阶乘算法的实现可以分为三种情况,一是当 n小于或等于 0时,

9、返回 0即可;二是当 n大于 1时应该用什么程序来实现阶乘的计算;三是当 n=1时,函数直接返回 1即可。 (2)计算 n!的值,先定义一个放阶乘值的变量 res,初值为 1,通过循环的方法,用累乘器 “res+=i; ”实现 n!。 三、综合应用题 3 【正确答案】 (1)将 “while()”完整为: while(infile get(ch) (2)添加语句: buf1en+=ch; (3)添加语句: outfile2 bufi+; (4)将 “TestClass Fsp(); ”完整为: TestClasSFsp(“modi3 txt“); 【试题解析】 (1)题目 1要求 “从输入文件

10、中获得一个字符,并判断是否到文件结尾 ”。程序中的 “while()”循环判断语句中缺少从文件中获得的字符,所以这里补全while循环判断条件,即 “while(infile get(ch)”。 (2)题目 2要求 “把获得的 输入文件的内容存储到 bur中,并且用 len记录下文件的长度。 ”所以为 buf分配空间,即 “buflen+=ch; ”。 (3)题目 3要求 “将输入文件的后一半内容存储在第二个文件中。 ”在 C+中,用流插入运算符为 “ ”,所将 buf中存放的数据存入文件 outfile2,以根据题干中的要求,即这里补全 “outfile2 bufi+; ”。 (4)题目 4要求 “使用文件流对象打开输入文件 modi3 txt。 ”程序应该是调用类“TestClass”中的成员函数 “split”。类的构造函数定义中存在参数 char*fileName,所以修改注释下的语句缺少参数。即 “TestClassFsp(“modi3 txt“); ”。

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

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

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