南开大学网络技术上机真题100:递归与字符计数详解
5星 · 超过95%的资源 需积分: 10 159 浏览量
更新于2024-08-02
3
收藏 1.71MB DOC 举报
南开大学网络技术上机真题100包含两道编程练习题,旨在考察学生的编程基础和理解能力。第一题是关于递归实现阶乘函数`fun`,第二题则是检测并统计字符串中的大写和小写字母个数。
1. **递归阶乘函数**:
函数`fun`被要求计算一个整数`n`的阶乘。根据题目描述,递归实现阶乘的关键在于处理递归的基本情况(终止条件)和递归调用。填空1中,正确判断n是否大于1或者小于1是确定递归调用的基础,应该使用逻辑运算符`||`,表示"或"关系,即`if(n > 1 || n < 1)`。填空2中,递归的逻辑是将当前的n与n-1相乘,因此是`n * fun(n - 1)`。填空3是终止条件,当n等于1时,阶乘的结果为1,所以填写`1`。
```c
long fun(int n)
{
if (n > 1 || n < 1) // 填空1:处理递归
return n * fun(n - 1); // 填空2:递归调用
else
return 1; // 填空3:终止条件
}
```
2. **统计字符串中的字母**:
第二个题目要求修改一个函数,该函数接收一个字符串`s`作为参数,同时有两个整型变量`a`和`b`,分别用于计数大写和小写字母。题目中的错误集中在字符判断部分,需要确保只增加对应计数器的值,而不是修改字符本身。修改后的代码片段如下:
```c
void fun(char *s, int *a, int *b) // 函数签名不变
{
while (*s) // 遍历字符串
{
if (*s >= 'A' && *s <= 'Z') // 原来的错误:检查大写,不包括小写
(*a)++;
else if (*s >= 'a' && *s <= 'z') // 添加条件:检查小写
(*b)++;
s++; // 移动指针到下一个字符
}
}
```
在主函数`main()`中,只需调用`fun`函数并传递字符串和初始计数器即可。
通过这两道题目,学生可以巩固递归算法的掌握以及字符处理和数组操作的基本技巧。上机测试中,学生需要理解并运用这些概念来解决实际问题。
2021-12-07 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
dxw525
- 粉丝: 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插件介绍