南开二级C语言上机考试编程题解析:质因子与低于平均分人数

需积分: 0 1 下载量 41 浏览量 更新于2024-08-01 收藏 839KB DOC 举报
"该资源包含了两道南开大学二级C语言上机考试的编程题目,主要涉及基础的C语言编程技巧,包括查找整数的质因子和统计低于平均分成绩的数量。" 第一题是一个查找整数质因子的程序。程序的目标是接收一个2到10000之间的整数,并输出其所有质因子。在给出的代码中,存在一处错误需要修正。原始代码在`IsPrime`函数定义末尾多了一个分号,这会导致编译错误,需要移除。此外,在判断一个数是否为质数的循环中,`if!(n%i)`应该改为`if(!(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 (!(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 are:", k); for (j = 2; j <= k; j++) if ((!(k % j)) && (IsPrime(j))) printf("\n%4d", j); printf("\n"); } ``` 第二题要求编写一个函数`fun`,这个函数的作用是计算数组中低于平均分的元素个数,并将这些元素存储到另一个数组`below`中。给定的源代码中,首先计算平均分`aver`,然后遍历数组,找出低于平均分的元素。在遍历过程中,需要注意将计数器`k`和低于平均分的分数同步更新。在函数`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语言基本语法、循环、条件判断、函数以及数学概念(如质因子、平均值)的理解与应用能力。通过解决这些问题,初学者可以提升自己的编程技能,并更好地理解如何在实际问题中运用C语言。