谭浩强C语言答案详解:交换变量、求余及三角形面积计算

需积分: 9 0 下载量 196 浏览量 更新于2024-07-27 收藏 214KB DOC 举报
本资源是C语言谭浩强版的解答集,涵盖了第十章至第十五章的内容。以下是章节中部分知识点的详细解析: 1. **第九章:编译预处理与宏定义** - **9.1 宏定义与参数交换**: 宏`#define CHANGE(a,b,t) t=a; a=b; b=a`用于实现两个整数参数a和b的值互换。在`main()`函数中,通过`scanf()`读取用户输入的两个整数c和d,然后调用这个宏来交换他们的值,最后用`printf()`输出交换后的结果。 - **9.2 余数计算宏**: `#define Q(a,b) a%b`定义了一个宏,用于计算两个整数a和b相除的余数。在`main()`中,读取c和d的值后,通过这个宏计算余数,并输出结果。 - **9.3 三角形面积计算**: 宏`#define SSS(m,n,k) (m+n+k)/2`用于求三角形的半周长,它是面积公式的基础。另外两个宏`#define AQRT(m,n,k)`用于求面积,这里有两种不同的实现方式: - 方法一:使用`sqrt()`函数直接计算,简化公式为`((m+n+k)/2)*((m+n+k)/2-m)*((m+n+k)/2-n)*((m+n+k)/2-k)`。 - 方法二:同样计算半周长,但将乘法部分替换为`(m+n+k)/2`,避免浮点数乘法带来的精度问题,公式为`sqr(((m+n+k)/2)*((m+n+k)/2-m)*((m+n+k)/2-n)*((m+n+k)/2-k))`。 2. **使用宏进行程序编写**: 这些宏的使用体现了C语言预处理器的强大功能,通过宏定义可以简化代码,提高可读性和可维护性。在实际编程中,宏通常用于常量替换、算法封装或者格式化输出等场景,这里的例子展示了如何将复杂的数学运算封装成宏,方便在多个地方复用。 3. **输入输出与格式控制**: 在`main()`函数中,`scanf()`用于从用户处获取输入,`printf()`用于输出结果。通过控制台输出,可以看到变量的精确值,以及格式化输出如`%.3f`用于保留小数点后三位。 本资源提供了谭浩强版C语言教材中第9至15章的关键知识点解答,涉及宏定义、数学计算和基本的输入输出操作,适合学习者查阅和巩固C语言基础。通过理解和实践这些例程,可以加深对C语言预处理器和函数式编程的理解。