1、考试题型一、 填空题(201 分20 分)二、 给出下列程序运行后的输出结果(65 分30 分)三、 程序填空(102 分20 分)四、 程序设计(310 分30 分)填空题【1】在每个 C+程序中都必须包含有这样一个函数,该函数的函数名为 main 。【2】假定 a为一个整型数组名,则元素 a4的字节地址为 a+16 。【3】假定 AB为一个类,则执行 AB a(4),b3,*p2;语句时,自动调用该类构造函数的次数为 4 。【4】假定要对类 AB定义+重载成员函数,实现两个 AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:AB operator+(AB ”,则该数组所含元素的个
2、数为 8 ,所占存储空间的字节数为 32 。【7】变量分为全局和局部两种, 局部 变量没有赋初值时,其值是不确定的。【9】对一个类中的数据成员的初始化可以通过构造函数中的 初始化表 实现,也可以通过构造函数中的函数体 实现。【10】若 AB为一个类,则执行“AB a10;”语句时,系统自动调用该类的构造函数的次数为 10 。 【11】假定类 AB中有一个公用属性的静态数据成员 bb,在类外不通过对象名访问该成员 bb的写法为AB:bb 。【12】内联函数不是在调用时发生控制转移,而是在 编译 时将函数体嵌入在每一个调用处。【13】面向对象程序设计的基本特点分别是: 抽象 、 封装 、 继承 、
3、 多态 。【14】类的继承方式有: 公有继承 、 保护继承 、 私有继承 。【15】在类中必须声明成员函数的 原型 ,成员函数的 实现 部分可以写在类外。【16】如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是 引用 类型或指针类型。【17】 抽象 类只能作为基类使用,而不能声明它的对象。【18】函数重载时,被重载的同名函数如果都没有用 const修饰,则它们的形参个数或类型 须不同。【19】通过一个 常 对象只能调用它的常成员函数,不能调用其他成员函数。【20】函数的递归调用是指函数直接或间接地调用 自身 。【21】拷贝构造函数的形参必须是 本类对象的引用 。【22
4、】for(int x=,y=0;!x char c=A;do switch (c+) case A: k+; break; 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(cvoid main ( void ) int i0;do printf(“Yes!”); while(i+void fun2( ) static int a=1;a+;printf(“%d”, a);void main(void) int i;for(i=0 ;i#inclu
5、de 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() int a=10,b=20;cout 10 2015 35 510 20Yes!Yes!Yes!Yes!Yes!No!No!2345240defgclass A int a;public:A(int aa=0) a=aa; A() cout class base int n; public: bas
6、e(); base (int a) cout class Sample protected: int x; public: Sample() x=0; Sample(int val) x=val; void operator+() x+; ; Destructor B! 7Destructor A! 6Destructor B! 0Destructor A! 5constructing base class n=1 constructing sub class m=2 destructing sub class destructing base class x=3,y=5x=4,y=5x=2,
7、y=3class 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() cout class base public: base()coutclass base int n; public: base(int a) cout class A public:int n; ; class B:public A; class C:public A; class D:pu
8、blic B,public C int getn()return B:n; ; void main() D d; d.B:n=10; d.C:n=20; coutvoid main() int i,j;for(i=1;ii;j-) coutvoid main() long n,x=0; char c;cinn;while(c=n%10) x=x*10+c; coutvoid 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 t=a;
9、 a=b; b=t; void main() int x=4,y=5; cout class Sample int n; public: Sample()Sample (int i) n=i; void add(Sample return 1;【3】用二分法从数组 vn中查找 x的函数,返回值为 x所在下标(若找到)或-1(没找到)。int binsearch ( int x ,int v , int n ) int low0 , highn1 , mid;while (low vmid) low=mid+1;else return mid;return 1;【4】编程从键盘读取若干个百分制的
10、成绩,以1 作为结束标志,分五个档次统计各档次的人数并输出结果。各档次的划分为如下:优秀:90100;良好:8089;中等:7079;及格:6069;不及格:059。#include void main() int y=0,l=0,j=0,b=0;cinxwhile(x !=-1) if(x=90coutmn;for(int i=m;i#include void main( ) static int num26=0, i; char c;while((cgetchar())!=#) if(isupper(c) numc-A+;for(i=0; i#include void main() flo
11、at a20,pjz=0,s,t; int i,k;for(i=0;i void main(void) int a,b,n;scanf(%d, while (n) if ( n 0 ) a=a+1if ( n int IsLeap(int y) ;int fun(int y, int m, int d) ;void main( ) int year,month,day, n;scanf(“%d%d%d“,nfun(year,month,day); printf(“%dn”,n); Int fun(int y, int m, int d) int md212=31,28,31,30,31,30,
12、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(iint IsLeap(int y) ;void fun(int y, int n, int *m, int *d) ;void main( ) int year, n,month,day;scanf(“%d%d”,fun(year,n, printf(“%2d月%2d 日n”,month, day); void fun(int y, int n, int *m, int *d) int
13、 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+mdleapi #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 #includeclass Point do
14、uble x,y; public: Point(double i, double j)x=i;y=j;double getx() return x; double gety() return y; void disp() cout #includeclass Point double x,y; public: Point(double i=0, double j=0)x=i;y=j;Point(Point p)x=p.x;y=p.y;double getx() return x; double gety() return y; void disp() cout=24) hours0;retur
15、n old;void Clock :disp() couthours”小时”minutes”分”seconds”秒” endl; 【类似】定义一个日期类,含年、月、日 3 个 int 型成员变量,实现运算符 +,- 的重载。其中,运算符 + 实现日期加上一个整数天数,得到新日期;运算符 - 实现日期减去一个整数天数,得到新日期。设计一个倒计时的时钟类,该类包括 days,hours,minutes,seconds 四个成员数据,分别表示倒计时的天数、小时数、分钟数和秒数,成员函数包括构造函数、显示四个成员数据值的函数和后置运算符的重载函数,要求倒计时的最短时间为 10天 9小时 8分 7秒。定义以一个复数类,实现运算符 +,-,*,/,=,= 的重载。