C语言二级考试题库:字符串操作与错误修正

需积分: 3 1 下载量 196 浏览量 更新于2024-08-01 收藏 1.43MB DOC 举报
"这篇资料包含了两道C语言的编程题目,分别是字符串转换和字符串比较的题目,适合于二级C语言的复习与练习。" 这两道题目都是关于C语言的基础操作,涉及字符处理和字符串操作。 第一题是一个填空题,目标是编写一个函数将字符串中的所有小写字母转换为大写字母。程序给出了主函数`main`和待填充的函数`fun`的部分代码。在`fun`函数中,你需要填写缺失的部分。首先,变量`j`被初始化为0,表示遍历字符串的索引。接着,检查每个字符是否在小写字母范围内,如果是,则将其转换为大写字母,转换方式是将ASCII码值加上32(因为大写字母的ASCII码比小写字母高32)。如果当前字符不是小写字母,那么索引`j`自增,继续检查下一个字符。完整的`fun`函数应该是这样的: ```c void fun(char* pf) { int j = 0; while(*(pf + j)) { if(*(pf + j) >= 'a' && *(pf + j) <= 'z') { *(pf + j) = *(pf + j) - 32; j++; } else { j++; } } } ``` 第二题是一个改错题,要求编写一个函数`fun`,将两个字符串`a`和`b`中ASCII值较小或相等的字符放入数组`c`。原程序的错误在于比较条件和字符更新的逻辑。正确的版本应该是,当`*p`和`*q`都不为0时,才进行比较和更新,同时,更新`p`和`q`的指针。修复后的`fun`函数如下: ```c void fun(char* p, char* q, char* c) { int k = 0; while(*p && *q) { if(*p <= *q) { c[k] = *q; } else { c[k] = *p; } if(*p) p++; if(*q) q++; k++; } } ``` 这两道题目的解决需要对C语言的字符处理、字符串操作以及基本的ASCII码知识有深入理解。通过解决这些题目,可以提高对C语言基本语法和字符串处理技巧的掌握。
2024-06-08 上传