1、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.
2、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. cina 21. couta 22. 10 19 23. ”456” 24. 5 1 25. strcpy (或strcpy(a,”aaa”)26. 8 0 27. 函数体 28. 类型 29. static 30. ex
3、tern double x ; 31. template 32. 虚拟类型(或类型) 33. 递归 34. template 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
4、*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) coutak3. (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) isize (2)
5、 tablej+1=tablej (3) p7. (1) in (2) new NODE (3) tablei8. (1) inext (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 5
6、7 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的大小, 若s
7、tr1较大则返回1, 若str2较大则返回-1, 若两者相等则返回0。7. 从表头指针f指向的、 由IntNode类型的结点所构成的链表中查找出data域的值最大的结点并返回指向该结点的指针。8. 统计出以表头指针为f的链表中结点的个数。9. 对于以表头指针为f的链表, 依次显示出每个结点的data域的值。10. 首先从键盘上输入一个整数给n, 然后依次输入n个整数建立以表头指针为f的链表。11. 求出并返回字符指针参数s所指向的字符串长度。六、 编程1. #include void main() int x,max; cinx; max=x; for(int i=0;ix; if(xmax)
8、 max=x; coutmax:maxendl; 2. #include 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 void main() int c1,c2,c3; double x; c1=c2=c3=0; cinx; while(x0) if(x=12) c1+; else if(xx; coutc1 c2 c3endl; 4. void fun4(char* a, int b) int i; for(i=0;i=0 & j=9)
9、bj+; a+; 5. double Mean(double aMN,int m,int n) int i,j; double v=0.0; for(i=0; im; i+) for(j=0; jn; 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; in; i+) coutn; coutendl; p(n-1); 8. void p(int n) if(n!=0)
10、p(n-1); for(int i=0; in; i+) coutn; coutendl; 9. int AA:Count(int x) int i,c=0; for(i=0; in;i+) if(ai=x) c+; return c; 10. int AA:Search(int x) int i; for(i=0; in;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; imx) mx=ai; if(ai0) return 1; else return 0; 12. int AA:Compare(AA b) if(n!=b.n) return 0; for(int i=0; ib.n) k=b.n; else k=n; for(int i=0; ib.ai) return 1; else if(aib.ai) return -1; if(k=n & k=b.n) return 0; else if(kn) return 1; else return -1;