C语言编程:字符串大小写转换与字符比较

需积分: 10 35 下载量 27 浏览量 更新于2025-01-08 收藏 914KB DOC 举报
“计算机二级C语言南开大学的100道上机题目,主要涵盖字符串操作和字符处理。” 在这两道题目中,我们看到了关于C语言的基础知识,特别是字符串处理和字符比较的实践应用。 首先,第一道题目是一道填空题,目标是编写一个函数将字符串中的小写字母转换为大写字母。在这个问题中,我们需要了解C语言中字符数据类型的ASCII码表示,以及如何通过位操作来改变字母的大小写。对于小写字母,它们的ASCII码比大写字母的ASCII码大32。因此,要将小写字母转换为大写,只需将字符的ASCII值减去32即可。下面是完成这个功能的代码片段: ```c void main() { int j; char str[N] = "123abcdefABCDEF!"; char* pf = str; system("CLS"); printf("***original string***\n"); puts(str); fun(pf); // ... } void fun(char* pf) { while(*(pf+j)) { if(*(pf+j) >= 'a' && *(pf+j) <= 'z') { *(pf+j) -= 32; // 将小写字母转换为大写 j++; } else j++; // 其他非小写字母字符直接跳过 } } ``` 第二道题目是一道改错题,要求编写一个函数比较两个字符串的字符,并将ASCII值较小或相等的字符存入新的字符串。在给定的代码中,有两个错误需要修正。第一个错误是在while循环条件中,应该检查字符串是否已结束,而不是用逻辑或操作符。第二个错误是字符指针在每次迭代时没有正确递增。修正后的代码如下: ```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; p++; // 修正指针递增 q++; // 修正指针递增 k++; } } ``` 这两道题目主要涉及C语言的字符串处理、字符比较、指针操作和基本的ASCII码知识,这些都是C语言编程基础的重要组成部分,对于准备计算机二级C语言考试的考生来说,是必须熟练掌握的技能。