计算机二级考试改错题解析:函数与字符串处理

需积分: 9 1 下载量 149 浏览量 更新于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语言的基础知识,包括循环控制、条件判断、函数定义、指针操作以及字符串处理等,都是计算机二级考试中的常见考点。