11年期末CPP训练题(5)
C++程序设计期末试卷2011-2012-2-A卷及答案
—南昌大学考试试卷—2011-2012-2学期《C++程序设计》期末考试参考答案(A卷)一、单项选择题(每小题2分,共30分)二、填空题(每空1分,共20分)【1】main 【2】 6 【3】 2 【4】 3【5】double 【6】 2.0 【7】m-(m/n)*n 【8】struct【9】12 【10】循环【11】switch 【12】构造【13】析构【14】友元函数15】数据成员【16】成员函数【17】Nan 【18】私有的(private)【19】x %2 【20】x/2三、程序阅读题(每小题4分,共24分)1、 1 5 7 11 13 17 19S=732、A=2, B=20A=3, B=353、S=404、There are 2 Points.There are 7 Points.There are 2 Points.5、S=226、31129四、程序设计题(每小题10分,共20分)1、#include<iostream>using namespace std; // 1分void main(){int i,max,a[10]; //1分float avg,s=0; //1分for(i=0;i<10;i++)cin>>a[i]; //1分max=a[0]; //1分for(i=0;i<10;i++) //1分{s+=a[i]; //1分if(a[i]>max)max=a[i]; //1分}avg=s/10; //分cout<<"max="<<max<<endl;cout<<"avg="<<avg<<endl; //1分}2、#include"iostream.h" // 1分class Rect // 1分{private:float Length,Width; // 1分public:Rect (float L,float W) // 1分{Length=L;Width=W;} // 1分double GetS(){return Length*Width;} // 2分};void main(){Rect obj(3.0,4.0); //2分cout<<"S="<<obj.GetS()<<endl; // 1分}。
(完整版)C++语言程序设计试题
内蒙古广播电视大学 2010-2011 学年度第二学期《C++语言程序设计》期末试题密封线内一、填空(每空 2 分,共 20 分)不 1.C++源程序文件扩展名为 。
要2.unsigned long 型数据占字节存储空间。
写3.执行语句 cout<<"d :\\data\\c++\\test.exe";后,输出结果是。
参 4.表达式 8|3 的结果是。
考 5.全局变量和 若在定义时未进行初始化,则自动初始化为 0。
内 6.将 s 初始化为值是"Hello!"的指针常量,初始化语句是。
容7.类中的成员只能为该类的成员函数及该类的派生类中的成员函数访问,则应加上访问属性 。
8. 定义输出文件流 f ,并以追加数据方式打开相应文件"a :aaa.dat",定义 f 的语句是。
9. 设文件 f.cpp 中的一个函数要访问在另一个文件中定义的 int 型变量 x ,则在f.cpp 中 x 应定义为。
10. 函数模板的说明格式是:template函数定义。
二、单项选择题(每空 2 分,共 20 分)1. 类型修饰符 unsigned 修饰()类型是错误的。
A charB intC long intD float2. 下列变量名中,()是合法的。
A _varB bye-byeC intD 123_cc3.设 int a=3,* p=&a ;,则*p 的值是( )。
A 变量 a 的地址值B 无意义C 变量 p 的地址值D 34. 设 int m=0;,下列表示引用的方法中,()是正确的。
A int &x=m ;B int &y=10;C int &z ;D float &t=&m5. 循环 for(int i=0,x=0;!x&&i<=5;i++);的循环体执行次数是()。
11年期末CPP训练题(4)
① ② ③ ④ ⑤
二、类、继承及多态性 3.下面的程序有 5 个错误,已用下划线标示。将你认为正确的语句写在程序 后面: #include <iostream.h> class Student { int id; //学号 int *score; //成绩数组指针 const ①int M=2; //代表当前学生科目数的常量,缺省值为2 public: Student(int id,int *score,int m=2); virtual ~Student(); void PrintStudent(); }; Student::Student(int id,int *score,int m) ② // 为 M 赋初值 { this->id=id; this->score=new int[M]; for(int i=0;i<M;i++)
① ② ③ ④ ⑤
第 6 页 共 6 页
cin >> ⑤pB[j].salary; // 输入数组成员 for(int k=0; k<N; k++)
第 1 页 共 6 页
PrintSalary(pA[i]); } 改正的语句:
① ② ③ ④ ⑤
2.下面的程序有 5 个错误,已用下划线标示。将你认为正确的语句写在程序 后面: #include <iostream.h> double* fn1(const double* pd) { static double ad=32; ①ad += pd; cout <<"fn value is: " <<*pd <<endl; ②return ad; } double& fn2(③const double& rd) { double ad=32; rd += ad; cout <<"fn value is: " << rd <<endl; ④return &rd; } void main() { double a=345.6; const double* pa=fn1(&a); cout <<*pa <<endl;
全国2011年10月高等教育自学考试C++程序设计试题
全国2011年10月高等教育自学考试C++程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的-请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.C++中注释“/*”的有效范围是()A.从“/*”开始到行尾B.从“/*”开始后不终止C.从“/*”开始到“//”为止D.从“/*”开始到“*/”为止2.如想使用std命名空间,正确的程序语句是()A.using std;B.namespace std,C.using namespace;D.using namespace std;3.下列选项中不是C++关键字的是()A.bool B.int C.float D.var4.用于标识长整型常量的前缀或后缀是()A.无前后缀B.后缀L或l C.前缀零D.前缀0x5.对于new类型名[size]描述正确的是()A.申请可以存储size个字节的空间B.申请可以存储1个该数据类型的空间C.申请可以存储size个该数据类型对象的空间D.申请可以存储1个字节的空间6.使用下列哪个流格式控制符可以设置转换基数为十六进制()A.dec B.oct C.hex D.endl7.构造函数用于()A.定义对象B.初始化对象C.清除对象D.普通计算8.设函数void swap(int,int)将交换两形参数值,如有两整型变量int a=10;int b=15,则执行swap(a,b);之后,a,b值分别为()A.15,10 B.15,15 C.10,15 D.10,109.设函数void subone (int)将形参值减1,如有整形变量int b=10;则执行subone(b)后,b的值为()A.9 B.10 C.11 D.未知10.C++中函数返回值类型不可以是()A.引用B.指针C.结构D.数组11.声明函数int Func(int a=0,int b=3,int c=4)相当于声明了几个函数形式()A.1 B.2 C.3 D.412.C++中专门定义一个仅在模板中使用的参数类型的关键字是()A.const B.inline C.short D.typename13.对于类中的成员,使用private修饰,表明该成员的访问权限是()A.公有的B.私有的C.保护的D.不可见的14.使用new创建的对象,对其生命周期描述正确的是()A.由系统决定B.由用户控制C.全局生命周期D.永久存在15.析构函数被调用的时间点是()A.对象被创建时B.对象被销毁时C.不会被调用D.主函数被调用时16.对象的构造函数调用顺序取决于()A.对象成员在初始化列表中给出的顺序B.对象成员在类中声明的顺序C.对象成员与在初始化列表中顺序和类中声明顺序均有关D.随机顺序17.下列对静态成员函数描述正确的是()A.静态成员函数中可使用1个this指针B.静态成员函数中不能使用this指针C.静态成员函数中可使用多个this指针D.静态成员函数中只可使用1个that指针18.友元的声明可出现在()A.类的私有部分B.类的公有部分C.类的保护部分D.类的任何部分19.在下列派生中,子类和父类间是isa关系的是()A.private B.protected C.public D.publish20.面向对象不仅进行功能抽象,还要进行()A.动态抽象B.消息抽象C.数据抽象D.算法抽象二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。
11年期末CPP训练题(2)
11年C++期末训练题第二部分:填代码题一、变量、语句及函数1.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。
例如,输入的两个字符串分别为“12345”和“12344”,则输出为1,请填空。
#include<iostream.h>void main(){char s1[100],s2[100];cin>>s1>>s2;for(int i=0;① && ;i++)// 判断s1中第i个字符不为空,且两字符串中第i个字符相同i++;int diff=② ;// 计算两字符串中第i个不同字符的ASCII码之差cout<<diff<<endl;}2.下列程序通过把类Distance定义为类Point的友元来实现计算两点之间距离的功能。
请完成该程序。
#include<iostream.h>#include<math.h>class Point{public:③ ;// 将class Distance说明为友元类Point(④ )// 写出构造函数的参数{mX = x; mY = y;}void Print(){cout<<"X="<<mX<<endl;cout<<"Y="<<mY<<endl;}private:double mX, mY;};#define SQR(x) ((x)*(x))class Distance{public:double Value(Point &p, Point &q){double result= ⑤ ;// 计算两点之间距离return result;}};void main(){Point p(3.1,5.7), q(2.6,4.8);Distance d;cout << "Distance=" << d.Value(p,q) << endl; }3.以下程序的功能是计算∑==nk k s 0!,请填空。
C++程序设计真题2011年10月
C++程序设计真题2011年10月(总分:100.00,做题时间:90分钟)一、单项选择题(总题数:20,分数:20.00)1.C++中注释“/*”的有效范围是( )A.从“/*”开始到行尾 B.从“/*”开始后不终止C.从“/*”开始到“//”为止 D.从“/*”开始到“*/”为止(分数:1.00)A.B.C.D. √解析:[解析] C++有两种注释方式:一种是沿用C语言的从“/*”开始,到“*/”结束的注释方式;另一种是更灵活的注释方式“//”,注释的有效范围从“//”至本行结束。
2.如想使用std命名空间,正确的程序语句是( )A.using std; B.namespace std;C.using namespace; D.using namespace std;(分数:1.00)A.B.C.D. √解析:3.下列选项中不是C++关键字的是( )A.bool B.intC.float D.var(分数:1.00)A.B.C.D. √解析:4.用于标识长整型常量的前缀或后缀是( )A.无前后缀 B.后缀L或lC.前缀零 D.前缀0x(分数:1.00)A.B. √C.D.解析:[解析] 后缀L或l用于标识长整型常量,前缀零用于标识八进制常量,前缀0x用于标识十六进制常量。
5.对于new类型名[size]描述正确的是( )A.申请可以存储size个字节的空间B.申请可以存储1个该数据类型的空间C.申请可以存储size个该数据类型对象的空间D.申请可以存储1个字节的空间(分数:1.00)A.B.C. √D.解析:6.使用下列哪个流格式控制符可以设置转换基数为十六进制( )A.dec B.octC.hex D.endl(分数:1.00)A.B.C. √D.解析:[解析] dec:设置转换基数为十进制;oct:设置转换基数为八进制;hex:设置转换基数为十六进制;endl:输出一个换行符并刷新流。
7.构造函数用于( )A.定义对象 B.初始化对象C.清除对象 D.普通计算(分数:1.00)A.B. √C.D.解析:8.设函数void swap(int,int)将交换两形参数值,如有两整型变量int a=10;int b=15;则执行swap(a,b);之后,a,b值分别为( )A.15,10 B.15,15C.10,15 D.10,10(分数:1.00)A.B.C. √D.解析:[解析] 函数void swap(int,int)使用对象作为函数参数,即将实参对象的值传递给形参对象,这种传递是单向的。
2011年沈阳工业大学C++期末考试题
cout<<sp[3]<<endl;
结果:
2.
int y=4;
do{
cout<<'*' ;y--;}
while(y+2);
结果:பைடு நூலகம்
3.
int func(int *a,int n)
{
int sx=1;
for(int i=0;i<n;i++)
sx+=*a++;
return sx;
}
voidmain()
{int a[]={2,5,6,9,4,9,4,8,1,2,3,4};
cout<<(func(&a[4],3)+func(a,4))<<endl;
}
结果:
4.
class A
{public:
A()
{cout<<"A的构造函数"<<endl;}
};
classB
{A a;
public:
B(){cout<<"B的构造函数"<<endl;}
1.类Derived有哪些数据成员?
2.类Derived中哪些数据成员可以在类外被访问?
3.Base类和Derived类之间是什么关系?
班级
学号
姓名
得分
四、阅读程序,写出其运行结果。结果写在本题后(前5题2分,第6题4分,第7题6分,共20分)。
1.
inta[10]={9,8,7,6,5,4,3,2,1},*sp=a;
cpp期末复习题
C++练习题一一、选择题1.C++源程序文件扩展名为( )。
A..h B..cpp C..1ib D..obj2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是( )。
A.cin B.cout C.cerr D.clog3.对于类中没有设置访问属性的数据成员,其默认为( )。
A.public B.protected C.private D.static4.下列关于类和对象的叙述中,错误的是( )。
A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系5.类的构造函数是在定义该类的一个( )时被自动调用执行的。
A. 成员函数B. 数据成员C. 对象D. 友元函数6.派生类的对象可以访问以下哪种情况继承的基类成员( )。
A.私有继承的私有成员B.公有继承的私有成员C.私有继承的保护成员D.公有继承的公有成员7.int Func(int,int);不可与下列哪个函数构成重载( )。
A.int Func(int,int,int);B.double Func(int,int);C.double Func(double,double);D.double Func(int,double);8.假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( )。
A.int AA::a() B.int AA:a()C.AA::a() D.AA::int a()9.设函数void swap(int,int)将交换两形参的值,如两整型变量int a=10;int b=15;则执行swap(a,b)后,a、b值分别为( )。
A.10,10 B.10,15C.15,10 D.15,1510.当一个类A或函数f()被声明为另一个类B的友元后,类A或函数f()能够直接访问类B的( )。
A.只能是公有成员B.只能是保护成员C.只能是除私有成员之外的任何成员D.任何权限的成员二、填空题1.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用_________头文件。
2011~2012年度c++期末试题
2011~2012年度c++期末试试题一选择题(共50分每题2分)1.下列字符列中,可作为C++语言程序自定义标识符是()。
A.switchB.fileC.breakD.do2.运算符 +、<=、=、% 中,优先级最低的运算符是()。
A. +B.<=C.=D.%3.设变量m,n,a,b,c,d均为0,执行(m = a==b)||(n=c==d)后,m,n的值是()。
A.0,0B. 0,1C. 1,0D. 1,14. 字符串”vm\x43\\\np\102qu”的长度是()。
A. 8B. 9C. 16D. 175.设有代码“int a = 6;”,则执行了语句“a + = a - = a*a;”后,变量a的值是()。
A.0B. -24C. -40D.–606. void main(){ int x=-1;do{x=x*x;}while(!x);}下列说法正确的是()。
A.是死循环 B.循环执行两次C.循环执行一次 D.有语法错误7.下面有关for循环的正确描述是()。
A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来8.下面程序段()。
x=3;do{y=x--;if(!y) {cout<<”x”; continue;}cout<<”#”;}while(1<=x<=2);(1<=x) = 1,0 bool 型A.将输出## B.将输出##*C.是死循环 D.含有不合法的控制表达式9.以下正确的说法是()。
A.用户若需要调用标准函数,调用前必须重新定义B.用户可以直接调用所有标准库函数C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数10.在参数传递过程中,对形参和实参的要求是()。
鲁东大学2011年C++期末考试笔试试题
10、下列关于对象初始化的叙述中,正确的是(B)A)定义对象的时候不能对对象进行初始化B)定义对象之后可以显式地调用构造函数进行初始化C)定义对象时将自动调用构造函数进行初始化D)在一个类中必须显式地定义构造函数实现初始化11、设类Test中存在成员static int x,则下列哪种初始化方式是正确的( C )A) Test::int x=25;B) int x=25;C) int Test::x=25;D) int Test x=25;12、在继承中,派生类拥有的基类个数为(D )A) 0个 B) 1个 C) 多个 D) 至少1个13、下列关于基类和派生类关系的叙述中,正确的是()A)每个类最多只能有一个直接基类B)派生类中的成员可以访问基类中的任何成员C)基类的构造函数必须在派生类的构造函数体中调用D)派生类除了继承基类的成员,还可以定义新的成员14、关于动态联编的下列描述中,错误的是()A)动态联编是在编译时确定操作函数的B)动态联编是以虚函数为基础的C)动态联编是在继承的前提下的一种多态性D)动态联编时要求类的继承是公有的15、下列有关运算符重载的描述中,正确的是()A)运算符重载可以改变优先级B)运算符重载不改变语法结构C)运算符重载可改变其结合性D)运算符重载可改变操作数的个数二、程序填空题:本题共3小题,每空4分,满分20 分。
得分评卷人1、.将下面程序补充完整,使程序计算100以内所有可被7整除的自然数之和。
#include <iostream.h>void main(){int x=1;int sum=0;while(true){if(x>100) ____________;if(__________________)sum=sum+x;x++;}cout<<sum<<endl;}2、将下面程序补充完整,使程序执行结果为9。
#include <iostream.h>class A{public:A{x=a;}____________{return x * x;}private:int x;};void main(){A a(3);cout<<a.get()<<endl;}3、将下面程序补充完整,使程序的输出结果为:ClassA::PrintClassB::Print程序如下:#include <iostream.h>class Base{public:virtual void Print() const {cout<<″Base::Print″<<end l;} };class ClassA:public Base{public:void Print() const{cout<<″ClassA::Print″<<endl;}};class ClassB:public Base{public:void Print() const{cout<<″ClassB::Print″<<endl;}};void Print(____________){____________;}void main(){ClassA a;ClassB b;Print(a);Print(b);}三、程序分析题:本题共5小题,每小题6分,满分30分。
2011年C++期末试卷-A卷答案
华中师范大学2010–2011学年第二学期期末考试试卷(A卷)课程名称: 面向对象程序设计课程编号:84810110任课教师:一、单项选择题(共20题,每小题2分,共40分)1. D 2. B 3. D 4.A5. D 6.A7. D 8.A9. C 10. C 11. C 12. D 13. D 14. D 15. B 16. B 17. B 18. B 19. C 20. C二、填空题(共15空,每空1分,共15分)21.拷贝初始化22.类外23.ios24.私有,公有25.虚基类26.关联顺序(顺序不能颠倒)27.队列栈28.函数对象29. 运算符重载函数重载30. 异常抛出区异常处理区三、改错题(共3题,每题5分,共15分)31.【答】5行:for (int i=0;i<n;i++)a[i]=aa[i] 2分19行:for (int i=0;i<4;i++) d*=x.Get(i) 2分20行:int f=x.SumA(6) 2分32.【答】第3行:const int * p=&x;1分错误原因:*p为常变量,不能作为左值1分改正:int * p=&x 2分四、程序分析题(共2题,共10分)33.34.35.36.Complex::Complex (double r=0,double i=0){real=r;imag=i;}Complex Complex::operator + (const Complex & c);{return Complex(real+c.real, real+c.imag);}Complex Complex::operator ++(int){return Complex(real++, imag);}Complex Complex::operator * (const Complex & c){return Complex(real*c.real-imag*c.image, real*c.imag+image*c.real); }37.template<class T>T max(T x ,T y){return((x>y) ?x:y) ;}。
11年期末CPP训练题(5)
11年C++期末训练题第五部分:编程题1.设计一个程序满足以下要求:1)矩形类(Rectangle),有长(length)和宽(width),有计算其面积的函数Area(),并设其为虚函数。
2)以Rectangle类为基类派生一个长方体类(Cuboid),增加高(height)。
有与基类相同的覆盖函数Area(),计算该长方体的表面积。
3)另外,以Rectangle类为基类派生一个正方体类(Cube),其中有变量side可选择以长(length)为边(1)或以宽(width)为边(2)。
有与基类相同的覆盖函数Area(),计算该正方体的表面积。
4)在主函数main()中,建立N(=5)个元素的Rectangle的指针数组rectArray[N]。
5)用适当的循环语句输入N个图形,由命令行选择三种图形中的一种输入。
输入有关参数,并创建该对象,并将其存放到数组rectArray中。
6)计算该数组中所有图形的面积之和areaSum。
2.某高校校园内实行车辆进出管理,对职工(staff)车辆和外来(visit)车辆实行不同的管理方法,并最后输出校园内车辆存放及收费情况。
要求编一个程序实现这种管理。
具体程序要求如下:1)创建基类CarAccess,有3个数据成员:车号carno为8个字符的字符串变量;汽车数量carCount表示现存的车辆,为整数;fee表示该车辆的收费情况,为浮点数。
carno和fee应为受保护的。
2)CarAccess构造时carCount++,析构时carCount--。
有虚函数Print(),负责输出carno。
3)CarAccess派生出两个类,一个为内部车辆记录StaffCarAccess,另一个为VisitCarAccess记录外部车辆。
4)StaffCarAccess中有变量carCount记录内部车辆在校园内的数目。
同样,在VisitCarAccess中也有carCount记录外部车辆在校园内的数目。
11级高级语言程序期末试卷答案_A
高级语言程序设计A卷答案二、程序填空题:(本题共10小题,每空2分,共20分)1. int t2. a=b3. 14. (2.0*i)* (2.0*i) 注明:一定要用一个2.0,否则扣1分5. i++或i=i+16. N-17. i+18. a[i]<a[j]9. 10. b.score[i]三、程序阅读题(本题共5小题,每题4分,共20分)1、132、163、64、BOC5、10 20 30四、设计题:(本题共3小题,每题10分,共30分)1、#include<stdio.h> // 1分void main() // 1分{int x,y; 或float x,y;//1分printf("please input x"); //1分scanf("%d",&x); //1分if(x>0) //2分y=x*x+2*x+1;if(x= =0) //1分y= -7;if(x<0) //2分y=3*x-5;printf("\ny is %d",y);}2、#include <stdio.h>#define N 1000void main( ){int i,j,num[N]; //1分for(i=0;i<N;i++) // 2分num[i]=i+1;num[0]=0; //1分for(i=1;i<N;i++)if(num[i]!=0) //1分for(j=i+1;j<N;j++){ if(num[j]!=0 &&num[j]%num[i]==0) //2分num[j]=0;}j=0;for(i=0;i<N;i++) //1分if(num[i]!=0) //1分{ printf("%d ",num[i]);j++;if(j%5==0) printf("\n"); //1分}}3、#include <stdio.h>int reverse(int);//1分,若函数先定义后调用,直接加1分void main( ){int num;printf("\n请输入您的数据:\n");scanf("%d",&num); //1分printf("\n该数的逆序数为:%d\n",reverse(num)); //函数调用和结果输出2分}int reverse(int number) //1分{ int n=0;while (number > 0) //1分{n=n*10+number%10; //2分number /= 10; //1分}return (n); //1分}。
C++程序设计期末试卷2011-2012-2-A卷及答案11
—南昌大学考试试卷—2021-2021-2学期?C++程序设计?期末考试参考答案〔A卷〕一、单题〔每题2分,共30分〕二、填空题〔每空1分,共20分〕【1】 main 【2】 6 【3】 2 【4】 3【5】 double 【6】 2.0 【7】m-(m/n)*n 【8】 struct【9】 12 【10】循环【11】 switch 【12】构造【13】析构【14】友元函数 15】数据成员【16】成员函数【17】 Nan 【18】私有的〔private〕【19】 x %2 【20】 x/2三、程序阅读题 (每题4分,共24分)1、157****1719S=732、A=2, B=20A=3, B=353、S=404、There are 2 Points.There are 7 Points.There are 2 Points.5、S=226、31129四、程序设计题〔每题10分,共20分〕1、#include<iostream>using namespace std; // 1分void main(){int i,max,a[10]; //1分float avg,s=0; //1分for(i=0;i<10;i++)cin>>a[i]; //1分max=a[0]; //1分for(i=0;i<10;i++) //1分{s+=a[i]; //1分if(a[i]>max)max=a[i]; //1分avg=s/10; //分cout<<"max="<<max<<endl;cout<<"avg="<<avg<<endl; //1分2、#include"iostream.h" // 1分class Rect // 1分private:float Length,Width; // 1分public:Rect (float L,float W) // 1分{Length=L;Width=W;} // 1分double GetS(){return Length*Width;} // 2分void main()Rect obj(3.0,4.0); //2分cout<<"SS()<<endl; // 1分。
11年期末CPP训练题(3)
11年C++期末训练题第三部分:写结果题一、变量及函数1.有程序如下:#include <iostream.h>int func(int a,int& b){static int m=0,n=2;n += m+1;m = n+a+b;a = n;b = m;m;return}void main(){k=4,m=1,p;intp=func(k,m); cout<<p<<","<<endl;p=func(k,m); cout<<p<<endl;}请写出以上程序的输出结果:2.有程序如下:#include <iostream.h>#include <string.h>void fun(char *s){for(int x=0,y=strlen(s)-1; x < y; x++,y--) {if ( s[x] < s[y] )s[y]=s[x]; s[x]=c; } { charc=s[y];}第 1 页共 10 页}void main(){a[]="651725908";charfun(a);cout << a;}请写出以上程序的输出结果:3.下面是关于二维数组的程序:#include <iostream.h>#define N 3#define M 4void main(){inta[N][M]={{2,0,13,-4},{15,-3,0,4},{1,-2,18,0}};sum(0);intfor (int i=0;i<N;i++){int *pa = a[i];int line = 0;j=0;j<M;j++)(intfor{if( pa[j] < 0) continue;if( pa[j] == 0) break;+= pa[j];line}line;sum+=cout << "line=" << line << endl;}cout << "sum=" << sum;}第 2 页共 10 页请写出以上程序的输出结果:4.有程序如下:#include <iostream.h>const int N=3;void ChangeOrder(float ar[][N]);void show(float ar[][N]);void main(){Matrix[N][N]float={{1.1f,1.2f,1.3f},{2.1f,2.2f,2.3f},{3.1f,3.2f,3.3f}};ChangeOrder(Matrix);show(Matrix);}void swap(float& member1,float& member2){float temp = member1;member1 = member2;member2 = temp;}void ChangeOrder(float mat[][N]){for(int i=0;i<N/2;i++)j=0;j<=N/2;j++)for(int{swap(mat[i][j],mat[N-i-1][N-j-1]);第 3 页共 10 页}void show(float ar[][N] ){for(int i=0;i<N;i++){j=0;j<N;j++)for(int{cout.width(5);//设置输出的每个数据的宽度为5个字符";cout<<ar[i][j]<<"}cout<<endl;}}请写出以上程序的输出结果:二、类、继承及多态性5.下面是关于类的派生的程序:#include <iostream.h>class B{ int Y;public:B(int y=0) { Y=y; cout<<"B("<<y<<")\n"; }~B() { cout<<"~B()\n";}void print() { cout <<Y<< " " ; }} ;class D: public B{ intZ;第 4 页共 10 页D(int y, int z):B(y){ Z=z;cout<<"D("<<y<<","<<z<<")"<<endl;}~D() { cout<<"~D()\n"; }void print(){B::print();<<Z<<endl;cout}};void main(){D d(11,22);d.print();}请写出以上程序的输出结果:6. 有程序如下:#include <iostream.h>class Base{public:第 5 页共 10 页Base(int i=1) { x = i; }virtual int value() const { return x; } private:x;int};class Derived:public Base{public:Derived(int i=2,int j=3):Base(i){ y=j; }int value()const{return Base::value()+y;} private:inty;};void Call(Base& a,Base b){ cout<<"Value="<<a.value()<<b.value()<<endl; } void main(){ob1;Baseob2(40);DerivedCall(ob1,ob1);Call(ob2,ob2);}请写出以上程序的输出结果:7.有程序如下:#include <iostream.h>class C{public:C() { cout << " C()" ; }第 6 页共 10 页virtual ~C(){cout<<" ~C()" ;}};class A{public:A(){cout<<" A()" ;}virtual ~A(){cout<<" ~A()" ;}virtual void Show() { cout << "A::Show()" << endl; } };class B:public A{public:B(int i) : size(i){cout<<" B("<< size << ")" <<endl;buf= new char[i];}void Show() { cout << "B::Show()" << endl; }virtual ~B(){delete []buf;cout<<" ~B()" ;}private:C sub;char *buf;const int size;};void fun(A *a){a->Show();}void main(){A *pa= new B(15);第 7 页共 10 页fun(pa);delete pa;}请写出以上程序的输出结果:8.下面是关于字符串的程序:#include <iostream.h>#include <string.h>class String{public:String(const char *str = NULL);String(const String &str);String& operator = (const String &str);~String();private:char *m_String;};String::String(const char *str){cout << "String:" << str << endl;if(str == NULL)m_String = NULL;else{m_String = new char[strlen(str)+1];strcpy(m_String, str);}}第 8 页共 10 页String::String(const String &str){cout << "String Copy:" << str.m_String << endl; m_String = new char[strlen(str.m_String)+1]; strcpy(m_String, str.m_String);}String::~String(){cout << "~String"<< endl;if (m_String != NULL)delete[] m_String;}String& String::operator = (const String &str) {cout << "String =" << str.m_String << endl;strcpy(m_String, str.m_String);return *this;}void main(){String a("hello");String b("world");String c = a;c = b;}请写出以上程序的输出结果:第 9 页共 10 页第 10 页共 10 页。
2011级C++试卷(含答案)
《 C++程序设计》试卷一、单项选择题:(每小题2分,共20分)1.以下叙述中错误的是()。
A)用户所定义的C++标识符允许使用关键字B)用户所定义的C++标识符应尽量做到“见名知意”C)用户所定义的C++标识符必须以字符或下划线开头D)用户所定义的C++标识符中,大、小写字符代表不同标识。
2.用C++语言编制的源程序要变为目标程序必须经过()。
A)解释B)汇编C)编辑D)编译3.设有定义语句:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。
A) 2.5 B) 2.75 C) 3.5 D) 0.04.以下所列的C++语言常量中,错误的是( )。
A) 0xFF B) 1.2e0.5 C) 2L D) ‘\72’5.设有:int a=7,b=5,c=3, d=1; , 则条件表达式a<b?a:c>d?c:d的值为()。
A)7 B) 5 C) 3 D) 16.以下程序的运行结果是()。
int main(){ short b=-1;unsigned short a;a=b;cout<<a;return 0;}A) -32768 B) 32767 C) 65535 D) -17.设有定义语句:int a[ ]={0,2,4,6,8,10},*p=a;,值不等于0的表达式是()。
A)*p++ B)*(p++) C)(*p)++ D)*++p8.以下对C++字符数组的描述错误的是( )。
A) 字符数组可以存放字符串;B) 字符数组的字符串可以整体输入和输出;C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值;D) 不可以用关系运算符对字符数组中的字符串进行比较;9.下列带有默认参数的函数原型声明中,正确的是()。
A) void f(int a=5 , int b=5, int c);B) void f(int a, int b, int c=5);C) void f(int a , int b=5 , int c );D) float fun(int a=5 ,int b, int c=5);;10.设有下列定义语句:struct node {int x; int y;} n[3]={{1,2},{3,4},{5,6}};值等于4的正确表达式是()。
C++2011年试卷及答案
C++2011年试卷及答案南京邮电⼤学通达学院 2010/2011学年第⼆学期《⾯向对象程序设计及C ++》期末试卷A本试卷共 8 页;考试时间 110 分钟;专业班级学号姓名⼀、选择题(20分,每题1分)1、C++源程序⽂件的扩展名是( B )。
A ..objB ..cppC ..exeD ..c2、下列关于类与对象关系的描述中,不正确的是( C )。
A .类是具有相同属性和⾏为的⼀类对象的抽象 B .对象是类的具体实体C .类与对象在内存中均占有内存单元D .类是创建对象的模板3、以下设置默认值的函数原型声明中错误的是( C )。
A .int add(int x, int y, int z=5);B .int add(int x, int y=4, int z=5);C .int add(int x, int y=4, int z);D .int add(int x=3, int y=4, int z=5); 4、系统在调⽤重载函数时往往根据⼀些条件确定哪个重载函数被调⽤,在下列选项中,不能作为依据的是( D )。
A .参数的个数B .参数的类型C .参数的顺序D .函数的返回类型5、下列⼏个运算符以类的成员函数形式重载时,(B )与其他3个的形式参数个数不⼀样。
A .后置++B .前置++C . +D ./ 6、采⽤函数重载的⽬的在于(A )。
A .实现共享B .减少空间C .提⾼速度D .使⽤⽅便,提⾼可读性7、下列运算符中,( C )运算符在C++语⾔中不能重载。
装订线内不要答题⾃觉遵守考试规则,诚信考试,绝不作弊A.+= B.[ ] C.::D.new8、下列定义引⽤类型变量时,(A )是正确的。
已知:int k=1000;A.int &x=k; B.char &y C.int &z=1000; D.float &t=&k9、(A )是析构函数的特征。
C++练习测试试题5
纯粹合数compo.bas/.cpp【题目描述】一个合数,去掉最低位,剩下的数仍是合数,再去掉剩下的数的最低位,余留下来的数还是合数,这样反复,一直到最后剩下的一位数仍是合数;我们把这样的数称为纯粹合数。
求m,n之间的所有纯粹合数【输入文件】compo.in输入文件中包含两个整数m , n(100 < m , n < 1000)【输出文件】compo.out输出文件中包含若干整数,每个整数占一行。
【输入样例】400 420【输出样例】400402403404405406407408420标准时间mtime.bas/.cpp【题目描述】给定一个从0秒开始计时的秒数,请将其转换为x:x:x的格式。
这种格式一般成为标准时间格式。
如1小时1分1秒应该表示的标准时间格式应该是01:01:01,而不是1:1:1。
你能完成这个任务吗?将一个秒数转换为标准时间格式?【输入文件】输入文件名:mtime.in输入文件中只包含一个整数n,表示秒数。
【输出文件】输出文件名:mtime.out输出文件中包含一个用标准时间格式表示的时间格式。
【输入样例】71【输出样例】00:01:11这个数是几?num.bas/.cpp【题目描述】已知一个正整数的个位数为7,将7移到该数的首位,其它数字顺序不变,则得到的新数恰好是原数的5倍,编程找出满足上述要求的最小自然数。
【输入文件】无输入文件【输出文件】输出文件名:num.out求得的最小的自然数【输入样例】无【输出样例】呵呵,呵呵,就一个值,就不告诉你了。
组装数字package.bas/.cpp【题目描述】输入2个正整数a、b。
a可以组装到b的左边也可以组装到b的右边。
例如a=2,b=16 则c=216或者c=162。
那么如果我们需要的是其中那个大的数字也就是216的话,你能编写程序,帮我们找出由a,b组装而成的大的那个数值吗?【输入文件】输入文件名:package.in输入文件中包含两个整数每个整数占一行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11年C++期末训练题
第五部分:编程题
1.设计一个程序满足以下要求:
1)矩形类(Rectangle),有长(length)和宽(width),有计算其面积的函数Area(),并设其为虚函数。
2)以Rectangle类为基类派生一个长方体类(Cuboid),增加高(height)。
有与基类相同的覆盖函数Area(),计算该长方体的表面
积。
3)另外,以Rectangle类为基类派生一个正方体类(Cube),其中有变量side可选择以长(length)为边(1)或以宽(width)为边(2)。
有与基类相同的覆盖函数Area(),计算该正方体的表面积。
4)在主函数main()中,建立N(=5)个元素的Rectangle的指针数组rectArray[N]。
5)用适当的循环语句输入N个图形,由命令行选择三种图形中的一种输入。
输入有关参数,并创建该对象,并将其存放到数组rectArray
中。
6)计算该数组中所有图形的面积之和areaSum。
2.某高校校园内实行车辆进出管理,对职工(staff)车辆和外来(visit)
车辆实行不同的管理方法,并最后输出校园内车辆存放及收费情况。
要求编一个程序实现这种管理。
具体程序要求如下:
1)创建基类CarAccess,有3个数据成员:车号carno为8个字符的字符串变量;汽车数量carCount表示现存的车辆,为整数;fee表示
该车辆的收费情况,为浮点数。
carno和fee应为受保护的。
2)CarAccess构造时carCount++,析构时carCount--。
有虚函数Print(),负责输出carno。
3)CarAccess派生出两个类,一个为内部车辆记录StaffCarAccess,另一个为VisitCarAccess记录外部车辆。
4)StaffCarAccess中有变量carCount记录内部车辆在校园内的数目。
同样,在VisitCarAccess中也有carCount记录外部车辆在校园内的数
目。
5)StaffCarAccess中有函数Print()负责打印车号及每月缴费情况(monthlyRate);同样地,VisitCarAccess中也有Print()负责打印车
号及每次缴费情况(timesRate)。
6)main()函数中,假定出入次数为ACCESS_TIMES=100。
要求记录出
第 1 页共 2 页
入过程,并统计车辆情况。
具体要求如下:
①申请指针数组 carArray[ACCESS_TIMES]记录并初始化;
②处理出入情况:输入车辆出入选择(1—in, 2—out, 0—exit)。
对于车辆进入,则进一步询问是否内部车辆,分别创建
StaffCarAccess或VisitCarAccess对象;如果是车辆退出则
删除对象。
③显示校园内所有车辆数,以及内部车辆和外部车辆数目。
④调用Print()函数显示所有车辆的属性,车号carno、包月费
或每次缴费(getFee())。
⑤最后删除数组中对象。
第 2 页共 2 页。