2023年面向对象程序设计技术自测答案.doc
C+语言程序设计自测练习(二)参考解答一、单项选择题1. D 2. B 3. A 4. D 5. C 6. D 7. C 8. B 9. C 10. D 11. D 12. B 13. A 14. C 15. A 16. C 17. C 18. B 19. B 20. C 21. A 22. D 23. B 24. D 25. A 26. C 27. D 28. D 29. C 30. C 31. D 32. A 33. B 34. D 35. A 36. A 37. B 38. C 39. D 40. C 41. A 42. D 43. D 44. B 45. D 46. C 47. A 48. B 49. C 50. D 二、填空题1. 0 19 2. 常量(或常数) 3. if 4. switch 5. 不断止6. 11 7. 10 8. break 9. continue 10. return 11. 主(或main) 12. 40 13. 192 14. 300 15. 1 2 16. 0 1 17. 8 18. 11 19. n+1 20. cin>>a 21. cout<<a 22. 10 19 23. ”456” 24. 5 1 25. strcpy (或strcpy(a,”aaa”)26. 8 0 27. 函数体 28. 类型 29. static 30. extern double x ; 31. template 32. 虚拟类型(或类型) 33. 递归 34. template<class T> T cubin(T n)return n*n*n ; 35. void 36. static 37. 右边(或后面) 38. extern 39. 头文献 40. 函数体41. 文献包含命令 42. 文献 43. 代码区(程序区) 44. 全局数据 45. 栈46. i*m+j+1 47. 2 4 48. 13 49. 总和 50. 4 51. 地址 DataType* 52. (char*)p 53. int* 54. *p &p 55. *p p 56. *p *p 57. 25 58. 42 59. 26 60. 42 61. 9 7三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。1. (1) cin>>*p (2) p+ (或+p) (3) q- (或-q)2. (1) x/2 (2) x!=0 (3) cout<<ak3. (1) int n (2) k=j (3) ak=x4. (1) int a (或int* a) (2) aj+1=aj (3) break5. (1) (low+high)/2 (2) return mid (3) low=mid+16. (1) i<size (2) tablej+1=tablej (3) p7. (1) i<n (2) new NODE (3) tablei8. (1) i<n(2) tablei(3) L=p9. (1) NODE* p=L (2) p=p->next (3) p->data10. (1) q->next (2) p (3) return p四、写出程序运营结果1. +*+* 2. 1 2 12 2 2 30 3 2 66 3. s=63 4. 264 5. 10 1 -6 4 0 -3 6 -6 -96. 10 25 15 35 10 257. x=13, y=21 x=5, y=8, z=34 8. x,y=10, 26 x,y=26, 10 x,y=10, 26 x,y=25, 11 9. 29 28 57 10. 55 50 11. 4 3 14 五、指出程序或函数的功能1. 显示输出数组an中大于等于平均值的所有元素值。2. 对于二维字符数组a中保存的M个字符串,分别记录并输出其长度小于5、大于等于5且小于15、大于等于15的字符串个数。3. 从一个二维整型数组中查找具有最大值的元素,由引用参数row和col带回该元素的行号和列号。4. 一个递归函数过程,求出两个自然数m和n的最小公倍数。5. 实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。6. 实现strcmp函数的功能,比较两个字符串str1和str2的大小,若str1较大则返回1,若str2较大则返回-1,若两者相等则返回0。7. 从表头指针f指向的、由IntNode类型的结点所构成的链表中查找出data域的值最大的结点并返回指向该结点的指针。8. 记录出以表头指针为f的链表中结点的个数。9. 对于以表头指针为f的链表,依次显示出每个结点的data域的值。10. 一方面从键盘上输入一个整数给n,然后依次输入n个整数建立以表头指针为f的链表。11. 求出并返回字符指针参数s所指向的字符串长度。六、编程1. #include<iostream.h> void main() int x,max; cin>>x; max=x; for(int i=0;i<9;i+) cin>>x; if(x>max) max=x; cout<<"max:"<<max<<endl; 2. #include<iostream.h> void main() int a,b; for(a=6;a<=30; a+) for(b=15;b<=36;b+) if(2*a+5*b=126) cout<<'('<<a<<','<<b<<')'<<endl; 3. #include<iomanip.h> void main() int c1,c2,c3; double x; c1=c2=c3=0; cin>>x; while(x>0) if(x<=12) c1+; else if(x<=15) c2+; else c3+; cin>>x; cout<<c1<< <<c2<< <<c3<<endl; 4. void fun4(char* a, int b) int i; for(i=0;i<10;i+) bi=0; while(*a) int j=*a-0; if(j>=0 && j<=9) bj+; a+; 5. double Mean(double aMN,int m,int n) int i,j; double v=0.0; for(i=0; i<m; i+) for(j=0; j<n; j+) v+=aij; v/=m*n; return v; 6. int f(int a,int n) if(n=0) return 0; else return an-1*an-1+f(a,n-1);7. void p(int n) if(n!=0) for(int i=0; i<n; i+) cout<<n; cout<<endl; p(n-1); 8. void p(int n) if(n!=0) p(n-1); for(int i=0; i<n; i+) cout<<n; cout<<endl; 9. int AA:Count(int x) int i,c=0; for(i=0; i<n;i+) if(ai=x) c+; return c; 10. int AA:Search(int x) int i; for(i=0; i<n;i+) if(ai=x) return i; return -1; 11. int AA:MaxMin(int& x, int& y) int mx,my; mx=my=a0; for(int i=1; i<n; i+) if(ai>mx) mx=ai; if(ai<my) my=ai; x=mx; y=my; if(n>0) return 1; else return 0; 12. int AA:Compare(AA b) if(n!=b.n) return 0; for(int i=0; i<n; i+) if(ai!=b.ai) return 0; return 1; 13. int AA:CompareBig(AA b) int k; if(n>b.n) k=b.n; else k=n; for(int i=0; i<k; i+) if(ai>b.ai) return 1; else if(ai<b.ai) return -1; if(k=n && k=b.n) return 0; else if(k<n) return 1; else return -1;