C语言编程练习:阶乘计算、素数因子与查找低分
需积分: 3 169 浏览量
更新于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语言基础语法的理解,包括函数的定义与调用、递归、条件判断、循环、数组操作以及素数判断等核心概念。通过解答这些题目,考生可以提升自己的编程能力和解决问题的能力。
2012-03-09 上传
2011-10-13 上传
2021-10-10 上传
2022-02-28 上传
2021-10-10 上传
2021-10-06 上传
2011-04-24 上传
2011-09-07 上传
2011-03-27 上传