1、面向对象程序设计形成性考核册作业二一、选取题:1. 若用数组名作为函数调用实参,传递给形参是( A )。 A. 数组首地址 B. 数组中第一种元素值 C. 数组所有元素值 D. 数组元素个数 2. 采用重载函数目是( D )。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用以便,提高可读性 3. 下面标记符中,( C )是文献级作用域。 A. 函数形参 B.语句标号 C.外部静态类标记符 D.自动类标记符 4. 当#include背面文献名用双引号括起来时,寻找被包括文献方式是( B )。 A. 直接按系统设定原则方式搜索目录 B. 先在源程序所在目录搜索,再按系统设定原则方式搜索
2、目录 C. 仅仅搜索源程序所在目录 D. 搜索当前逻辑盘上所有目录 5. 在下面存储类中,( A )对象不是局部变量。 A. 外部静态类 B. 自动类 C. 函数形参 D. 寄存器类 6. 预解决命令在程序中都是以( B )符号开头。 A. * B. # C. & D. 7. 用new运算符创立一种含10个元素一维整型数组对的语句是( C )。 A. int *p=new a10; B. int *p=new float10; C. int *p=new int10; D. int *p=new int10=1,2,3,4,5 8. 假定变量m定义为“int m=7;”,则定义变量p对的语句为
3、( B )。 A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m; 9. 关于void 指针,下列说法对的是( C )。 A. void 指针就是未指向任何数据指针 B. void 指针就是已定义而未初始化指针 C. 指向任何类型数据指针可直接赋值给一种void 指针 D. void 指针值可直接赋给一种非void 指针 10. 假定p是具备double类型指针变量,则表达式+p使p值(以字节为单位)增长(C )。 A. 1 B. 4 C. sizeof(double) D. sizeof(p) 11. 定义p并使p指向动态空间中包括30个
4、整数数组所使用定义语句为( A )。 A. int *p=new int30; B. int *p=new int(30); C. int *p=new 30; D. *p=new int30; 12. 假定有“struct BOOKchar title40;float price;;BOOK *book=new BOOK;”,则对的语句为(A )。 A. strcpy(book-title,”Wang Tao”); B. strcpy(book.title,”Wang Tao”); C. strcpy(*book.title,”Wang Tao”); D. strcpy(*book)-tit
5、le,”Wang Tao”); 13. 下列对引用陈述中不对的是( C )。 A. 每一种引用都是其所引用对象别名,因而必要初始化 B. 形式上针对引用操作事实上作用于它所引用对象 C. 一旦定义了引用,一切针对其所引用对象操作只能通过该引用间接进行 D. 不需要单独为引用分派存储空间 14. 假定指针变量p定义为“int *p=new int(100);”,要释放p所指向动态内存,应使用语句( A )。 A. delete p; B. delete *p; C. delete &p; D. delete p; 15. 关于消息,下列说法中不对的是( B )。 A. 发送消息对象祈求服务,接受
6、消息对象提供服务 B. 消息发送者必要理解消息接受者如何相应消息 C. 在C+中,消息发送详细体现为对接受消息对象某个函数调用 D. 每个对象只能接受某些特定格式消息 16. 软件产品在需求发生变化、运营环境发生变化或发现软件产品自身错误或局限性时进行相应软件更新难易限度叫做软件( A )。 A. 可维护性 B. 可复用性 C. 兼容性 D. 对的性 17. 软件产品精确执行软件需求规格阐明书中所规定任务能力叫做软件( D )。 A. 可维护性 B. 可复用性 C. 兼容性 D. 对的性二、填空题1. 作为语句标号使用C+保存字case和defaule只能用于_switch_语句定义体中。 2
7、. 当在程序中执行到_break_语句时,将结束本层循环类语句或switch语句执行。 3在程序执行完_主(或main)_函数调用后,将结束整个程序执行过程,返回到C+集成开发窗口。 4. 存储字符a和字符串”a”分别需要占用_1_和_2_个字节。 5. 字符串”a:xxk数据”长度为_11_。 6. 一种二维字符数组a1020可以存储_10_个字符串,每个字符串长度至多为_19_。 7. 若需要把一种字符串”aaa”赋值到字符数组a中,则需要执行_strcpy_函数调用来实现。 8. 如果一种函数只容许同一程序中函数调用,则应在该函数定义前加上_static_C+保存字。 9. 在函数模板参
8、数中,用class修饰参数称为_虚拟类型(或类型)_参数。 10. 如果一种函数定义中使用了_ static _修饰,则该函数不容许被其他文献中函数调用。 11调用系统函数时,要先使用#include命令包括该系统函数原型语句所在_ _头文献_。 12. C+程序运营时内存空间可以提成全局数据区,堆区,栈区和_代码区(程序区)_。 13. 若二维数组a有m列,设a00位于数组第一种位置上,则计算任一元素aij在数组中位置序号公式为_i*m+j+1(从1开始算起,若从0开始则为:i*m+j)_。 14. 一种指针类型对象占用内存_4_个字节存储空间。 15. 假定一种数据对象为int*类型,则指
9、向该对象指针类型为_int*_。 16假定p所指对象值为25,p+1所指对象值为42,则*p+值为_25_。 17假定p所指对象值为25,p+1所指对象值为42,则执行*(p+)或*p+运算后,p所指对象值为_42_。18. 一种数组数组名事实上是指向该数组_首_元素指针,并且在任何时候都不容许_修改_它。三、程序填空: 1. 从键盘上输入一种正整数,然后把它转换成二进制数每一位存储到一维数组中,最后输出该二进制数。注意二进制数存储是按照从低位到高位顺序进行。 #include void main() int x; coutx; int a20,k=0,r; do r=x%2; ak+=r;
10、x=_(1)_; while(_(2)_); for(-k;k=0;k-) _(3)_; coutendl; (1) x/2 (2) x或x!=0 (3) coutak 2. 对按从小到大排列有序数组an进行二分查找x算法,若查找成功返回该元素下标,否则返回-1。 int BinarySearch(int a,int N,int x) /不增长int N将会提示N未声明 int low=0,high=N-1; /定义并初始化区间下界和上界变量 int mid; /定义保存中点元素下标变量 while(low=high) mid=_(1)_;/假定要找数正好是下界和上界中间 if(x=amid)
11、 _(2)_;/如正好找到这个数就输出其下标 else if(xamid) high=mid-1;/要找数比中间小则在前半段中找 else _(3)_;/要找数比中间大则在后半段中找 return -1;/找不到返回-1 (1) (low+high)/2 (2) return mid (3) low=mid+1 3. 假定有定义为“struct NODEint data;NODE* next;”,下面算法依照table数组中n个元素建立一种表头指针为L链表,链表中结点值顺序与数组元素值顺序正好相反。void f6(NODE*& L,int table,int n) L=NULL;if(ndat
12、a=_(2)_;p-next=L;_(3)_;i+;(1) in (2)tablei (3) L=p四、写出程序运营成果 1. #include const int T=6; void main() int i,j; for(i=1;i=T;i+=2) for(j=2;j=T;j+=2) if(i+jT) cout+;/行号与列号之和不大于6输出加号 else cout*;/行号与列号之和不大于6输出*号 程序运营成果为:+*+*Press any key to continue 2. #include const int N=3; void main() int aNN=7,-5,3,2,8
13、,-6,1,-4,-2; int bNN=3,6,-9,2,-8,3,5,-2,-7; int i,j,cNN; for(i=0;iN;i+) /计算矩阵C for(j=0;jN;j+) cij=aij+bij; for(i=0;iN;i+) /输出矩阵C for(j=0;jN;j+) coutsetw(5)cij; coutendl; 程序运营成果为: 10 1 -6 4 0 -3 6 -6 -9Press any key to continue 3. #include void f2(int& x,int& y) int z=x;x=y;y=z; void f3(int* x,int* y
14、) int z=*x;*x=*y;*y=z; void main() int x=10,y=26; coutx,y=x,yendl; f2(x,y); coutx,y=x,yendl; f3(&x,&y); coutx,y=x,yendl; x+;y-; f2(y,x); coutx,y=x,yendl; 程序运营成果为:x,y=10,26x,y=26,10x,y=10,26x,y=25,11Press any key to continue五、指出程序或函数功能 1. #include void main() int i,p=1,s=0; int N; coutN; for(i=1;i=N;
15、i+) p*=i; s+=p; coutsendl; 功能为:计算并输出值,其中N值由键盘输入。 2. void fun5(char* a,const char* b) while(*b) *a+=*b+; *a=0; 功能为:实现字符串系统函数strcpy功能,把b所指字符串拷贝到a所指字符数组空间中。六、程序改错,请依照程序段或函数模块功能改写个别地方错误。 1. 下面是一种类定义,存在着3处语法错误,请指出错误行行号并改正。class CE /1行 private: /2行 int a,b; /3行 int getmin() return (ab?a:b); /4行 public /5行
16、 int c; /6行 void SetValue(int x1,int x2,int x3) /7行 a=x1;b=x2;c=x3; /8行 ; /9行 int GetMin(); /10行; /11行int GetMin() /12行int d=getmin(); /13行return (dc?d:c); /14行 /16行错误行行号为_5_、_9_和_12_。分别改正为_ public:_、_和_ int CE:GetMin()_。七、编程: 1. 按照下面函数原型语句编写一种递归函数计算出数组a中n个元素平方和并返回。 int f(int a,int n);编写求平方和函数如下:int
17、 f(int a,int n) if(n=0) return 0;else return an-1*an-1+f(a,n-1);2按照函数原型语句“void p(int n);”编写一种递归函数显示如下图形,此图形是n=5状况。122333444555显示如上图形递归函数如下:includevoid p(int n)if(n!=0) p(n-1);for(int i=0;in;i+) coutn;coutendl; 3. 依照下面类中MaxMin 函数成员原型和注释写出它类外定义。#include#includeclass AA int* a;int n;int MS;public:void
18、InitAA(int aa,int nn,int ms) if(nnms) coutError!endl;exit(1);MS=ms;n=nn;a=new intMS;for(int i=0;iMS;i+) ai=aai;int MaxMin(int& x,int& y);/从数组a前n个元素中求出 /最大值和最小值,并分别由引用参数x和y带回, /同步若n不不大于0则返回1,否则返回0。;类外定义如下:int AA:MaxMin(int& x,int& y)int mx,my;mx=my=a0;for(int i=1;imx) mx=ai;if(ai0) return 1;else return 0;