1、国家二级 C+机试(操作题)模拟试卷 11及答案与解析 一、基本操作题 1 使用 VC+6 0打开考生文件夹下的源程序文件 1 cpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动 main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 * * * * * * * * error* * * * * * * *的下面。 试题程序: #include(iostream) * * * * * * * * error* * * * * * * * template void fun(bool t) std: cout 注意只能使用 int类型,不能类
2、型转换 int fun(char*strl, char*str2) void main() char strl1024; char str2256; cout #include(fstream) #include(iomanip) #include(cmath) using namespace std; void WriteFile(int c) ofstream out1; outl open(“out3 txt”, ios_base: app); outl”。 (2)删除 “template(bool)”。 (3)应改为 “bool flag=true; ”。 【试题解析】 C+中的模板类
3、格式为 tempiate,所以第 1处的语句“template”应修改为 “template”。 在第 2处的 “Void fun(bool)”函数中, t变量为布尔型变量,是 C+中的基础变量,不是模板变量,没有使用到模板类,所以删除第 2处的模板类型定义语句。 第 3处的 “bool flag=TRUE; ”是声明布尔型变量 flag,并将其值赋为逻辑真。而TRUE并不是合法值, C+中区分大小写,所以逻辑真值应为 true,即 “bool flag=true; ”。 二、简单应用题 2 【正确答案】 int fun(char*str1, char*str2) int size=0; in
4、t str1len; int str2len; for(str1len=0; strlstr1len!=0; str1len+); for(str2len=0; str2str2len!=0; str2len+); for(int i=0; i(strllen; i+) int j=0; for(; jstr2len; j+) if(str1i+j!=str2j) break; if(j=str2len) +size: i+=j; return size; 【试题解析】 本题考查的是字符串查找算法。首先求出两个字符串的长度,然后循环遍历第 1个字符串,再使用一个内循环遍历第 2个字符串,判断两
5、个字符串相应位置是否一致。如果遍历完第 2个字符串,所有位置都一致,则记数值 size增 1,即找到一个子串。 三、综合应用题 3 【正确答案】 (1)应添加 “year=y; month=m; day=d; ”。 (2)应添加 “Date&operator+=(int m)”。 (3)应添加 “int year, month, day; ”。 (4)应添加 “coutyear“年 “month“月 “day“日 “end1; ”。 【试题解析】 本题要求私有成员变量 year、 month、 day为整形表示方法,所以注释 3应添加 “int year, month, day; ”;注释 1要求分别给 year、 month、 day赋值,根据上下文提意,所以应添加 “year=y; month=m; day=d; ”;注释 2是对“+=”运 算符的重载 ate&operator=(int m);第 4处打印输出年月日, C+语言中,输出使用 cout。