1、国家二级 C+机试(操作题)模拟试卷 101及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错误,请改正程序中的错误,使得程序运行后没有内存遗漏。可以在修改处增加或者删除一条语句。本程序完成输入两个字符串,分别存储到 sl, s2中。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include void main() char*s1; char s21 024; cout void func(int d, int num) int main() int Data=1,
2、2, 3, 4, 5, 6, 7, 8, 9), func(Data, 9); for(int i=0; i #include #include void main() char ch; fstream infile, outfile ; *2* infile open(“outl txt”); if(!infile) cout“outI txt文件不能打开 IIendl; abort(); *2* outfile open(“out2 txt”); if(!outfile) cout“OUt2 txt文件不能打开 ”endl; abort(); *3* while() coutch; *4*
3、 coutendl; infile close(); outfile close(); 国家二级 C+机试(操作题)模拟试卷 101答案与解析 一、基本操作题 1 【正确答案】 (1)s1=new char1024; (2)deletes1 ; (3)删除 “delete s2; ”语句 【试题解析】 本题是主要是处理程序运行后是否有内存遗漏的问题。对于这类问题主要是根据调试环境中的错误提示以及警告提示进行处理。 解题思路 (1)sl变量为指针变量,在使用前要对其分配空间,所以第 1个标识下添加 “sl:=new char1024 ; ”。 (2)为了防止内存空间的泄漏,指针变量使用后,要将其
4、空间释放,第二个标识下“delete口 s1; ”。 (3)s2是数组变量,空间是在使用前静态分配 的,不是使用前动态分配的,所以使用后不用释放内存空间,这里应该删除 “delete s2; ”。 二、简单应用题 2 【正确答案】 1 for(int i=0 ; inum; i+) 2 3 if(di 2 1=0) 4 di=2*di; 5 【试题解析】 (1)由审题分析可知,利用循环来逐个判断 d中的元素, d中元素个数为 num,因此循环变量从 0变化至 lqtlm。 (2)在循环内,用 if判断该元素是不是奇数,即 if(di 2 != 0),将满足条件的 di扩人一一倍。 三、综合应用
5、题 3 【正确答案】 (1)将 “infile open(”OUtl txt ”); ”补充完整为:infile open(”ontl txt”, iOS: in); (2)将 “outfile open(ut2 txt”); ” 补充完整为: outfile open(”out2 txt”, ios:out); (3)将 “while()”补充完整为: wh ile(infile get(ch) (4)添加语句: outfilech; 【 试题解析】 本题的功能是将 outl txt文件中的内容输出到屏幕与文件中。解题思路为在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释
6、下的内容逐个补全或修改。从已给定源程序的 main主函数开始入手,可以看出程序是对文件的操作。 解题思路 (1)题目 1要求 “以输入方式打开文件 outl txt”。在 C+中调用文件流的成员函数open的格式为,文件流类 open( 文件名 ”, ios: in),所以第 1个标识下语句就该为 “infile open(”outl txt“,ios: in); ”。 (2)题目 2要求 “以输出方式打开文件 out2 txt”。同理第 2个标识下修改为“outflle open(“out2 txt“,ios: out); ”。 (3)题目 3要求 “从文件中获得一个字符,判断是否结束 ”。程序中的 “while()”循环判断语句中缺少从文件中获得的字符,所以这里补全 while循环判断条件,即“while(infile get(ch)”。 (4)题目 4要求 “把获得的字符输出到文件中 “。在 C+中,用流插入运算符为“”,所以根据题干中的要求在第四个标识下补全写入文件的流操作语句,即“outfilech: ”。