资源描述
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<<a[k]
3. (1) int n
(2) k=j
(3) a[k]=x
4. (1) int a[] (或int* a)
(2) a[j+1]=a[j]
(3) break
5. (1) (low+high)/2
(2) return mid
(3) low=mid+1
6. (1) i<size
(2) table[j+1]=table[j]
(3) p
7. (1) i<n
(2) new NODE
(3) table[i]
8. (1) i<n
(2) table[i]
(3) L=p
9. (1) NODE* p=L
(2) p=p->next
(3) p->data
10. (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 -9
6. 10 25
15 35
10 25
7. 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. 显示输出数组a[n]中大于等于平均值的所有元素值。
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++) b[i]=0;
while(*a) {
int j=*a-’0’;
if(j>=0 && j<=9) b[j]++;
a++;
}
}
5. double Mean(double a[M][N],int m,int n)
{
int i,j;
double v=0.0;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
v+=a[i][j];
v/=m*n;
return v;
}
6. int f(int a[],int n)
{
if(n==0) return 0;
else return a[n-1]*a[n-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(a[i]==x) c++;
return c;
}
10. int AA::Search(int x)
{
int i;
for(i=0; i<n;i++)
if(a[i]==x) return i;
return -1;
}
11. int AA::MaxMin(int& x, int& y)
{
int mx,my;
mx=my=a[0];
for(int i=1; i<n; i++) {
if(a[i]>mx) mx=a[i];
if(a[i]<my) my=a[i];
}
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(a[i]!=b.a[i]) 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(a[i]>b.a[i]) return 1;
else if(a[i]<b.a[i]) return -1;
if(k==n && k==b.n) return 0;
else if(k<n) return 1;
else return -1;
}
展开阅读全文