C语言程序:计算公式与排序算法错误修正
需积分: 42 49 浏览量
更新于2024-07-18
13
收藏 575KB DOC 举报
在C语言程序改错题库中,第1题考察的是编写一个函数来计算一个公式,该函数接受一个整数形参`m`,计算从3到\(2m-3\)的所有奇数倒数之和。题目给出的代码中存在几个错误:
1. 在`double y=1`的定义中,缺少了分号`;`,应该将其补全。
2. `for`循环的条件判断错误,当前的`i<m`会导致循环结束在\(2m-4\),因为最后一个奇数是\(2m-3\)。应更改为`for(i=3; i<=m; i++)`或`for(i=3; i<m+1; i++)`,确保循环直到\(2m-3\)。
3. 计算1/(2i-3)时,表达式中的`2i-3`需要加上括号`(2i-3)`,确保优先级正确。
修正后的代码如下:
```c
double fun(int m)
{
double y = 1; // 添加分号
int i;
for(i = 3; i <= m; i++) // 修改循环条件
{
y += 1.0 / (2 * i - 3);
}
return(y);
}
```
第2题涉及选择排序算法,代码中的错误包括:
- 选择法中交换`a[p]`和`a[j]`的位置时,应当将`t`保存`a[j]`的值,而不是直接赋值。
- `p`的初始值在内层循环后仍然保持不变,应将其初始化为`j+1`,以便找到较小的元素。
修正后的`fun`函数部分代码如下:
```c
for(i=j+1; i<n; i++) // 更新内层循环的起始位置
{
if(a[i] > a[p])
{
t = a[j]; // 保存a[j]的值
a[j] = a[i]; // 交换位置
a[i] = t;
p = j; // 更新最小元素的索引
}
}
```
这两个问题的修正不仅涉及语法,还涉及算法逻辑的理解和实现,通过这些实例,学习者可以提升对于C语言基础语法和常用算法的掌握。
2010-01-28 上传
2022-07-11 上传
2022-07-11 上传
2021-10-12 上传
2023-09-03 上传
2010-07-18 上传
2022-11-03 上传
sherlock185416
- 粉丝: 2
- 资源: 9
最新资源
- lianjia-spider:链家二手房爬虫,支持爬取指定城市,户型,价位二手仓库,并通过电子提供跨平台UI,可记录历史价格,售出仓库等信息
- NetCDF数据在ArcMap中的使用
- spark-ifs:使用Apache Spark在大型数据集上基于迭代过滤器的特征选择
- quazip 压缩解压库 qt c++
- my-max-gps
- elastic
- 图像相似度识别比较案例
- WuBinCPP-MCU_Font_Release-master.zip
- eslint-plugin-no-es2015:一些禁用es2015的eslint规则
- 购物
- DotNetHomeWork:武汉大学周三上软件构造基础作业仓库
- linkedin-clone:LinkedIn Clone由React和Redux制作
- 实用数据分析:利用python进行数据分析
- Noobi:一个执行Shellcode的简单工具,能够检测鼠标移动
- Codecademy项目:学习数据科学时完成的项目
- separator-escape