二级C语言考试题库:上机填空、改错与编程题解析
需积分: 10 159 浏览量
更新于2024-07-26
收藏 304KB DOCX 举报
“此资源包含2012年3月计算机二级C语言的上机题库,包括填空题、改错题和编程题,适用于准备二级C考试的考生。”
一、填空题
题目要求编写一个计算阶乘的递归函数`fun`。在C语言中,递归函数是一种函数在其定义中调用自身的方法。填空部分如下:
1. 第1处填空:`if(n>1)` 或 `if(1<n)`
这个条件判断用于确定是否需要继续递归。如果n大于1,那么函数会继续调用自身,否则返回1,因为1的阶乘是1。
2. 第2处填空:`n-1`
在递归调用中,需要传入n-1作为参数,因为我们要计算n-1的阶乘,然后将其乘以n得到n的阶乘。
3. 第3处填空:`1` 或 `11` 或 `1L`
当n等于1时,函数返回1,表示1的阶乘。由于返回值类型是`long`,为了确保数值正确,可以写成`1L`来明确表示这是一个长整型常量。
二、改错题
题目中的程序旨在找出输入整数的所有素数因子。有两个错误需要修正:
1. 第1处错误:`Isprime(intn);` 应改为 `Isprime(int n)`
在C语言中,函数定义时,参数名与类型之间需要空格。
2. 第2处错误:`if!(n%i)` 应该为 `if(!(n%i))`
C语言中的逻辑非操作符`!`需要与其他操作符一起使用时,应该放在操作符的前面,即`!(n%i)`,这样表示“如果n不是i的倍数”。
三、编程题
题目要求编写一个函数`fun`,用于找出数组`score`中低于平均分的分数,并存储到另一个数组`below`中。要实现这个功能,我们需要首先计算数组的平均分,然后遍历数组,将低于平均分的元素复制到`below`数组中。以下是可能的代码实现:
```c
#include <stdio.h>
void fun(int score[], int M, int below[], int *count) {
int sum = 0;
for (int i = 0; i < M; i++) {
sum += score[i];
}
double avg = (double)sum / M;
*count = 0;
for (int i = 0; i < M; i++) {
if (score[i] < avg) {
below[*count] = score[i];
(*count)++;
}
}
}
int main() {
int score[] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
int below[10], count = 0;
fun(score, sizeof(score) / sizeof(score[0]), below, &count);
printf("Numbers below average: ");
for (int i = 0; i < count; i++) {
printf("%d ", below[i]);
}
printf("\n");
return 0;
}
```
在这个`fun`函数中,我们首先计算`score`数组的总和`sum`,然后得到平均值`avg`。接着,我们遍历数组,如果元素小于平均值,就将其放入`below`数组中,并更新计数器`count`。最后,在`main`函数中,我们调用`fun`并打印出低于平均分的分数。
2020-09-18 上传
2012-10-29 上传
2009-08-03 上传
2009-11-24 上传
2023-07-05 上传
2021-08-29 上传
2011-12-06 上传
2021-08-01 上传
雨落嫣然
- 粉丝: 1
- 资源: 2
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析