南开大学计算机等级考试上机真题解析
需积分: 1 151 浏览量
更新于2024-07-31
收藏 647KB DOC 举报
"这是两套计算机等级考试的上机题目,主要涉及C语言编程。第一套题目是一道关于计算阶乘的填空题,要求完成FUN函数以计算10的阶乘;第二套题目是一个改错题,目的是找到并修正代码中的错误,以便程序能正确输出给定整数的所有素数因子。"
在第一套题目中,我们需要填写的FUN函数是一个递归函数,用于计算整数n的阶乘。填空如下:
1. 第1处填空:n>1。这里是一个条件判断,确保只有当n大于1时才进行递归计算,因为1的阶乘是1,0的阶乘是1,而负数没有定义阶乘,所以n必须大于1。
2. 第2处填空:n-1。这是递归调用的一部分,每次递归都将n减1,直到n等于1为止。
3. 第3处填空:1。当n等于1时,递归结束,返回1作为阶乘的基础值。在C语言中,长整型常量可以用L或l后缀表示,但在这里返回1即可,因为1的长整型表示与整型相同。
第二套题目中,给定的程序旨在找出并打印出输入整数的所有素数因子。错误出现在两个地方:
1. 第1处:Isprime(intn); 应该改为 Isprime(int n)。这是函数声明的语法错误,缺少了空格。
2. 第2处:if!(n%i) 应该为 if (!(n%i))。这里是一个逻辑运算符的优先级问题,!应在括号内,以确保先判断n是否能被i整除,再进行逻辑非操作。
修正后的IsPrime函数如下:
```c
IsPrime(int n) {
int i, m;
m = 1;
for (i = 2; i < n; i++) {
if (!(n % i)) { // 修正此处
m = 0;
break;
}
}
return (m);
}
```
斐波纳契数列的题目中,要求编写一个函数输出斐波纳契数列,其规则是每个数是前两个数的和。通常,斐波纳契数列的前两个数字是0和1。因此,可以这样填写函数:
```c
void fun(int N) {
int a = 0, b = 1, c;
printf("%d %d ", a, b);
for (int i = 2; i < N; i++) {
c = a + b;
printf("%d ", c);
a = b;
b = c;
}
}
```
这个函数首先打印前两个数0和1,然后通过循环计算并打印接下来的N-2个斐波纳契数。
2010-04-25 上传
2010-01-26 上传
2009-10-12 上传
2012-09-09 上传
2014-07-07 上传
cr1106
- 粉丝: 0
- 资源: 1
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍