1、国家二级 C+机试(操作题)-试卷 133 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modi lcpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 150 200 注意:错误的语句在 *error*的下面,修改该语句即可。 提示:定义 Numberl 为一个整型数据位长的变量。 #include *error* struct *error* int Numberl:1; int Number2 ; )MyStruct; void main() MyStruct mstr ;
2、mstrNumberl:150; mstrNumber2=15; *error* int*ptr= )MyStruct; void main() MyStruct mstr ; mstrNumberl:150; mstrNumber2=15; *error* int*ptr=)解析:解析:(1)第 1 标识下是定义结构体,结构体定义的一般形式为: struct ; 程序当中定义结构体名放在后面,MyStruct 为结构体变量类型,相当于 typedef 为已有的类型定义一个新的类型,第 1个标识下应改为“typedef struct“。 (2)第 2 标识下是定义 Numberl 为一个整型数
3、据变量,整型数据位数为 32(4 字节),因此第 2 个标识下应改成“intNumberl:32;”或“int Numberl:”。 (3)ptr 为整型数据指针,mstr 为 MyStruct 类型结构变量,两者类型不一致应该做强制类型转换,第 3 个标识下应改成“int*ptr=(int*)&mstr;”,表示将 mstr 的地址给 ptr,ptr 指向 MyStruct 的第一个域Numberl,Numberl 也是整形,类型一致,故可通过 ptr 指针来改变 Numberl 的值。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6 打开考生文件夹下的源程序文件 modi2cp
4、p。阅读下列函数说明和代码,完成空出部分程序。函数 fun(hatN4)的功能是用 4 个数字,组成互不相同且无重复数字的三位数,并将满足所有条件的数字输出到屏幕,并且每输出一个三位数字就换一行。 程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是 0 则也去掉。 #include void fun(int N4) int main() int N4=1,2,3,0; fun(N); return 0 ; (分数:2.00)_正确答案:(正确答案:inti,j,k; for(i=0;i4;i+) 百位循环 for(j=0;j4
5、;j+) 十位循环 for(k=0;k4;k+) 个位循环 ( if(i!=j&j!=k&k!=iNil=0) 当三位数不同,并且百位不为 0 COUtNiNjNk endl ; 输出这三位数组成的数字 )解析:解析:(1)该程序功能是输出百、十、个位都不相同的组合。它的解题思路,利用三层循环,对百、十、个位数字是否相同进行判断。 (2)从已给部分源程序的 main 主函数开始入手,核心函数 void fun(int N4)中的 N4参数为存放输入的四位数字的数组。 解题思路 (1)利用三层循环,对要三位数字是否相同进行判断。 (2)如果三位数不同,并且百位不为 0。那么依次输出这三位数,即为
6、三位数组成的数字。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示学生学号的类CStudentlD,但类 CStudentlD 的定义并不完整。 运行结果为: 学生的学号为:200805 学生名为:李伟 删除学生学号为:200805 请按要求完成下列操作,将类 CStudentlD 的定义补充完成: (1)定义 class CStudentlD 类的私有数据成员 IDvalue 表示学生的学号,为 long 型的数据。请在注释*1*之后添加适当的语句。 (2)完成默认构造函数 CStudentlD 的定义,使 CS
7、tudentlD对象的默认值为:id=0,并把学生的学号赋给 IDvalue,并输出“赋给学生的学号:”及学号。请在注释*2*之后添加适当的语句。 (3)完成默认析构函数 CStudentlD 的定义,使 CStudentlD析构时输出“删除学号:”及学号。请在注释*3*之后添加适当的语句。 (4)完成默认构造函数 CStudentlnfo 的定义。对应两个默认参数:要求定义 char stName,其默认值为“no name”,定义 long stlD,其默认值设为 0,并使它们赋值给相应的类数据成员。请在注释*4*之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他
8、内容。 #include #include C1asS CStudentID *1*定义私有数据成员 public: *2*定义默认构造函数 IDvalue=id; coutIDvalueIDvalue学生名为:StName_正确答案:(正确答案:(1)添加语句:long IDvalile; (2)添加语句:CStudentID(10ng id=0) (3)添加语句:CStudentID() (4)添加语句:CStudent 工 nfo(char 8tName=“no name”,long stID=O):id(stID)解析:解析:(1)第 1 个标识下完成 CStudentlD 类的私有数
9、据成员 IDvalue 的定义,为 long 型的数据,因此第 1 个标识下应添加“longIDvalue;”o (2)构造函数完成类成员变量的初始化,构造函数名和类名一致,该构造函数带有一个参数 id,其默认值为 id=0,因此第 2 个标识下应添加“CStudentlD(long id=O)”。 (3)析构函数也和类名一致,并且在前面加“一”以和构造函数区分,析构函数没有参数,故第 3 个标识下应添加“CStudentlD()”。 (4)CStudentlnfo 包含的学生学号信息保存在类 CStudentlD的实例中,可通过调用类 CStudentlD 的自定义构造函数初始化,第 4 个标识下应添加“CStudentlnfo(char stName=”no name“,long stlD=0):id(stlD)”。