国家二级C++机试(操作题)模拟试卷437
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为:
30
130
注意:错误的语句在//*****error******的下面,修改该语句即可。
#include
int a=10;
class CObj
{
public:
CObj()
{
a=b=0;
}
void display()
{
//*****error******
cout<<a<<b<end1;
)
void func(int a)
{
//*****error******
a+=a;
}
void func2()
{
//*****error******
a+=a;
)
private:
int a,b;
};
void main()
{
CObj obj;
obj.func(3);
obj.display();
obj.func2();
obj.display();
}
(1)cout<<a<<b<<end1;
(2)this->a+=a;
(3)a+=::a;
解析:(1)成员函数display()打印变量a和b的值,即cout输出a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,因此第1个标识下应改成cout<<a<<b<<end1。
(2)在func(int a)中,参数a传递进来,其和成员变量a名字一样,因此第2个标识下的“a+=a”有歧义,从程序的运行结果来分析,CObj obi声明对象obj,初始化类成员变量a和b均为0,调用func函数后输出30,说明a为3,b为0,因此这里应该是成员变量与参数a的和赋给成员变量a,正确的写法是“this->a+=a;”。
(3)func2()函数虽然没有参数,但是成员变量a和全局变量a重名,第3个标识下“a+=a”也会有歧义,分不清楚是全局变量加倍还是类成员变量加倍或者其他情况,调用func2()函数后,输出“130”,说明a为13,b为0,因此是成员变量与全局变量a的和赋给成员变量a,正确的写法是“a+=::a;”,“::a”表示是全局变量a。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。函数num(char *str)实现返回字符串中非数字的个数。
例如:abc123abc45
返回输出:6
将函数num()补充完整。
注意:请勿改动主函数。
#include
int num(char *str)
{
}
int main()
{
char str[1024];
cout<<\\
int number=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)完成构造函数,设置数组元素的个数为0,请在注释//********1********之后添加语句。
(2)完成函数AddMember(int n),如果参数n包含在类的数据成员数组中,则返回0,否则把数据写入数组,然后返回1,请在注释//********2********之后添加语句。
(3)完成函数DelMember(int n),如果变量在数据中,则删除该变量,并且返回1,如果不存在则返回0,请在注释//********3********之后添加语句。
(4)完成成员函数islnclude(int n)的定义,该函数检查参数n是否在类的数据成员数组elems中,如果在返回1,否则返回0。请在注释//********4********之后添加语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
#define MAX_LENGTH 500
class CArray
{
public:
CArray()
{
//********1********
}
int AddMember(int n)
{
for(int i=0;i<length;i++)
{
//********2********
if(Array[i]=n)
return 0;
)
Array[length++]=n;
return 1;
}
int DeiMember(int n)
{
int i;
for(i=0;i<length;i++)
{
if(Array[i]==n)
{
break;
}
}
//********3********
if()
{
for(;i<length-1;i++)
{
Array[i]=Array[i+1];
)
length–;
return 1;
}
return 0;
}
int isInclude(int n)
{
for(in
本文档预览:3600字符,共5058字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载