1、国家二级 C+机试(操作题)模拟试卷 12及答案与解析 一、基本操作题 1 使用 VC+6 0打开考生文件夹下的源程序文件 1 cpp,该程序运行时有错误,请改正程序中的错误,本题的功能是从键盘中输入字符串 str,然后输出字符串 str中的字符个数。 注意:错误的语句在 *error* N,修改该语句即可。其他的语句不能修改。 试题程序: #include int main() *error* cout void fun(char*s, char*t) void main() char s100, t100; cout #define MAX LENGTH 500 class TCArr p
2、ublic: TCArr() *1* int AddMember(int n) for(int i=0; ilength; i+) *2* return 0: Arraylength+=n; return 1; int DelMember(int n) int i: for(i=0; i length; i+) if(Arrayi=n) break; *3* for(; i length-1; i+) Arrayi=Arrayi+1; length-; return 1; return 0; int IsInclude(int n) for(int i=0; i length; i+) *3*
3、 return 1; return 0; private: int ArrayMAX_LENGTH; int length;用来记录数组的个数 ; int main() TCArr obj; coutobj AddMember(1)end1; coutobj AddMember(3)end1; coutobj AddMember(8)end1; coutobj AddMember(23)end1; coutobj Islnclude(8)end1; coutobj Islnclude(11)end1; coutobj DelMember(3)end1; coutobj DelMember(8)
4、end1; coutobj Islnclude(2)end1; coutobj Islnclude(1)end1; return 0; 国家二级 C+机试(操作题)模拟试卷 12答案与解析 一、基本操作题 1 【正确答案】 本题考查了考生对名字空间的了解情况。 (1)“cout“please input a string: “end1; ”应改为 “std: cout“please input a string: “std;: end1; ”。 (2)“namespace std; ”应改为 “using namespace std; ”。 【试题解析】 本题中程序使用的头文件是 (iostr
5、eam),没有 h后缀,该头文件中定义的所有标识符都位于 C+标准库名字空间 “std”内。所以语句“eout“please input a string: “end1; ”中的 tOUt和 end1都要加上 std:前缀才能使用。如果要使后面所有语句都能用到 std名字空间中和内容,省略加std:前缀的麻烦,可以使用语句 “using namespace std; ”。 二、简单应用题 2 【正确答案】 void fun(char*s, char*t) int i: for(i=0; si!=0; i+) if(i 2=0) ti=si: ti+2= 0; 【试题解析】 本题要求将在字符串
6、S中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串 t中, t中 字符按原字符串中字符的顺序排列,也就是说重复出现一次偶数位的字符,数组的下标是从 0开始的,所以会重复第 1、 3、5 的字符。 三、综合应用题 3 【正确答案】 (1)应添加 “length=0; ”。 (2)将 “if(Arrayi=n)”补充完整为 “if(Arrayi=n)”或 “if(n=Arrayi)”。 (3)将 “if()”补充完整为 “if(i(1ength)”或 “if(i!=length)”。 (4)将 “if()”礼充完整为 “if(Arrayi=n)”或 “if(n=Arrayi)”。 【试
7、题解析】 本题使 length初始化为 0,因此第 1处应添加 “length=0; ”。 第 2处是检查 n是否已经在数组当中存在,用 if语句来判断,即 if(Arrayi=n)或 if(n=Arrayi)。 DelMember(int n)函数用于删除指定的元素,由于元素在数组当中的位置未知,因此必须先查找该元素的位置,在该函数的实现过程中通过 for循环来完成,即第一个 for循环查找 n在数组中的位置。如果 n存在于数组中,那么 if中的 break语句就会执行跳 出循环,此时循环变量 i的值会小于 length,即通过判断;的值是否小于 length值可以知道 n是否存在于数组中,如果存在于数组中,接下来进行删除操作,即第 3处的语句应改为 if(ilength)或 if(i!=length)。IsInclude(int n)成员函数用来判断 n是否存在于数组当中,可用 if语句进行比较,即第 4处的语句应改为 “if(Arravi=n)“或 “if(n=Arravi)”。