C语言编程:连接两个字符串的函数实现

需积分: 50 7 下载量 189 浏览量 更新于2024-10-23 1 收藏 203KB DOC 举报
"这是一个关于计算机二级考试的模拟试题集,包含了两个题目:一个是字符串连接的填空题,另一个是字符串大小写转换的改错题。题目要求考生填充代码以完成特定功能,分别是将一个字符串接在另一个字符串后面,以及将字符串中的小写字母转换为大写字母。" 在第一个填空题中,目标是编写一个`fun`函数,用于将`str2`字符串连接到`str1`字符串的末尾。这部分试题提供了部分源代码,要求考生在指定位置填写适当的表达式或语句。 1. 填空题详解: - `while(【1】)`:这个循环的目的是计算`str1`的长度。在C语言中,字符串的长度可以通过遍历直到遇到结束符`\0`来确定。所以,填空应为`*(p1+i) != '\0'`,表示当`p1`指向的字符不等于字符串结束符时继续循环。 - `for(;【2】;i++)`:这个循环用于将`str2`的每个字符复制到`str1`的适当位置。循环条件应为`*p2 != '\0'`,意味着当`p2`指向的字符不是字符串结束符时继续循环。 - `*(p1+i)=【3】;`:此处是将`str2`的当前字符复制到`str1`。填空应为`*p2`,因为我们需要将`p2`当前指向的字符赋值给`p1+i`处。 - 最后,添加结束符`\0`,使得`str1`成为一个有效的字符串:`*(p1+i)='\0';` 完整的`fun`函数应该是这样的: ```c void fun(char* str1, char* str2) { int i = 0; char* p1 = str1; char* p2 = str2; while (*(p1 + i) != '\0') i++; for (; *p2 != '\0'; i++) *(p1 + i) = *p2; *(p1 + i) = '\0'; } ``` 第二个改错题中,`fun`函数的目的是将输入的字符串`tt`中的所有小写字母转为大写字母。由于题目没有给出具体错误,我们假设考生需要自己编写这个函数。标准的实现可以使用C语言的`toupper`函数,如下: ```c #include <ctype.h> void fun(char* tt) { while (*tt) { if (islower(*tt)) *tt = toupper(*tt); tt++; } } ``` `fun`函数遍历`tt`中的每个字符,如果发现是小写字母,就用`toupper`将其转换为大写,然后继续处理下一个字符。在`main`函数中调用`fun(tt)`即可。