国家二级C++机试(操作题)模拟试卷423
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并且使程序输出的结果为:
a=7,b=0
a=8,b=10
注意:错误的语句在∥********error********的下面,修改该语句即可。
#include
class CObj
{
public:
∥********error********
friend void func(CObj&,int,
int);
void di splay()
{
∥********error********
cout<<“a=”<<a<“,b=”<<<<b
<<endl;
}
private:
int a,b;
};
void func(CObj&obj,int t)
{
obj.a=t;
obj.b=0;
}
void func(CObj&obj,int t,int j)
{
obj.a=t;
obj.b=j;
}
void mein()
{
∥********error********
CObj obj 1
func(obj 1,7);
obj 1.display();
func(obj 1,8,10);
obj 1.display();
}
(1)添加语句:
friend void func(CObj&,int);
(2)cout<<“a=”<<a<<“,b=”<<b<<endl;
(3)CObj obj 1;
解析:程序中定义了类CObj,其有两个成员变量a和b,通过友元函数func()可改变a和b的值,display()成员函数显示a和b的值。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(int n),求出nXn矩阵的对角线数字的平方和。如果n为奇数,则对角线交叉部位数字只参与一次计算。
注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#define MAX N 10
int XX[MAX N][MAX N];
int fun(int n)
{
}
void main()
{
int n;
do
{
cout<<”please input N(1<=N<10):”<<endl;
cin>>n;
if(n=1)
{
break;
}
}while(1);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<“please inputdata:”<<end1;
cin>>XX[i][j];
}
}
cout<<fun(n)<<end1;
return;
}
int data=0;
//初始化求平方和变量
for(int i=0; i<n;i++)
{
data+=XX[i][i]*XX[i][i];
//求正对角线平方和
if(i!=n—i一1)
data+=XX[i][n—i—1]*XX[i][n—i一1];//求逆对角线平方和
}
return data;
解析:本题函数中的功能是输出N行N列正方阵,然后求两条对角线上各元素之平方和。其中,假设矩阵行、列分别为i、j,那么对角线上的元素特点是主对角线上i=j,以及逆对角线j=n—i一1。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)定义私有数据成员year、month、day,分别用于年、月、日,它们都是int型的数据,请在注释
∥********1********后添加适当的语句。
(2)完成判断数据成员date2是否是闰年函数intDate::IsLeapYear0的定义,返回数据成员date2是否是闰年的值,是则返回1,否则返回0。请在注释 ∥********2********后添加适当的语句。
(3)设置SetData0的默认时间为:2004.12.1,请在注释 ∥********3********后添加适当的语句。
(4)完成主函数main(),完成输出date2 is aleapyear,请在注释 ∥********4********后添加适当的语句。
提示:公元纪年的年数可以被四整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。
注意:增加或修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
#include
using namespace std;
Class Date
{
public:
∥********3********
void SetDate(int y,int m,int n);
int IsLeapYear();
void Print()
{cout<<year<<“一”<<month
<< “一” <<day<< endl;}
private:
∥********1********
};
void Date::SetDate(int y,int
m,int d)
{
year=y;
month=m;
day=d;
}
int Date::IsLeapYear()
{
∥********2********
return
}
int main()
{
<本文档预览:3600字符,共4545字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载