1、国家二级 C+机试(操作题)模拟试卷 318及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp。本程序要求输入一字符串,然后将其中的小写字母改变成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到界面。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhvoid main() int i=0; char str120;cout“Enter a string endwith?
2、“endl; *error* cingetline(str,120); *error* while(str) *error* if(stri=a) stri =stri a+A; i+; coutstrendl; return;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(int n)的功能是实现对一个整数的加密,具体的加密方法是:一个四位长的整数,每位数字加上 3然后除以 9的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,然后返回得到的密码。
3、 程序输出: 7654 2108 注意:不能修改其他部分的代码。 #include #include int fun(int n) int main() int i=1234; cout=astri=a )”语句是判断字符 stri是否为小写字符,而现有的语句只是判断字符是否大于a,但是小写字符应该是a到z,所以修改为“if(stri=astri=z)”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(int n)的功能是实现对一个整数的加密,具体的加密方法是:一个四位长的整数,
4、每位数字加上 3然后除以 9的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,然后返回得到的密码。 程序输出: 7654 2108 注意:不能修改其他部分的代码。 #include #include int fun(int n) int main() int i=1234; coutfun(i)fun(i)_正确答案:(正确答案:int i,a4,t; a0=n10; 取整型 n的第一位数字 a1=n10010; 取整型 n的第 2位数字 a2=n1000100; 取整型 n的第 3位数字 a3=n1000; 取整型 n的第 4位数字 for(i=0;i=3;i+) 每位数字加 3
5、,取余 ai+=3; ai=9; t=a0; 根据加密算法交换 a0=a3; a3=t; t=a1; a1=a2; a2=t; return a3*1000+a2*100+a1* 10+a0; 重组,返回加密数字)解析:解析:(1)首先取得要加密整数的每一位数字,并存入数组。 (2)根据加密算法,首先利用循环实现每位数字加 3,除以 9取余。 (3)然后根据加密算法进行数字交换,最后重组,返回密码。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)完成
6、CMyClass的构造函数,请改正注释*1*后的错误。 (2)完成 fun()函数定义,请改正注释*2*后的错误。 (3)初始化 CMyClass的成员变量 Number3为 4,请改正注释*3*后的错误。 (4)完成 fun()函数,请改正注释*4*后的错误。 输出的结果为: Number1=12 Number2=18 Number3=16 Number1=4 Number2=2 Number3=19 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamhclass CMyClasspublic: *1* CMyClass(int i,int j) N
7、umber1=i; Number3+=i; void display() cout“Numberl=“Number1endl; cout“Number2=“Number2endl; cout“Number3=“Number3endl; Void AddNum(int i) Number3+=i; private: int Number1; const int Number2; StatiC int Number3; *2* ; *3* Void func() CMyClass obj(1,2); objNumber1=4; *4* objAddNum(); objdisplay();Void
8、main() CMyClass myObj(12,18); myObjdisplay(); func(); return; (分数:2.00)_正确答案:(正确答案:(1)将“CMyClass(int i,int j)”补充完整为:CMyClass(int i,int j):Number2(j) (2)添加语句:friend void func(); (3)添加语句:int CMyClass:Number3=4; (4)将“objAddNum()”补充完整为:objAddNum(2);)解析:解析:(1)第 1个标识下完成类的构造函数初始化类的成员变量,常成员也必须初始化,并且不能被更新,常数
9、据成员的初始化只能通过构造函数的成员初始化类表进行,因此第 1个标识下应为“CMyClass(int i,int j):Number2(j)”,i 用来初始化 Numberl和 Number3,i 初始化 Number2。 (2)第 2个标识下完成 func()函数定义,由审题分析可知,函数 func()为类的友元,故第 2个标识下应为“friend void func();”。 (3)第 3个标识下是静态成员的初始化,静态数据成员的初始化格式为:数据类型类名:静态数据成员=初始值,因此第 3个标识下应为“int CMyClass:Number3=4;”。 (4)成员函数 AddNum()带有一个整型参数,因此调用此函数时必须有参数传入,可由程序运行结果分析得知传入的参数值的大小。在 fun()函数内,定义 CMyClass obj(1,2)后,objNumberl=1,objNumber2=2,Number3=16+1=17,objNumberl=4,Number1 为 4,objNumber2为常成员其值不会改变,调用 AddNum()函数后调用显示函数显示成员变量值,可知 Number3为 19,因此AddNum()的参数为 1917=2,即第 4个标识下应为“objAddNum(2);”。