C语言学习:谭浩强课后习题与解答解析

需积分: 10 1 下载量 18 浏览量 更新于2024-09-17 收藏 246KB TXT 举报
"谭浩强C语言课后习题答案,包含详细解答,涉及函数递归、素数判断、数组操作等多个知识点。" 首先,我们来分析第一个程序,它涉及到C语言中的递归函数。该程序定义了一个名为`fun`的递归函数,用于计算阶乘。在函数`fun`中,有一个条件语句`if(___1___)`,这里应该填写`m>1`,因为当`m`大于1时,函数会递归调用自身,否则返回结果。在递归调用中,`___2___`的位置应填`m-1`,递归计算`m-1`的阶乘。最后,当`m`等于1时,`return___3___;`这一行返回1,因为1的阶乘是1。 在`main`函数中,调用了`fun(8)`来计算8的阶乘,并将结果打印出来。程序运行正确,输出应该是`8!=40320`。 第二个程序用于找出一个给定整数(2到5000之间)的所有素数因子。程序首先定义了一个名为`Prime`的函数,用于判断一个数是否为素数。在`Prime`函数中,`*error*`部分应该是`if(!(m%j))`,用来检查`m`是否能被`j`整除。如果可以,说明`m`不是素数,设置`p`为0并跳出循环。在`main`函数中,用户输入一个数字,然后程序遍历所有可能的因子,对于每个因子,通过调用`Prime`函数判断是否为素数,并打印出素数因子。 第三个程序处理数组操作,目的是找出数组`point`中的最高分(`high`)。`fun`函数接受一个整数数组`point`,数组的大小`n`,以及一个用于存储最高分的数组`high`。在`fun`函数中,需要实现找出数组`point`中的最大值并将其存储到`high`数组中。由于提供的代码不完整,我们需要补充这部分内容。在`main`函数中,定义了一个包含9个元素的数组`point`,并初始化了一些分数,然后调用`fun`函数找出最高分,最后将结果写入到文件`outfile.dat`中。 总结来说,这三个程序分别展示了C语言的递归函数、素数判断和数组操作等核心概念。通过这些习题,学习者可以深入理解C语言的基本语法和算法设计。在实际编程中,递归函数可用于解决需要重复执行相同任务的问题,素数判断是数论中的基础问题,而数组操作则是数据处理的常用手段。这些知识对于提升编程技能和解决问题能力都至关重要。