计算机二级考试改错题解析:函数与字符串处理
需积分: 9 77 浏览量
更新于2024-09-26
收藏 48KB TXT 举报
"该资源包含了计算机二级考试中的改错题,包括了三个不同的代码段,分别涉及函数计算、字符串查找和数字位移的实现。"
第一个代码段是用于计算调和级数的一个函数,其中的错误在于循环条件的设置。正确的代码应该在`for`循环中初始化`i`为2,然后将条件设为`i<=m`。修正后的代码为:
```c
for(i=2; i<=m; i++) // 正确的循环条件
```
这个函数`fun`的目标是计算1到m的倒数平方和,其中m=5时结果应为1.463611。修复后的代码可以正确地累加每个项并返回结果。
第二个代码段是一个查找子字符串的函数`fun`,其主要任务是在字符串`s`中查找子字符串`t`。初始错误在于`a`的初始化,它应该被初始化为空指针`NULL`。另外,在内层`while`循环中,当字符不匹配时应立即退出循环。修正后的代码为:
```c
a = NULL; // 初始化a为空指针
while (*r) {
if (*r == *p) {
r++; p++;
} else {
break; // 字符不匹配时退出循环
}
}
```
这段代码修复后,能够正确地找到子字符串在主字符串中的起始位置,或在找不到时返回`NULL`。
第三个代码段的目的是计算一个数字的所有位数之积。原始代码中,`num /= 10`应在`k *= num % 10`之前执行,以确保每次循环都处理新的个位数。修正后的代码为:
```c
do {
k *= (num % 10); // 计算个位数与k的乘积
num /= 10; // 更新num,移除个位数
} while (num);
```
这样,函数`fun`就能正确计算出给定数字的各个位数的乘积,例如输入252时返回2020,输入0时返回0。
这三个代码段涵盖了C语言的基础知识,包括循环控制、条件判断、函数定义、指针操作以及字符串处理等,都是计算机二级考试中的常见考点。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-10-06 上传
2011-04-12 上传
2012-07-01 上传
2022-11-26 上传
2021-10-04 上传
2021-10-10 上传
zjzb19900708
- 粉丝: 0
- 资源: 3