国家二级C++机试(操作题)模拟试卷342
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请补充程序中的丢失部分,使得程序运行。可以在修改处增加或者删除一条语句。
本程序完成以下功能:
(1)获得输入的两个数字x1,x2(例如x1=4,x2=2);
(2)输出两个中较小的一个(例如输出2);
(3)计算x1/x2如果x2等于0,返回.1(输出结果2);
(4)输出x1+x2的结果(输出结果6);
(5)输出x1+1的结果(输出结果5);
(6)输出x2-1的结果(输出结果1)。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在
//********error********的下面。
#include
void main()
{
int x1;
int x2;
int x3;
cout<<\\
(1)x3 = (x1<x2)?x1:x2;
(2)x3 = (x2)?x1/x2:-1;
(3)x3 = (x1++) + (x2–);
解析:(1)第1个标识下“x3=(x1>x2)?x1:x2;”语句是判断x1与x2其中哪个相对较小,并将其赋值给x3。条件运算符的格式:表达式1 7表达式2:表达式3。执行顺序是先求解表达式1,若非则求解表达式3,此时表达式3的值就作为整个条件表达式值。所以求x1和X2中较小的一个,如果x1<x2为真,那么x1的值赋给x3,否则x2的值赋给x3,即第1个标识下为“x3:(x1<x2)?x1:x2;”。
(2)同理,第2个标识下计算x1/x2如果x2等于0,返回-1。即“x3=(x2)?x1/x2:-1;”。
(3)题干中求x1+1,而-x1是x1-1,所以改为x1++。同理x2++改为x2-。即“x3=(x1++)+(x2–);”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成以下两个函数:
(1)fun1(int n1;求出n的阶乘,必须使用递归调用。
(2)fun2(int n);求出n的阶乘,不能使用递归调用。
如果n小于1则返回0。
注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
//必须使用递归
int funl(int n)
{
};
//不能使用递归
int fun2(int n)
{
}
void main()
{
int i;
cout<<\\
int funl(int n)//使用递归计算阶乘
{
if(n<=0)//n小于等于0,直接返回0
return 0;
if(n==1) //n等于1直接返回1
return 1;
return n*funl(n-1);//n大于等于1,通过递归计算n!
j;
//不使用递归计算阶乘
int fun2(int n)
{
if(n<=0)//n小于0,直接返回0
return 0;
int res=1; //初始化阶乘存放变量res
for(int i=1;i<=n;i++) //通过循环计算n!
{
res*=i;
}
return res;
}
解析:(1)进入fun1函数,根据前面的定义,它对阶乘算法的实现可以分为三种情况,一是当n小于或等于0时,返回0即可;二是当n大于1时应该用什么程序来实现阶乘的计算:三是当n=1时,函数直接返回1即可。
(2)计算n!的值,先定义一个放阶乘值的变量res,初值为1,通过循环的方法,用累乘器“res*=i;”实现n!。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示坐标的类TestClass1,但类TestClass1的定义并不完整,按要求完成下列操作,将类的定义补充完整。
(1)声明TestClass2类为TestClass1类的友元类,请在注释//********1********后添加适当的语句。
(2)完成类的构造函数,分别对成员变量赋值,请在注释//********2********后添加适当的语句。
(3)完成类的构造函数,分别对成员变量赋值,请在注释//********3********后添加适当的语句。
(4)完成计算平面上两点之间的距离函数Distance,计算的方法如下:X坐标之差的平方与Y坐标之差的平方之和的开方。请在注释
//********4********后添加适当的语句。
注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
#include
#include
using namespace std;
Class TestClass1
{
//********1********
public:
//********2********
{
X=a;
Y=b;
}
//********3********
{
X=a;
Y=0;
}
Void print()
{
cout<<\\
(1)添加语句:friend class TestClass2;
(2)添加语句:TestClass1(float a,float b)
(3)添加语句:TestClass1(float a)
(4)添加语句:
result=sqrt((p.X—q.X)*(p.X—q.X)+(p.Y—q.Y)*(p.Y—q.Y));
解析:(1)题目1要求“声明TestClass2类为TestClass1类的友元类”。C++中声明友元类的一般形式为friend类名;,所以这里补全“friend classTestClass2;”。
(2)题目2要求“完成类的构造函数,分别对成员变量赋值”。程序中TestClass1类的构造函数缺少定义,构造函数首部的一般格式为:构造函数名(类型1形参1,类型2形参2,……),所以在第2个标识下补全“TestClass1(float a,float b)”。
(3)题目3要求“完成类的构造函数,分别对成员变量赋值”。同理,第三个标识下补全“TestClass1(float a)”。
(4)题目4要求“完成计算平
本文档预览:3600字符,共3753字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载