1、国家二级 C+机试(操作题)模拟试卷 421及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: sizeof(str1)=5 sizeof(str2)=10 sizeof(str3)=1 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。 (1)不能删除 assert()语句; (2)只能修改后面的数字。 提示:assert()函数如果为假,则会产生一个中断异常
2、。#includeiostreamh#includeasserthvoid main() char* str1=“abc“; *error* assert(sizeof(Str1)=3); cout“sizeof(Str1) = 5“end1; char str210=“ab“; zsert(sizeof(str2)=2); cout“sizeof(Str2)=10“end1; char str3=23; *error* assert(sizeof(str3)=4); cout“sizeof(Str3)=1“end1; return;(分数:2.00)_二、简单应用题(总题数:1,分数:2.0
3、0)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(int n)的功能是在 n行 n列的矩阵中,每行都有最大的数,本程序求这 n个最大数中的最小一个,并作为参数返回。 注意:不能修改程序的其他部分,只能修改 fun()函数。 #include #define N 100 int aNN; int fun(int n) void main() int n; coutn; for(int i=0;iaij; coutn; for(int i=0;iaij; cout“The min of max numbers is“fun(
4、n)_正确答案:(正确答案:int row; int max; int min; int col; for(row=0;rown;row+) 外循环求行最大值中的最小值 for(max=arow0,col=1;coln; col+) 求每一行中的最大值 if(maxarowcol) max=arowcol; if(row=0) 求最小值 min=max; else if(maxmin) min=max; return min;)解析:解析:(1)两层循环,内层循环求每一行最大值,外层循环求最小值。 (2)求最大值,首先将最大值赋值为每行第一列的元素,然后依次循环比较。 (3)将求出的第一个最大
5、值赋值为第一个最小值,然后将以后求得的最大值依次与之比较,求出所有值的最小值。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义类的公有数据成员函数 No、Name32,其中 No是 int型的数据,Name32为字符型。请在注释*1*后添加适当的语句。 (2)完成函数 set的定义,分别设置 No和 Name的值,请在注释*2*后添加适当的语句。 (3)完成函数 print(), 请在注释*3*后添加适当的语句,打印的输出如下: No=111 Name=Garf
6、ield (4)加缺省构造函数,设置 No为 0,Name 为空,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhclass TestClasspublic: *1* *2* No=no; for(int i=0;strNamei!=0;i+) Namei=strNamei; Namei+1=0; void print() *3* TestClass() *4* ;int main() TestClass Stu; stuset(111,“Garfield“); stuprint(); retu
7、rn 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:int No;char Name32; (2)添加语句:void Set(int no,char*StrName) (3)添加语句:cout“No=“Noend1Name解析:解析:(1)题目 1要求“定义类的公有数据成员函数 No、Name32,其中 No是 int型的数据,Name32为字符型”。在已有程序中,类定义的 public区域中,定义变量 No,Name32,即在第 1个标识下添加语句“int No;charName32;”。 (2)题目 2要求“完成函数 set的定义,分别设置 No和Name的值”。第 2个标识下说明函数 set的语句中,应该包括变量 no,strName 的定义,然后在函数中将其值赋值给 No,Name,即添加定义语句“void Set(int no,char*strName)”。 (3)题目 3要求“完成函数 print()”,根据输出结果,知道输出的是 No和 Name的值,所以这里补全cout“No=“Noend1“Name=“Name