南开二级C语言上机题目解析:错误修复与编程挑战

需积分: 9 0 下载量 145 浏览量 更新于2024-10-22 收藏 96KB DOC 举报
"C语言编程题目集,包括改错题和编程题,主要涉及质因子输出和统计低于平均分人数的功能。" 这篇摘要涉及到两道C语言的编程题目,分别是南开大学二级C语言考试的改错题和编程题。首先我们来详细分析这两道题目。 1、改错题1: 该题目的目标是读入一个整数,并输出其所有质因子。程序中存在错误,需要修正。问题出现在以下两处: - 函数`IsPrime`定义末尾的分号应当去掉,即`IsPrime(int n);` 应改为 `IsPrime(int n) { ... }` - 在判断是否为质数的条件语句中,逻辑操作符使用错误,`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); } main() { int j, k; clrscr(); printf("Please enter an integer number between 2 and 10000:"); scanf("%d", &k); printf("\nThe prime factor(s) of %d is(are):\n", k); for (j = 2; j <= k; j++) if ((!(k % j)) && (IsPrime(j))) printf("\n%4d", j); printf("\n"); } ``` 2、编程题1: 这道题要求编写一个函数`fun`,该函数接收一个成绩数组`score`,计算平均分并找出低于平均分的分数,返回低于平均分的人数,并将这些分数存放在`below`数组中。 已给出部分源代码如下: ```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; // 返回低于平均分的人数 } // 主函数main和其他函数省略... ``` 这两道题目都属于基础的C语言编程练习,涵盖了条件判断、循环、函数调用等基本概念。对于学习C语言的学生来说,这样的练习有助于巩固基础知识,提升编程能力。同时,解决这类问题也能帮助学生更好地理解和应用逻辑运算符、数组操作以及函数的使用。