国家二级C++机试(操作题)模拟试卷548
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
1
0
注意:错误的语句在//******error******的下面,修改该语句即可。
1 #include<iostream.h>
2 struct Struct
3 {
4 union
5 {
6 int a;
7 char c[4];
8 };
9 int b;
10 //******error******
11 }
12 void main()
13 {
14 Struct m;
15 //******error******
16 m.c[0]=0;
17 m.c[1]=0;
18 m.c[2]=0;
19 //******error******
20 m.c[3]=1;
21 m.b=m.c[3];
22 cout<<m.a<<end1<<m.b<<end1;
23 }
(1)};
(2)m.c[0]=1;
(3)m.c[3]=0;
解析:程序当中定义了一个结构体Struct,Struct内含有2个成员变量:共用体和整型变量b,共用体由整型变量a和字符数组c[4]组成,int型变量32位,而c[4]刚好也是32位,因此a和字符数组c[4]存放在同一内存单元中。
(1)第1表示在结构体定义内,结构体定义的一般形式为:
struct<结构体名>
{ <成员列表>
}<变量名列表>;
这里定义的结构体并没有变量名列表,但是结构体定义一定是以“;”结束的,因此第1个标识下应改为“};”0
(2)根据题目要求程序输出结果分别为“1”和“0”,即结构体变量m的成员变量a的值为1,b的值为0,又a和字符数组c[4]存放在同一段内存单元中,因此a的值可由数组c[4]决定(两者使用同一地址单元),故c[0]表示a的低8位,c[1]为a的第二个8位,c[2]为a的第三个8位,c[31为a的最高8位,a=0,所以c[0]=1,c[1]=c[2]=c[3]=0,故第2个标识下应改为“m.c[0]=1;”。
(3)由(2)分析可知第3个标识下应改为“m.c[3]=0;”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(char*des,char*str,char c,char*str2)的功能是:
如果str中包含字符“!”,则替换成’a’;
如果str中包含字符“&”,则替换成’b’;
如果str中包含字符“*”,则替换成str2。
并用函数返回目标转换后的指针。
注意:只能补充函数convert(char*des,char*str,char*str2)。
1 #include<iostream.h>
2 #include<cstring>
3 #define MAXLEN 1024
4 void convert(char* des,char*str,char*str2)
5 {
6
7 }
8 void main()
9 {
10 char dest[MAXLEN];
11 char* str=’’!&cefghi*!&’’;
12 char* dtr2=’’jklm’’;
13 convert(dest,str,str2);
14 cout<<dest<<end1;
15 return;
16 }
1 des[0]=0;
2 char temp[2]={0,0};
3 for(int i=0;str[i]!=NULL;i++)
4 {
5 if(str[i]==’!’)
6 {
7 temp[0]=’a’; //替换成’a’
8 strcat(des,temp);
9 }
10 else if(str[i]==’&’)
11 {
12 temp[0]=’b’;
13 strcat(des,temp);//替换成’b’
14 }
15 else if(str[i]==’*’)
16 {
17 strcat(des,str2);//替换成str2
18 }
19 else
20 {
21 temp[0]=str[i]j
22 strcat(des,temp);//其他情况则添加在后面
23 }
24 }
解析:函数convert(char*des,char*str,charc,char*str2)的功能是将str中包含的特定字符替换成其他字符,因此可利用循环搜索str字符串,找到特定字符后进行替换。
(1)由审题分析可知,利用循环中不断检索str字符串每一个字符,循环变量i从0开始,直到到了sir字符结束,即srt[i]=NULL为循环判断结束条件。
(2)在循环体内,用ifelse语句判断是不是“!”、“&”或“*”这些特定的字符,如果是这些特定的字符则进行相应的替换,如果不是则将该字符直接加在des后面。
(3)字符串的连接可以使用字符串连接函数strcat(),将新字符连接在des后面,即strcat(des,temp)。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)定义私有常量PI,请在注释//********1********后添加适当的语句。
(2)完成类的私有常量PI的赋值,以及完成对半径radius的赋值。请在注释//********2********后添加适当的语句。
(3)完成计算圆面积的函数GetArea()。请在注释//********3********后添加适当的语句。
(4)完成计算圆周长的函数GetGirth()。请在注释//********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
1 #include<iostream.h>
2 #define CONST PI 3.141592
3 class CCircle
4 {
5 private:
6 double radiu
本文档预览:3600字符,共5040字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载