C语言编程练习:阶乘计算、素数因子与查找低分

需积分: 3 2 下载量 80 浏览量 更新于2024-07-28 2 收藏 1.4MB DOC 举报
"这是一份关于2011年计算机二级C语言考试的上机操作题集,包含了填空题、改错题和编程题三种类型的题目。目的是考察考生对C语言的理解和应用能力,特别是涉及函数、循环、条件判断、素数判断以及数组操作等基础知识。" 在提供的上机操作题中,第一道题目是一个递归函数的实现,用于计算给定整数的阶乘。函数`fun`需要完成的功能是计算10的阶乘。根据递归的定义,阶乘函数可以这样表示: ```c long fun(int n) { if (n == 1) // 第1处填空:条件判断,n等于1的情况 return 1; // 第3处填空:返回1,因为1的阶乘是1 else // 对于n大于1的情况 return (n * fun(n - 1)); // 第2处填空:调用自身,参数为n-1 } ``` 第二道题目是一个改正错误的程序,其目标是找出并修正代码中的错误,以便正确地找出并打印输入整数的所有素数因子。问题在于`IsPrime`函数的声明和条件判断语句中。改正后的代码如下: ```c // 改正IsPrime函数的声明 int IsPrime(int n); int IsPrime(int n) { int i, m; m = 1; for (i = 2; i < n; i++) { if (!(n % i)) { // 第2处改正:条件判断的逻辑操作符错误,应为if(!(n%i)) m = 0; break; } } return m; } // main函数保持不变... ``` 第三道题目要求编写一个函数`fun`,该函数接收一个包含M个成绩的数组`score`,返回低于平均分的人数,并将这些成绩存储到`below`数组中。这是一个涉及到数组遍历、计算平均值以及条件判断的问题。可以这样实现`fun`函数: ```c #include <stdio.h> int fun(int score[], int M, int below[], int *count) { int i, sum = 0, avg, index = 0; // 计算平均分 for (i = 0; i < M; i++) { sum += score[i]; } avg = sum / M; // 将低于平均分的分数存入below数组 for (i = 0; i < M; i++) { if (score[i] < avg) { below[index++] = score[i]; (*count)++; } } return 0; } // main函数中调用fun函数... ``` 这些题目旨在检验考生对C语言基础语法的理解,包括函数的定义与调用、递归、条件判断、循环、数组操作以及素数判断等核心概念。通过解答这些题目,考生可以提升自己的编程能力和解决问题的能力。