国家二级C++机试(操作题)模拟试卷329
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
Number=8
注意:错误的语句在//********error********的下面,修改该语句即可。
#include
class CMyClass
{
public:
//********error********
void&Get()
{
return&Number;
}
Void Set(int m)
{
Number=m;
}
void display()
{
cout<<\\
(1)void*Get()
(2)添加语句:CMyClass t;
(3)P=(int*)t.Get();
解析:(1)Get()的返回的是“return&Number;”,即返回Number的地址,主函数中P为整型指针,但是“P=t.Get();”有错误,因为Get()函数返回的不是整型指针,而应该是空指针(void),空指针可强制类型转换成其他类型的指针,第1个标识下应改为“void*Get()”。
(2)由于Get()函数返回空指针(void),要使P指向Get()函数的返回值,必须做强制类型转化,即第3个标识下应改为“P=(int*)t.Get():”。
(3)变量t可以使用Get()函数,说明t为CMyClass类对象。即第2个标识下应添加对象定义,故第2个标识下添加“CMyclass t;”。
简单应用题
2.使用VC6打开考生牛文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。函数num(char*str)实现返回字符串中非数字的个数。
例如:abc123abc45
返回输出:6
将函数num()%b充完整。
注意:请勿改动主函数。
#include
int num(char*str)
{
}
int main()
{
char str[1024];
cout<<\\
int nlamber=0:
for(int i=0;str[i]!=0 ; i++)
if( str[i] >’9’||str[i]<’0’)
//非数字字符
number++;
return number;
解析:(1)利用循环搜索数组str中的元素,循环变量从0开始,直到str[i]=0(到了字符数组的尾),不断地读取str中读取元素。
(2)每读到一个元素判断是否是非数字字符,即满足条件“str[i]>’9’‖str[i]<’0’”的字符为非数字字符,非数字字符个数加1,循环结束就得到了非数字字符的个数。
综合应用题
3.用VC6打开考生文件夹下的源程序文件modi3.cpp,这个程序完成输出到屏幕一些特定的信息,但工程有错误或者不完整,请完成以下功能:
(1)初始化m Nurn2的值为i,请在注释
//********1********后添加适当的语句。
(2)补充全局函数fun()使之能够调用类TestClass的成员变量,请在注释//********2********后添加适当的语句。
(3)初始化静态变量, 请在注释
//********3********后添加适当的语句。
(4)修改注释//********4********后的语句。
使得程序输出以下内容:
m_Num1=1
m_Num2=2
m_Num3=1
m_Num1=4
m_Num2=2
m_Num3=7
注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
#include
Class TestClass
{
public:
//********1********
TestClass(int i,int j)
{
m Num1=i;
m Num3+=i;
}
void Print()
{
cout<<\\
(1)添加语句:TestClass(int i,int j):m Num2(j)
(2)添加语句:friend void fun();
(3)添加语句:int TestClass::m Num3=0;
(4)将“Num.Add();”补充完整为:Num.Add(5);
解析:(1)根据“const int m Num2;”语句知道m Num2为类TestClass中的私有数据,另外,C++定义构造函数的初始化数据成员的方法中可以在原有函数末尾加一个冒号,然后列出参数的初始化表实现,即“TestClass(int i,int j):rn Num2(j)”。
(2)在C++中,如果在本类以外的其他地方定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中fun()在类TestClass以外的地方定义的,为了实现其对类TestClass中成员变量的调用,在类TestClass中补全“friend void fun();”,即声明fun()为类TestClass的友元函数。
(3)在C++中,初始化类中数据成员的格式可以是“类名class::参数=”,其中为要初始化参数的类型,“::”为作用域符号,说明参数是class中的参数,所以这里补全“int TestClass::m Num3=0;”。
(4)函数fun()中“Num.Add();”语句应该是调用类“TestClass”中的成员函数“voidAdd(int i)”。其定义中存在参数int i,所以注释下修改的语句缺少参数。
主函数首先调用“Num.Print();”,即实现题目中输出的前三条语句,而“funn();”语句实现后面三条语句的输出,即“m Num3=7”才是调用Num.Add的输出结果,即“m Num3+=i:”的计算结果。“TestClass Num(1,2);”中将i的值初始化为1,“m Num3”的值在上一次“Num.Print();”调用中为1,如果计算结果为7,那么Add(int i)中i的初始化值为5,即“Num.Add(5);”。
本文档预览:3600字符,共3456字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载