国家二级C++机试(操作题)模拟试卷323
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使该程序的输出结果为:
100
注意:错误的语句在//********error********的下面,修改该语句即可。
#include
static int x=50;
int t=0;
int*func(int x,int y,int z)
{
t=t+x+y+z;
//********error********
return t;
};
Void main()
{
int y=30;
int x=10;
int z=20;
//********error********
x=x;
//********error********
cout<<func(x,y,z)<<endl;
}
(1)return&t;
(2)X=::x;
(3)cout<<*func(x,y,z)<<endl;
解析:(1)由审题分析可知,函数func(int x,int y,int z)返回的是整型数据指针,而第1个标识下的return t表示返回一个整型数据,和要求的返回数据类型不匹配,应改为“return&t;”。
(2)第2个标识下x=x表示局部变量x自己给自己赋值,调用func(x,y,z)函数后,返回的运算结果是30+10+20=60,与输出100不同,而全局静态变量x值为50,30+50+20=100,刚好满足条件,因此第2个标识下是将全局静态变量x的值赋给局部变量x,即第2个标识下应该为“X=::x;”,“::”表示的是引用全局变量。
(3)func(x,y,z)返回一个整型数据指针,通过该指针可以得到运算结果,而cout<<func(x,y,z)输出的fun(x,y,z)返回的地址值(变量t的地址值),而不是该地址内存储的变量的值(t的值),运行程序后会发现输出的是奇怪的一串数字,而不是我们所想要的100,应加上取指针运算符“*”,*func(x,y,z)为变量t,故第3个标识下应改为“tout<<*func(x,y,z)<<endl;”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s),该函数完成以下功能:
(1)把s中的大写字母转换成小写字母,把其中的小写字母转换成大写字母。并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。
例如:s=\\
(1)void WriteFile(char*s)中的命令语句:
ofstream out1,t
out1.open(\\
解析:(1)在WriteFile(char*s)函数中,利用标准流ofstream实现字符串写入文件modi2.txt。
(2)在fun函数中,利用for循环逐个判断字符是大写还是小写。
(3)如果是大写,那么加上32实现大写转换为小写。否则,就减去32,实现小写到大写的转换。最后调用前面实现的WriteFile函数,将字符串写入文件。
综合应用题
3.用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了多个类,但类不能达到输出要求,按照定义的输出修改函数,使得输出如下:
TestClass3
TestClass2
TestClass1
其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整。
(1)类TestClass2公共继承于TestClass1,请在注释//********1********后添加适当的语句。
(2)print函数为虚函数,请在注释//********2********后添加适当的语句。
(3)修改语句,使得P指定对象obj3,请在注释//********3********后添加适当的语句。
(4)修改语句,利用P调用print()函数,完成输出信息,注释//********4********后添加适当的语句。
注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
#include
using namespace std;
Class TestClass1
{
public:
void print(){
cout<<\\
(1)将“class TestClass2”补充完整为:Class TestClass2:public TestClass1
(2)将“void print()”补充完整为:virtual void print()
(3)将“p=obj3;”修改为:p=&obj3;
(4)将“p.print();”修改为:p->print();
解析:(1)题目1要求“类TestClass2公共继承于TestClass1”。从已有的类产生一个新的子类,成为类的派生。声明派生类的一般形式为:class派生类名:[继承方式]基类名。根据题目中的要求以及派生类的一般形式,第1个标识下添加语句“classTestClass2:public TestClass1 990
(2)题目2要求“print函数为虚函数”。在C++中,用virtual声明的函数为虚函数,因此第2个标识下的语句修改为“virtual void print()”。
(3)题目3要求“使得P指定对象obj3”。p为指针变量,obj3为类的对象,将一个指针变量指向另一个变量,只要把被指向的变量的地址赋给指针变量即可。取对象obj3地址的语句为&obj3,所以这里补全“p=&obj3;”。
(4)题目4要求“利用P调用print()函数”。C++中用\\
本文档预览:3600字符,共3069字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载