




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
考试题型一、 填空题(201分20分)二、 给出下列程序运行后的输出结果(65分30分)三、 程序填空(102分20分)四、 程序设计(310分30分)填空题【1】在每个C+程序中都必须包含有这样一个函数,该函数的函数名为main 。【2】假定a为一个整型数组名,则元素a4的字节地址为a+16 。【3】假定AB为一个类,则执行ABa(4),b3,*p2;语句时,自动调用该类构造函数的次数为4 。【4】假定要对类AB定义+重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:AB operator+(AB & a)。【5】C+语言中的每条基本语句以; 作为结束符,每条复合语句以作为结束符。【6】假定一个一维数组的定义为“char * a8 ;”,则该数组所含元素的个数为8 ,所占存储空间的字节数为32 。【7】变量分为全局和局部两种,局部 变量没有赋初值时,其值是不确定的。【9】对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的函数体实现。【10】若AB为一个类,则执行“ABa10;”语句时,系统自动调用该类的构造函数的次数为10 。 【11】假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为AB:bb 。【12】内联函数不是在调用时发生控制转移,而是在 编译 时将函数体嵌入在每一个调用处。【13】面向对象程序设计的基本特点分别是: 抽象 、 封装 、 继承 、 多态 。【14】类的继承方式有: 公有继承 、 保护继承 、 私有继承 。【15】在类中必须声明成员函数的 原型 ,成员函数的 实现 部分可以写在类外。【16】如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是 引用 类型或指针类型。【17】 抽象 类只能作为基类使用,而不能声明它的对象。【18】函数重载时,被重载的同名函数如果都没有用const修饰,则它们的形参个数或类型 须不同。【19】通过一个 常 对象只能调用它的常成员函数,不能调用其他成员函数。【20】函数的递归调用是指函数直接或间接地调用 自身 。【21】拷贝构造函数的形参必须是 本类对象的引用 。【22】for(intx=,y=0;!x&y=5;y+)语句执行循环的次数是 6 【23】两个以上的函数具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及其个数的最佳匹配,自动确定调用哪一个函数,这就是 函数的重载 。【24】一个C+程序可以由一个或多个 函数 构成,有且仅有1个主函数。【25】定义内联函数的目的是解决程序中函数调用的效率问题,其定义形式是在函数前面冠以关键字inline。【26】如果希望类的某个数据成员为本类所有对象所共有,则应将该数据成员的存储类型定义成static,其空间分配及初始化在 编译时 进行。【27】对于不提供类外的任何函数直接访问成员,应将其访问属性定义private,若只供本类及本类的派生类的成员函数直接访问,则应将该数据成员的访问属性定义成protected。【28】抽象类是指含有纯虚拟函数的类,它只能作为 基类 来派生新类,不能说明抽象类的对象,但可以说明抽象类的 指针 和 引用 。【29】友元函数是在类中说明并以关键字friend修饰的函数,它不是类的成员函数,但可以访问类中的私有成员。使用友元函数的目的是提高程序的效率和灵活性。【30】运算符重载有两种形式:类的成员函数和类的友元函数。运算符重载后,不改变原来的优先级和结合性。【31】当函数没有返回值时,函数的返回值类型应定义成void。【32】 如果要对AB类中的整型静态变量c赋初值0,则在类的外部书写的语句是int AB: c=0;。【33】一个类中有 1 个析构函数,有 多 个构造函数。读程序写结果【1】有如下程序:classBASEcharc;public:BASE(charn):c(n)XYvirtualBASE()coutC; classDERIVED:publicBASEcharc;public:DERIVED(charn):BASE(n+1),c(n)DERIVED()coutC;intmain()DERIVED(X);return0;【2】阅读下面程序,写出程序的输出结果。-1 void main ( ) int x=100, a=10, b=20, ok1=5, ok2=0 ; if(ab) if(b! =15) if(!ok1) x=1; else if(ok2) x=10; else x=-1; printf(“%dn”, x); 【3】阅读下列程序,写出程序的运行结果。 #include void main( ) int k=0; char c=A; do switch (c+) case A: k+; break; k=8 case B: k-; case C: k+=2; break; case D: k=k%2; break; case E: k=k*10; break; default: k=k/3; k+; while(cG); printf(k=%dn, k); 【4】 #include Yes!Yes!Yes!Yes!Yes!No!No! void main ( void ) int i0; do printf(“Yes!”); while(i+4); printf(“n”); while(+i8) printf(“No!”); 【5】#include void fun2( )2345 static int a=1; a+; printf(“%d”, a); void main(void) int i; for(i=0 ;i4 ;i+) fun2( ); 【6】 long fun3 ( int x ) if( x= =0 | x= =1 ) return ( 2 );240 else return ( x* fun3 ( x-1 ) ) ; main() printf(“%dn”, fun3 ( 5 ) ) ; 【7】#include defg #include char *fun( char *t ) char *p=t; return(p+strlen(t)/2); void main() char *str=”abcdefg”; str=fun(str); puts(str); 【8】# include int a=5;void main() 10 2015 35 510 20 int a=10,b=20; cout a bendl; int a=0,b=0;for (int i=1; i6; i+) a+=i; b+=a; cout a b :aendl; cout a bendl;【9】# include class A Destructor B! 7Destructor A! 6Destructor B! 0Destructor A! 5 int a;public: A(int aa=0) a=aa; A() cout Destructor A!aendl; ;class B:public A int b;public: B(int aa=0,int bb=0):A(aa) b=bb; B() cout Destructor B!bendl; ;void main() B x(5),y(6,7); 【10】#include class base int n; public: base(); base (int a) cout constructing base class endl; constructing base class n=1 constructing sub class m=2 destructing sub class destructing base class n=a; cout n= n endl; base() cout destructing base class endl; ; class subs : public base int m;public: subs(int a, int b) : base(a) cout constructing sub class endl; m=b; cout m= m endl; subs() cout destructing sub class endl; ; void main () subs s(1,2); 【11】#include class Sample protected: int x; x=3,y=5x=4,y=5x=2,y=3public: Sample() x=0; Sample(int val) x=val; void operator+() x+; ; class Derived:public Sample int y; public: Derived():Sample() y=0; Derived(int val1,int val2):Sample(val1) y=val2; void operator-() x-;y-;void disp() coutx= x y= y endl; ; void main () Derived d(3,5); d.disp(); d+; d.disp (); d-; d-; d.disp(); 【12】分析以下程序的执行结果#include class base constructing base class constructing sub class destructing sub class destrcuting base class public: base()coutconstructing base classendl; base()coutdestructing base classendl; ; class subs:public base public: subs()coutconstructing sub classendl; subs()coutdestructing sub classendl; ; void main() subs s; 【13】分析以下程序的执行结果:#includeclass base int n; public: base(int a) coutconstructing base classendl; n=a; coutn=nendl; base()coutdestructing base classendl;constrcuting base classn=1 constructing base class n=3 constructing sub class m=2 destructing sub class destructing base class destructing base class ; class subs:public base base bobj; int m; public:subs(int a,int b,int c):base(a),bobj(c) coutconstructing sub cassendl;m=b; coutm=mendl; subs()coutdestructing sub classendl; ; void main() subs s(1,2,3); 【14】分析以下程序的执行结果 #include class A public:int n; ; 10,20 class B:public A; class C:public A; class D:public B,public C int getn()return B:n; ; void main() D d; d.B:n=10; d.C:n=20; coutd.B:n,d.C:nendl; 【15】请写出以下程序的输出结果#includevoid main() int i,j; for(i=1;ii;j-) cout ; for(j=1;j2*i;j+) coutj; coutendl; 【16】设在执行下面程序时,从键盘输入数据为123456,请写出程序的运行结果。#includevoid main() long n,x=0; char c; cinn; while(c=n%10) x=x*10+c; coutxendl; n/=10; 【17】请写出以下程序的输出结果#includevoid swap1(int a,int b) int t; t=a; a=b; b=t; void swap2(int *a,int *b) int t; t=*a; *a=*b; *b=t;void swap3(int &a,int &b) int t; t=a; a=b; b=t; void main() int x=4,y=5; coutx,yendl; swap1(x,y); coutx,yendl; swap2(&x,&y); coutx,yendl; swap3(x,y); coutx,yendl;程序设计及填空【1】设计一个类Sample,有一个私有数据成员,建立该类的四个对象s1(n=10)、s2(n=20)、s3(n=30)、和s4(n=40),建立一个成员函数实现这些对象n值的累加。#include class Sample int n; public: Sample()Sample (int i) n=i; void add(Sample &s) / 对象引用作为参数 if(&s=this) cout自己不能相加endl;/ 不能自己相加,this是当前对象的指针 else n+=s.n; void disp() coutendl n=nendl; ; void main() Sample s1(10),s2(20),s3(30),s4(40); s1.add(s2); s1.add(s3); s1.add(s4); s1.disp(); coutp1)if(*p1+!*p2-) return 0; return 1;【3】用二分法从数组vn中查找x的函数,返回值为x所在下标(若找到)或-1(没找到)。 int binsearch ( int x ,int v , int n ) int low0 , highn1 , mid;while (lowhigh) mid=(lowhigh)/2;if ( x vmid) low=mid+1;else return mid;return 1;【4】编程从键盘读取若干个百分制的成绩,以1作为结束标志,分五个档次统计各档次的人数并输出结果。各档次的划分为如下:优秀:90100;良好:8089;中等:7079;及格:6069;不及格:059。#include void main() int y=0,l=0,j=0,b=0; cinx while(x!=-1) if(x=90&x=80&x=70&x=60&x=0&xx; cout优秀人数:yendl; cout良好人数:lendl; cout中等人数:zendl; cout及格人数:jendl; cout不及格人数:bendl;【5】输入两个正整数m和n (1mn),求从m到n之间(包括m和n)的所有素数,并按每行5个数输出。int prim(int n) int flag=1,i=2; while(flag&imn; for(int i=m;i=n;i+) if(prim(i) c+; if(c%5=0) coutendl; Couti; 【6】以下程序用来统计从终端输入的字符中大写字母的个数,然后输出从终端输入的各大写字母及出现次数。num0中统计字母A的个数,num1中统计字母B的个数,其它依次类推。用#号结束输入,请填空。(提示:函数issupper(c)的功能是判断字符c是否大写字母) #include #include void main( ) static int num26=0, i; char c; while((cgetchar())!=#) if(isupper(c) numc-A+; for(i=0; i26; i+) if(numi) printf(“%c:%dn”, i+A,numi); 【7】输入20个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。 #include #include void main() float a20,pjz=0,s,t; int i,k; for(i=0;i20;i+) scanf(“%f”,&ai); for(i=0;i20;i+) pjz+=ai; pjz=pjz/20; t=0; for(i=1;i20;i+) if(fabs(ai-pjz) fabs(at-pjz) t=i; printf(“%f,%f n”,pjz,at); 【8】从计算机中输入一系列整数,以0为输入结束,统计其中的正数和负数的个数。 #include void main(void) int a,b,n; scanf(%d, &n ); while (n) if ( n 0 ) a=a+1 if ( n 0 ) b=b+1 scanf(%d, &n ); printf(a=%d,b=%dn,a,b); 【9】编写程序实现功能:从键盘输入一个年月日,要求输出该天是该年的第几天。 例如:输入:200815 输出: 5 输入:200849 输出: 100(提示:闰年的判断条件是:年份能被400整除,或者能被4整除而不能被100整除)#include int IsLeap(int y);int fun(int y, int m, int d);void main( ) int year,month,day, n; scanf(“%d%d%d“,&year, &month,&day); nfun(year,month,day); printf(“%dn”,n); Int fun(int y, int m, int d) int md212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31; int leap , i, s; leap=IsLeap(y); i=1; s=0; while(im) s=s+ mdleapi-1; i+; ss+d;return s;int IsLeap(int y) if(y%400=0|(y%4=0&y%100!=0) return 1; else return 0;【10】编写程序实现功能:从键盘输入一个整数年份y以及整数天数n,要求输出该天数n是y年的哪一年哪一月。 例如:输入:2008 5 输出:1月5日 输入:2008 100 输出:4月9日(提示:闰年的判断条件是:年份能被400整除,或者能被4整除而不能被100整除)#include int IsLeap(int y);void fun(int y, int n, int *m, int *d);void main( ) int year, n,month,day; scanf(“%d%d”,&year, &n); fun(year,n,&month,&day); printf(“%2d月%2d日n”,month, day); void fun(int y, int n, int *m, int *d) int md212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31; int leap , i, s; leap=IsLeap(y); i=0; s=0; while(s+mdleapin) s=s+ mdleapi; i+; *m=i+1; *d=n-s; int IsLeap(int y) if(y%400=0|(y%4=0&y%100!=0) return 1; else return 0;【11】请将下面的类date的定义补充完整,使得由语句date firstday;定义的对象firstday的值为2010年1月1日。class datepublic:date(int y=2010,int m=1,int d=1): year(y), month(m), day(d) private: int year, month, day; /依次表示年、月、日;【12】补充完整下面的类定义:const double PI=3.14;class Circle protected: double r; /半径public: Circle(double radius=0 ): r(radius) virtual double Area( )=0; /计算圆形物体表面积的纯虚函数声明;class Cylinder : public Circle /圆柱体类 double h; /高度public: Cylinder( double radius, double height=0):Circle(radius),h(height) virtual double Area( ) return 2*PI*r*(r+h); /计算圆柱体的表面积【13】下面的程序用来求两个点之间的距离。#include #includeclass Point double x,y; public: Point(double i, double j)x=i;y=j;double getx() return x; double gety() return y; void disp() cout(xy); friend double distance(Point a,Point b); double distance(Point a,Point b) double d,dx,dy; dxa.xb.x; dya.yb.y; d= sqrt(dx*dx+dy*dy); return d; void main() Point p1(2,2),p2(5,5); p1.disp(); cout与; p2.disp(); cout之间距离=distance(p1,p2)endl; 【14】编写程序,设计一个点类Point,并分别用两种不同的方式求两个点之间的距离。方法一:#include #includeclass Point double x,y; public: Point(double i, d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生上下学交通安全教育
- Java基础培训教程
- 酒店班前会课件
- 肿瘤基础认知与防治体系
- 铁路新职培训课件
- 遵纪守法专题教育
- 药企批生产记录培训
- 小学生税法知识启蒙
- 门诊护理质控工作计划
- 美术教师研修总结
- 2024年河南能源集团有限公司招聘笔试冲刺题(带答案解析)
- 500字作文标准稿纸A4打印模板-直接打印
- 高中数学《函数的概念及其表示》大单元专题教学设计
- 第09讲醛酮(教师版)-高二化学讲义(人教2019选择性必修3)
- 巡回医疗工作总结
- 高血压 糖尿病 健康宣教
- 国开电大软件工程形考作业3参考答案
- 食堂检查燃气安全培训记录
- 河南近10年中考真题道德与法治2014-2023年含答案
- 湖南省长郡中学、雅礼中学等四校2024届高一数学第二学期期末调研试题含解析
- 关节僵硬护理查房
评论
0/150
提交评论