1、国家二级 C+机试(操作题)模拟试卷 383及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,但该程序运行时有错,请改正程序中的错误,使该程序的输出结果为: 20, 15 15 20 注意:错误的语句在 *error*的下面,修改该语句即可。 #include *error* void Exchangel(int m, int n) int t=m; m=n; n=t; *error* void Exchange2(int m, int n) int t=*m: *m=*n; *n=t: void msin() int b=20; int a=15
2、; Exchangel(a, b); cout #include #define MAXLEN 1024 char* convert(char*des, char*str) void main() char deStMAXLEN; char*string=“abc def ”; cout Class TestClass public: *1* *2* No=no; for(int i=0; strNamei!: 0; i+) Namei=strNamei; Namei+1=0; void print() *3* TeStClass() *4* , int main() TestClasS St
3、u; stu Set(111, “Garfield”); stu print(); return 0; 国家二级 C+机试(操作题)模拟试卷 383答案与解析 一、基本操作题 1 【正确答案】 (1)void Exchangel(int m, int&n) (2)void Exchange2(int*m, int*n) (3)Exchange2( a, &b); 【试题解析】 程序中定义了两个交换函数,分别采用传地址和传引用的方式来实现交换。 (1)由程序的运行结果可知,分别调用 Exchangel()和 Exchange20后, a和 b的值两次发生交换,因此 Exchangel()函数和
4、Exchange20函数均为实现交换的函数。参数传递方式有多种,将变量名作为实参和形参、传递变量的指针和传送引用方式,将变量名作为实参和形参方式,这种传递是单向的,在函数执行过程中形参的值发生变化不会传回实参,而指针和引用方式在函数执行过程中形参会影响实参。显然这里不是采用变量名作为实参和形参的单向传递方式,而是采用的传地址或传引用的方式,在 Exchange10体内没有出现指针运算符 “*”,因此可知Exchange10函数是采用的传引用的方式,因此第 1个标识下应改为 “void Exchangel(int&m, int&n)990 (2)由 1分析可知, Exchange20数内有指针运
5、算符 “*”,可知其是采用的传指针的方式作为参数传递,因此第 2个标识下应改为 “void Exchange2(int*m, int*n)99。 (3)Exchange20参数为 int型数据指针,因此调用 Exchange20时应传入指针而不是变量名,故第 3个标识下应改为 “Exchange2(&a, &b); ”。 二、简单应用题 2 【正确答案】 Int length=0; int i; for(1ength=0 ; Str1ength !=NUL L; length+); 求数组长度 length一一; 下标从 0 len一 1,下标减 1表示最后一个字符的下标值 for(i=len
6、gth; i=0; i一一 ) i f(stri!=) 判断结尾是否有空格,从后往前判断直到不是不是空格了跳出循环 break; for(length =0; length=i; length+) deslength=Strlength; 从前面开始,逐个将 str中的字符拷贝 到 des数组中,不含最后面的空格 des1ength=NULL; 最后一个字符为 NULL return des; 【试题解析】 函数 convert(cha*des, char*str)实现的功能是将字符串最后面有空格删除,并将转换后的数据放到 des,返回指针,可以将字符串最后空格前的所有所有字符拷贝到 des中
7、,关键是确定下标从那开始到最后都是空格。 三、综合应用题 3 【正确答案】 (1)添加语句: int No; char Name32; (2)添加语句: void Set(int no, char*StrName) (3)添加语句: cout“No=”N0endl”Name=: ”Nameend1; (4)添加语句: No=Name0=0; 【试题解析】 本题程序的功能是利用成员函数 set设置类成员数据数值,并利用成员函数 print输出成员数值。在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类 TestClass和其构造函数实现各种输出操作。