国家二级C++机试(操作题)模拟试卷338
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
1
0
注意:错误的语句在//********error********的下面,修改该语句即可。
#include
struct struct
{
union
{
int a;
char c[4];
};
int b;
//********error********
}
Void main()
{
struct m;
//********error********
m.c[0]=0;
m.c[1]=0;
m.c[2]=0;
//********error********
m.c[3]=1;
m.b=m.c[3];
cout<<m.a<<endl<<m.b<<endl;
}
(1)};
(2)m.c[0]=1;
(3)m.c[3]=0;
解析:(1)第1表示在结构体定义内,结构体定义的一般形式为:
struct
{
}:
这里定义的结构体并没有变量名列表,但是结构体定义一定是以“:”结束的,因此第1个标识下应改为“};”。
(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[3]为a的最高8位,a=0,所以c[0]=1,c[1]=c[21=c[3]=0,故第2个标识下应改为“m.c[0]=1;”。
(3)由(2)分析可知第3个标识下应改为“m.c[3]=0:”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。sum(intn)计算所有n的因子之和(不包括1和自身)。
注意:不能修改程序的其他部分,只能补充sum()函数。
#inClude
int sum(int n)
{
}
Void main()
{
cout<<sum(10)<<endl;
cout<<Sum(200)<<endl;
Cout<<Sum(400)<<endl;
retUrn;
}
int all=0;
for(int i=2;i<n;i++)
{
if(n%i==0)
{
all+=i;
}
}
return all;
解析:(1)数n的因子是指为整除n等于0的所有自然数的集合。
(2)为了实现计算所有n的因子之和且不包含1和自身,函数中定义一个变量all用来保存求和结果,并为最终结果在函数结束时返回;
(3)在循环中逐个寻找n的因子,为了在计算中排除掉1和n本身,因此循环变量i的变化范围为从2到n-1。
(4)如果n%i==0,说明i是n的因子,因此将i加到all上。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)利用define定义常量TRUE为1,定义常量FALSE为0,请在注释//********1********后添加适当的语句。
(2)在类A2前增加A1的声明,请在注释//********2********后添加适当的语句。
(3)在类C1中声明友元函数bool func(A2& a,A1&b),请在注释//********3********后添加适当的语句。
(4)实现函数bool time(A2&obj1,Alaobj2)功能,检查两个类的值都为TRUE,则返回TRUE,请在注释//********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
//********1********
#define FALSE 0
//********2********
Class A2
{
private:
bool m A2;
friend bool func(A2&obj1,
A1&obj2);
public:
A2()
{
m A2=FALSE;
}
public:
Void SetA2(bool n)
{
m A2=n;
}
};
Class A1
{
private:
ool m A1;
//********3*********
public:
A1()
{
m A1=TRUE;
}
public:
Void setAl(bool n)
{
m A1=n;
}
};
bool func(A2& obj1,A1& obj2)
{
//********4********
return
}
int main()
{
A2 obj0;
A1 obj1;
cout<<func(obj 0,obj1)<<endl;
obj0.setA2(TRUE);
obj1.setA1(TRUE);
cout<<func(obj0,obj1)<<endl;
return 0;
}
(1)添加语句:#define TRUE 1
(2)添加语句:class A1;
(3)添加语句: friend bool func(A2&obj1,A1&obj2);
(4)
本文档预览:3600字符,共4039字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载