修复错误与编程题:2010年南开二级C语言考试重点

需积分: 0 2 下载量 156 浏览量 更新于2024-08-01 收藏 958KB DOC 举报
"这是2010年南开大学计算机等级考试三级网络基础的练习题集,包含改错题和编程题。" 这部分内容涉及到两个题目,分别是C语言的改错题和编程题。 1. 改错题 题目要求编写一个程序,用于找出输入整数的所有质因子。在给定的代码中,有两个错误需要修正: - 错误1:函数`IsPrime`定义末尾的分号应该被去掉。原本的`IsPrime(int n);`应该改为`IsPrime(int n)`。 - 错误2:`if`语句的条件判断不正确。`if!(n%i)` 应该改为 `if (!(n%i))`,这样当`n`可以被`i`整除时,条件才为假,进入分支执行。 修正后的代码如下: ```c #include<conio.h> #include<stdio.h> int IsPrime(int n) { // 去掉分号 int i, m; m = 1; for (i = 2; i < n; i++) { // 修正if语句 if (!(n % i)) { // 将!()改为|() m = 0; break; } } return m; } main() { int j, k; clrscr(); printf("请输入一个介于2和10000之间的整数:"); scanf("%d", &k); printf("该整数的质因子是:"); for (j = 2; j <= k; j++) { if ((!(k % j)) && (IsPrime(j))) printf("%4d", j); } printf("\n"); } ``` 2. 编程题1 这个编程题要求编写一个函数`fun`,计算并返回数组`score`中低于平均分的元素个数,并将这些元素存储到`below`数组中。 提供的部分源代码中,已经有计算平均分和遍历数组的基础框架。需要注意的是,函数需要返回低于平均分的人数,因此需要一个变量`k`来记录此类元素的个数。同时,在遍历数组的过程中,当元素低于平均分且满足条件时,将其添加到`below`数组中。以下是完成的`fun`函数: ```c #include<conio.h> #include<stdio.h> #include<string.h> int fun(int score[], int m, int below[]) { int i, k = 0; // 添加k变量 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语言编程能力,包括条件判断、循环、数组操作以及函数的使用。在解决这类问题时,理解并正确使用逻辑运算符、控制流程语句以及数组处理是非常重要的。