南开大学C语言二级上机100题-改错与编程
需积分: 9 74 浏览量
更新于2024-08-01
1
收藏 96KB DOC 举报
"2010年南开大学C语言编程练习题目,包含改错题和编程题,旨在考察考生对C语言基础知识的理解和应用能力,特别是关于质因子的判断和找出低于平均分的分数的处理。"
在给定的题目中,我们可以提炼出以下两个知识点:
### 1. 质因子的判断与输出
改错题1的目标是编写一个程序,读取用户输入的整数并找出其所有的质因子。在这个过程中,我们需要理解质因子的定义,即一个数除1和自身外,没有其他正因数的数。程序中存在一处错误,需要进行修正:
- 错误点:`IsPrime` 函数定义末尾的分号。这个分号使得函数定义成为一个空语句,实际上`IsPrime`函数的实现被放置在了另一个独立的代码块中,导致调用错误。修正方法是去掉分号,使`IsPrime`函数定义完整。
- 正确的条件检查:在循环中,判断是否能整除时,原始代码使用了`if!(n%i)`,这实际上是语法错误。应改为`if (!(n%i))`,确保条件检查正确。
```c
IsPrime(int n) {
int i, m;
m = 1;
for (i = 2; i < n; i++) {
if (!(n % i)) { // 修改条件检查
m = 0;
break;
}
}
return (m);
}
```
### 2. 计算低于平均分的分数数量及存储
编程题1要求编写一个函数`fun`,该函数接收一个成绩数组和数组长度,计算并返回低于平均分的人数,并将这些分数存入另一个数组。关键在于计算平均分和遍历数组来找出低于平均分的元素:
- 平均分计算:首先,遍历整个数组,累加所有分数,然后除以人数得到平均分。
- 存储低于平均分的分数:再次遍历数组,将低于平均分的分数添加到`below`数组中,并计数。
```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语言的基础语法、逻辑判断、循环控制以及数组操作等核心概念,同时也是对算法设计和问题解决能力的检验。对于初学者,这类题目有助于巩固和提高C语言编程技能。
2009-09-22 上传
2010-03-21 上传
2010-09-08 上传
2010-04-12 上传
2010-03-26 上传
2010-07-10 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
shijie12345
- 粉丝: 0
- 资源: 1
最新资源
- Gas_Dynamics_1
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- cvanelteren.github.io:个人网站
- node-mysql-db:MySQL的简单包装器,用于执行常见和复杂的任务,例如承诺查询和流式传输大型结果集
- 演示VC++创建鼠标消息处理程序
- comet-ml.github.io:彗星ML代码
- alpinista06.github.io
- VC++在屏幕坐标和窗口坐标之间转换
- riak-client:Perl 波纹客户端
- react-covid-19:使用React JS和covid19.mathdro.id API的COVID-19的全球趋势仪表板
- 物联网:连接RPi,Arduino和世界!-项目开发
- 大漠偏色计算器2.7.exe.zip
- springfilter:idea springboot 拦截器和过滤器使用
- DeepLearning
- Codiad-Theme-Clear:从 Lightux 中清除 Codiad 的主题
- 全维数字观测器输出反馈