南开二级C语言:纠正打印质因子程序及成绩处理函数
需积分: 0 67 浏览量
更新于2024-07-23
收藏 63KB DOC 举报
南开大学二级C语言上机改错100题之第1题涉及了一个质数因子查找的程序,该程序的目标是读入一个2到10000之间的整数,并打印出其所有的质因子。原始代码存在以下错误:
1. 在IsPrime函数定义后忘记添加函数体,应将"IsPrime(int n);"改为"IsPrime(int n) {",并在大括号内开始编写代码。
```c
IsPrime(int n) {
int i, m;
m = 1;
for (i = 2; i < n; i++) {
if (!(n % i)) { // 更正错误的条件判断,使用"!"运算符应为"!"
m = 0;
break;
}
}
return m;
}
```
2. 在主函数`main()`中,当检查`j`是否为`k`的质因子时,原始代码中的条件判断有误,应使用`IsPrime(j)`来测试`j`是否为质数,而不是直接检查`!(k % j)`。更正后的代码如下:
```c
main() {
// ...其他代码...
for (j = 2; j <= k; j++) {
if (IsPrime(j) && !(k % j)) {
printf("%4d", j);
}
}
// ...其他代码...
}
```
接下来是第二个编程题,题目要求编写一个函数`fun`,计算并返回成绩数组中低于平均分的人数及其分数。原始代码给出了部分函数头和循环结构,但缺失了关键部分。首先,需要计算平均分`aver`,然后遍历数组,检查每个分数是否低于平均分,并累加计数。以下是修复后的`fun`函数:
```c
int fun(int score[], int m, int below[]) {
int i, k = 0;
float aver = 0;
for (i = 0; i < m; i++) {
aver += score[i];
}
aver /= m;
for (i = 0; i < m; i++) {
if (score[i] < aver) { // 检查是否低于平均分
below[k++] = score[i]; // 将分数放入below数组
}
}
return k; // 返回低于平均分的人数
}
```
这两个问题都集中在理解C语言语法和逻辑条件上,特别是函数调用和质数检测。通过修正这些错误,程序将正确地找到输入整数的质因子,并根据成绩数组计算低于平均分的人数和分数。
2009-03-11 上传
2007-07-01 上传
2010-11-03 上传
点击了解资源详情
2011-06-23 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
tianzhaokugua
- 粉丝: 0
- 资源: 2
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录