### 谭浩强《C++程序设计》课后习题答案及思路分析 #### 第一章:基础知识 **1.5题** 本题考察了基本的C++输出语句`cout`。通过将字符串拼接在一起输出,展示了一个简单的C++程序结构。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { cout << "This" << "is"; // 连续使用<<操作符连接字符串 cout << "a" << "C++"; cout << "program."; return 0; } ``` **知识点**: 1. **头文件**:`#include<iostream>`引入标准输入输出流。 2. **命名空间**:`using namespace std;`简化了std命名空间下的元素引用。 3. **主函数**:`int main()`是程序执行的起点。 4. **输出语句**:`cout`用于向标准输出设备(如屏幕)输出数据。 5. **字符串拼接**:使用`<<`操作符可以将多个字符串拼接输出。 **1.6题** 该题目考察了变量声明、赋值与算术运算。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { int a, b, c; // 声明三个整型变量 a = 10; // 给a赋值为10 b = 23; // 给b赋值为23 c = a + b; // 将a和b相加的结果赋值给c cout << "a+b="; // 输出字符串 cout << c; // 输出计算结果 cout << endl; // 换行 return 0; } ``` **知识点**: 1. **变量声明与初始化**:声明整型变量并为其赋初值。 2. **算术运算**:使用`+`运算符进行加法运算。 3. **表达式与赋值**:`c = a + b;`将表达式的结果赋给变量c。 **1.7题** 该题考查了函数的定义与调用。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { int a, b, c; int f(int x, int y, int z); // 函数声明 cin >> a >> b >> c; // 输入三个整数 c = f(a, b, c); // 调用函数f,并将返回值赋给c cout << c << endl; return 0; } int f(int x, int y, int z) // 函数定义 { int m; if (x < y) m = x; else m = y; if (z < m) m = z; return (m); } ``` **知识点**: 1. **函数声明与定义**:在主函数前先声明函数,然后定义函数实现。 2. **条件判断**:使用`if...else`结构进行条件判断。 3. **参数传递**:将变量的值作为参数传递给函数。 4. **函数返回值**:通过`return`关键字返回一个值。 **1.8题** 该题考察了输入输出以及表达式的直接使用。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { int a, b, c; cin >> a >> b; // 输入两个整数 c = a + b; // 计算a和b的和,并赋值给c cout << "a+b=" << a + b << endl; // 直接输出表达式的结果 return 0; } ``` **知识点**: 1. **直接输出表达式**:`cout << "a+b=" << a + b << endl;`可以直接输出表达式的结果。 **1.9题** 本题进一步考察了函数定义与调用。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { int a, b, c; int add(int x, int y); // 函数声明 cin >> a >> b; // 输入两个整数 c = add(a, b); // 调用add函数,并将返回值赋给c cout << "a+b=" << c << endl; // 输出结果 return 0; } int add(int x, int y) // 函数定义 { int z; z = x + y; return (z); } ``` **知识点**: 1. **函数定义与调用**:定义了一个名为`add`的函数,用于实现两个整数相加的功能。 #### 第二章:字符与字符串 **2.3题** 该题考察了字符常量及其输出。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { char c1 = 'a', c2 = 'b', c3 = 'c', c4 = '\101', c5 = '\116'; // 定义字符 cout << c1 << c2 << c3 << '\n'; // 输出abc换行 cout << "\t\b" << c4 << '\t' << c5 << '\n'; // 输出缩进+退格+a+tab+t+换行 return 0; } ``` **知识点**: 1. **字符常量**:使用单引号括起来的一个字符。 2. **转义序列**:`\101`表示ASCII码为101的字符(即'a'),`\116`表示ASCII码为116的字符(即't')。 3. **特殊字符**:`\t`表示制表符,`\b`表示退格。 **2.4题** 该题进一步考察了字符串输出与转义序列的应用。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { char c1 = 'C', c2 = '+', c3 = '+'; cout << "Isay:\""<< c1 << c2 << c3 << '\"'; // 输出字符串,注意双引号的转义 cout << "\t\t" << "Hesays:\"C++isveryinteresting!\"" << '\n'; // 输出字符串 return 0; } ``` **知识点**: 1. **字符串输出**:使用双引号括起来的一串字符。 2. **转义字符**:`\"`表示双引号本身,用于字符串中的双引号转义。 **2.7题** 该题考查了自增运算符与复合赋值运算符的使用。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { int i, j, m, n; i = 8; j = 10; m = ++i + j++; // 先自增i再加j,j先使用后自增 n = (++i) + (++j) + m; // i和j先自增再参与运算 cout << i << '\t' << j << '\t' << m << '\t' << n << endl; // 输出结果 return 0; } ``` **知识点**: 1. **自增运算符**:`++`用于对变量值加1。 2. **复合赋值运算符**:`+=`表示加上等于,用于更新变量的值。 3. **运算顺序**:`++i`表示先自增再使用,`j++`表示先使用后自增。 **2.8题** 本题考察了字符变量的操作。 **代码解读**: ```cpp #include<iostream> using namespace std; int main() { char c1 = 'C', c2 = 'h', c3 = 'i', c4 = 'n', c5 = 'a'; c1 += 4; // 对字符进行数值加法 c2 += 4; c3 += 4; c4 += 4; c5 += 4; cout << "passwordis:" << c1 << c2 << c3 << c4 << c5 << endl; // 输出密码 return 0; } ``` **知识点**: 1. **字符与数值的转换**:字符可以看作是其ASCII码对应的整数,可以进行加减等操作。 2. **复合赋值运算符**:`+=`表示加上等于,用于更新字符变量的值。 #### 第三章:浮点运算与格式化输出 **3.2题** 该题考查了浮点运算与格式化输出。 **代码解读**: ```cpp #include<iostream> #include<iomanip> using namespace std; int main() { float h, r, l, s, sq, vq, vz; const float pi = 3.1415926; cout << "please enter r, h: "; cin >> r >> h; l = 2 * pi * r; s = r * r * pi; sq = 4 * pi * r * r; vq = 3.0 / 4.0 * pi * r * r * r; vz = pi * r * r * h; cout << setiosflags(ios::fixed) << setiosflags(ios::right) // 设置输出格式 << setprecision(2); // 设置保留小数点后两位 cout << "l=" << setw(10) << l << endl; cout << "s=" << setw(10) << s << endl; cout << "sq=" << setw(10) << sq << endl; cout << "vq=" << setw(10) << vq << endl; cout << "vz=" << setw(10) << vz << endl; return 0; } ``` **知识点**: 1. **浮点运算**:涉及圆周率π、圆的周长、面积、球的表面积与体积等计算。 2. **格式化输出**:使用`setiosflags`设置输出对齐方式,`setprecision`设置小数点后位数。 3. **标准库函数**:`setw`用于设置输出字段宽度。 **3.3题** 该题考查了更复杂的浮点运算与格式化输出。 由于题目中没有给出具体的代码,这里不进行详细解读。但可以推测,该题可能涉及更复杂的数学公式计算,如三角函数、指数函数等,同时可能要求使用更多的格式化输出技巧来美化输出结果。例如,可以考虑如何计算几何图形的面积、体积等,并以友好的方式输出这些结果。 以上是针对给定文件中部分习题的答案及解析,这些习题覆盖了C++程序设计的基础知识,包括基本语法、数据类型、算术运算、函数定义与调用、字符与字符串操作等内容。通过这些练习,可以帮助读者更好地理解和掌握C++编程语言的基本概念和技能。
剩余63页未读,继续阅读
- 粉丝: 2
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助