国家二级C++机试(操作题)模拟试卷337
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:
1, 2, 3, 4, 5,
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在
//********error********的下面。
#include
Class TestClass
{
//********error
TestClass(int i)
{
m_i =i;
}
void print()
{
cout<<++m i<<’,’;
}
public:
int m_i;
);
int main()
{
//********error********
int i();
TestClass data(0);
while(i>5)
{
//********error********
i++;
data.print();
}
cout<<endl;
return 0;
}
(1)public:TestClass(int i)
(2)int i(10);
(3)i–;
解析:(1)打开moidl.cpp调试程序,显示错误提示为第一标识下“modi1.cpp(20):error C2248:TestClass::TestClass’:cannot access private memberdeclared in class TestClass’”,提示类TestClass中的构造函数TestClass被定义为私有的,无法获得,所以这里应该是public,即“public:TestClass(int i)”。
(2)题目中要求输出结果为1,2,3,4,5,即循环5次。第三个表示while循环条件是i大于5就进行循环。“int i();”应该实现变量i的初始化,题干中要求不能删除i初始化中的括号,所以在括号中添加i的初始值。大于5且循环5次,所以i的初始值为10,而while循环中对i的操作应该是i–,这样第二个和第三个标示下应该是“int i(10);”和“i–;”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。程序的功能是寻找1~500以内的亲和数并显示出来,函数amicableNum(int m,int n)判定两个数是否是亲和数。
亲和数的定义为:两个数m和n,如果n的所有因子之和(因子除掉自身)等于m,且m的所有因子等于n,则m、n是互为亲和数。
注意:不能修改程序的其他部分,只能补充amicableNum(int m,int n)函数。
#include
int amicableNum(int n)
{
int sum=0;
for(int i=1;i<n; i++)
{
if(n%i==0)
{
sum+=i;
}
}
return sum;
}
bool amicableNum(int m,int n)
{
}
void main()
{
cout<<\\
if(amicableNum(m)==n
&&amicableNum(n) ==m)
return 1;
return 0;
解析:(1)程序中定义了两个amicableNum()函数,由于参数个数不同重载了amicableNum()函数,函数amicableNum(int n)返回n的因子和,而函数amicableNum(int m,int n)则是判断m和n是不是亲和数,两个函数功能并不相同。
(2)在amicableNum(int m,int n)函数中,可调用amicableNum (int n)函数求m和n的因子和,然后比较两个因子和,如果两个因子和相同则返回真,否则返回假。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。类Person完成对人的姓名和年龄的绑定。函数fun()获得年龄比较大的姓名。然后输出这个姓名到屏幕。
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成类的构造函数, 请在注释//********1********后添加适当的语句。
(2)完成构造函数对姓名的赋值,请在注释//********2********后添加适当的语句。
(3)定义类的友元函数fun(),请在注释//********3********后添加适当的语句。
(4)补充函数fun()的年龄比较,请在注释//********4********后添加适当的语句。
注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
#include
Class Person
{
public:
//********1********
{
int i;
for(i=0;sUserrName[i]!=0;
i++1
{
m UserName[i]=
suserrName[i];
)
//********2********
m old=nold;
}
private:
char m_UserName[32];
int m_Old;
//********3********
};
void fun(char*s,Person&personl,
Person&person2)
{
//********4********
if( )
{
for(int i=0;personl.
m UserName[i]!=0;i++)
{
s[i]=personl.m
UserName[i];
s[i+1]=0;
}
}
else
{
for(int i=0;person2.m
UserName[i]!=0;i++)
(
本文档预览:3600字符,共4653字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载