C++04737 第2章 课后练习题 完整答案

第一章

一、单项选择题

1. D string类(字符串类)在定义式必须使用双引号,不能使用单引号

2. D

二、作图题

1. 参照课本P38

类图 对象图 学生 student 张明 性别 sex sex(男)

age(12) 年龄 age 操作1 操作1 操作2 操作2

?? ?? ?? ?? 2.圆类的类图如下: 圆 circle 圆心横坐标 float x; 圆心纵坐标 float y; 圆的半径 float r; 计算圆的面积 area( ) 3.班级类的类图 班级 classes 年级 int grade; 班别 int num1; 班级人数 int num2; 打扫卫生 sweep( ); 做早操 practice( ); ???? 4.电话卡类图 电话卡 phonecard 电话号码 long long num1; 国家代码 int num2; 电话归属地 int num3; 5.电话卡类图 电话卡 phonecard 电话号码 long long num1; 国家代码 int num2; 电话归属地 int num3; 通话时间 time1( ); 剩余话费 money( ); 剩余流量 flow( ); 使用业务 operations( ); ????

李红 sex(女) age(11) 操作1 操作2 ?? ?? 三、编程题(可直接复制到VC++ 6.0 运行)

1. 使用多种方法编写将两个字符串连接在一起的程序。 #include #include using namespace std; void main() {

//使用string类定义字符串,完成字符串连接

string str1(\初始化字符串 cout << \字符串1:\ cout << \字符串2:\ string str3;

str3 = str1 + str2; //使用加号\连接字符串 cout << \合并后的字符串:\ cout << endl;

//使用char数组定义字符串,完成连接

char ch1[10]=\ char ch3[30]={'\\0'}; //必须对字符数组ch3初始化 int i=0, k=0;

while(ch1[i] != '\\0') //首先将字符数组1添加到数组ch3 {

ch3[k] = ch1[i]; i++; k++; } i=0;

while(ch2[i] != '\\0') //然后将字符数组ch2添加到数组ch3 {

ch3[k] = ch2[i]; i++; k++; }

cout << \字符串1:\ cout << \字符串2:\

cout << \合并后的字符串:\}

2. 已知一个string的对象str的内容为“We are here!”,使用多种方法输出“h”。

#include #include #include using namespace std; void main() {

}

string str = \

cout << str[7] << endl; //假设已知在第7位,则直接输出

int k = str.find('h',0); //参照课本P42,自动查找字符'h'的位置 //使用string类自身的成员函数find查找字符'h'的位置,在第7位。 //使用substr函数截取字符 string str1 = str.substr(k,1); //substr(起始位置,截取的长度) cout << \使用substr函数截取的字符:\//使用数组形式输出字符

cout << \使用数组形式输出字符:\

//使用algorithm里的find函数查找字符:返回字符型指针

char *p = find(str.begin(), str.end(), 'h'); //参照P17、P45 cout << \使用algorithm里的find函数查找字符:\

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4