}
voidprint(char*s)
{
char*s1=s;
if(*s1=='\0')return;
while(*s1)
s1++;
cout<<*(--s1);
*s1='\0';
print(s);
}
(6)
#include
int&func(intn,intx[]);
voidmain()
{
inti;
ints[]={5,4,3,2,1};
for(i=0;i<5;i++)
func(i,s)=i;
for(i=4;i>=0;i--)
cout<
}
int&func(intn,intx[])
{
returnx[n];
}
4.编程题
习题参考答案
第1章C++语言概述
1.填空题
(1)函数说明,函数体
(2)声明区,主程序区,函数定义区
(3)多态性
(4)namespace,using
(5)std
(6)cin,>>
(7)//
(8)对数据的操作
2.判断题
(1)对
(2)错(3)错(4)错(5)错
3.改错题
(1)没有函数体,应改为
voidmain(){};
(2)语句没有分号,应改为
usingnamespacemyspace;
(3)cout和操作符<<共同完成输出的功能,应改为
cout<<"Inputyourname:
";
(4)应改为
#include
4.简答题(略)
5.编程题(略)
第2章基本数据类型、运算符与表达式
1.选择题
(1)B
(2)D(3)B(4)D(5)B
2.简答题
(1)(a)、(c)(e)、(f)、(g)、(h)、(i)
(2)(a)、(g)、(i)、(j)
(3)
(a)5.5
(b)0
(c)20
(d)0,0
(e)1
(f)1,2
(g)3
(h)-40
(i)2
(j)3
(k)s1>='0'&&s1<='9'
(l)N!
=0
3.读程序写结果
(1)0,15
(2)(1、1、1),(-1、-1、-1)
(3)
(a)a*a+2*a*b+b*b
(b)4.0/3.0*3.1415926*R*R*R
(c)5.0/9.0*(F-32)
(d)b>=a&&b<=c
(4)
36
41
43
(5)
x=1
4.编程题(略)
第3章C++的控制语句
1.选择题
(1)B
(2)A(3)A(4)C(5)A
2.判断题
(1)错
(2)对(3)对(4)错(5)错
3.读程序写结果
(1)
1
22
333
4444
55555
(2)
1
121
12321
1234321
123454321
(3)
j的值为0;
i的值为2;
4.编程题(略)
第4章函数
1.填空题
(1)void
(2)静态全局变量,static
(3)函数重载
(4)inline
(5)递归函数
(6)宏定义命令,文件包含命令,条件编译命令
2.判断题
(1)错
(2)错(3)错(4)错(5)错
(6)对(7)错(8)错(9)对(10)对
3.读程序写结果
(1)
x=7,y=4
x=9,y=5
(2)
34.56
101
(3)
16
22
28
(4)
1215182124
(5)
2,1,4,1,3,2,1,
4.简答题(略)
5.编程题(略)
第5章构造数据类型
1.选择题
(1)C
(2)D(3)A(4)B(5)C
2.判断题
(1)错
(2)对(3)对(4)错(5)错
3.读程序写结果
(1)
153
(2)
42
256810
(3)
65535,21
(4)
4
19
(5)
6904
(6)
4
3
2
1
0
4.编程题(略)
第6章类和对象
1.填空题
(1)类,对象,类
(2)数据成员,成员函数
(3)不能
(4)private,protected,public,private
(5)成员函数
(6)friend
(7)类名,作用域运算符
(8)对象名.成员名,指针变量名->成员名,(*指针变量名).成员名
(9)构造,析构,构造,析构
(10)常量数据,引用数据
(11)全局,数据类型,所属的类
(12)常成员,只读
(13)成员,友元
(14)类数据成员,类成员函数
(15)this
(16)浅拷贝
2.选择题
(1)C
(2)C(3)B(4)C(5)B
(6)C(7)D(8)B(9)C(10)D
(11)A(12)C(13)D(14)D(15)B
3.改错题
(1)man1.salary=1000.00;不能在类外访问类的私有成员
(2)floatr=0;和floatc=0;类本身是抽象的,不能在类的定义体中给其数据成员赋值
}后缺少分号“;”
(3)成员函数voidsetdata(floatx1,floaty1,floatr);没有实现
(4)构造函数名point()应与类名同名,为Point
没有头文件包含#include
4.读程序写结果题
(1)
x=0,y=0
x=100,y=200
(2)
x=100,y=200
x=1000,y=2000
t=3.14
(3)
Sta:
:
fun2()=10
s.fun2()=11
r.a=20
(4)
Constructor1called!
x=0
Constructor2called!
x=100
Destructorcalled!
Destructorcalled!
(5)
57
5.简答题(略)
6.编程题(略)
第7章继承和派生
1.填空题
(1)继承
(2)基类,派生类
(3)private,protected,public,private
(4)不可访问,保护,公有
(5)私有
(6)单
(一),多(重)
(7)赋值兼容规则
(8)静态,动态
(9)抽象类
2.选择题
(1)B
(2)A(3)B(4)C(5)B
(6)A(7)D(8)B(9)B(10)B
(11)D(12)B
3.改错题
(1)本题的错误主要是数据成员的访问权限问题:
基类的私有成员在派生类中不可访问,如fb()函数中的a3=30;语句;类的私有和保护成员在类外不能访问,如main函数中的x.a2=20;.a3=30;,y.a2=200;,y.a3=300;,y.b2=2000;和y.b3=3000;语句。
(2)本题的错误主要是成员函数的访问权限问题:
由于派生类Derived是基类Base的保护派生类,所以基类中的私有成员变成派生类的不可访问成员,而基类的保护和公有成员则变成派生类的保护成员。
对于类的不可访问和保护成员在类外是不能访问的,故main函数中的语句obj.funl();,obj.fun2();和obj.fun3();是错误的。
4.读程序写结果题
(1)
d=110
b=190
d=110
d=110
(2)
d=110
b=190
d=110
b=90
(3)
基类B1的构造函数被调用
基类B3的构造函数被调用
基类B2的构造函数被调用
派生类D的构造函数被调用
派生类D的析构函数被调用
基类B2的析构函数被调用
基类B3的析构函数被调用
基类B1的析构函数被调用
(4)
A
B
C
D
D
(5)
A
B
D
D
(6)
A
A
B
D
D
(7)
A
B
C
D
D
(8)
5
25
5.简答题(略)
6.编程题(略)
第8章运算符重载
1.填空题
(1)函数重载
(2)重载为类的成员函数,重载为类的友元函数
(3)Operator
(4)1,2
(5)友元
2.选择题
(1)B
(2)D(3)A(4)D(5)B
(6)C(7)C(8)C
3.简答题(略)
4.编程题(略)
第9章模板
1.填空题
(1)类模板,函数模板
(2)类,对象
(3)数据类型
(4)fun(5)
2.选择题
(1)C
(2)B(3)C(4)B(5)D
3.简答题(略)
4.编程题(略)
第10章文件
1.填空题
(1)FILE,stdio.h
(2)stdio.h,fopen,fclose
(3)顺序,随机
(4)cin,>>,cout,<<
(5)ios
(6)fstream,open,close
(7)文件指针的当前位置,文件开头,文件尾
2.选择题
(1)B
(2)B(3)A(4)D(5)B
(6)D(7)C(8)B(9)A(10)B
3.简答题(略)
4.编程题(略)
第11章string类与标准模板库STL
1.填空题
(1)字符数组,string类
(2)string
(3)容器,迭代器,算法
(4)顺序,关联
(5)指针
(6)函数模板
2.简答题(略)
3.编程题(略)
第12章异常处理
1.填空题
(1)throw,try,catch
(2)多
(3)数据类型
(4)catch(…)
(5)相反
2.判断题
(1)错
(2)对(3)错(4)错(5)错
3.简答题(略)
4.编程题(略)