编写一个函数void str_bin(char str1[ ], char str2[ ]),其中str1、str2是两个有序字符串(字符已按ASCII码值从小到大排序),将str2合并到str1中,要求合并后的字符串仍是有序的,并且允许字符重复。main主函数功能:输入两个有序字符串,调用str_bin子函数完成字符串合并,并输出合并后的结果。 用c语言实现
时间: 2023-12-03 16:46:21 浏览: 242
以下是实现该函数的代码:
```c
#include <stdio.h>
#include <string.h>
void str_bin(char str1[], char str2[]) {
int len1 = strlen(str1);
int len2 = strlen(str2);
int i = len1 - 1, j = len2 - 1, k = len1 + len2 - 1;
while (i >= 0 && j >= 0) {
if (str1[i] > str2[j]) {
str1[k--] = str1[i--];
} else {
str1[k--] = str2[j--];
}
}
while (j >= 0) {
str1[k--] = str2[j--];
}
}
int main() {
char str1[100], str2[100];
printf("请输入第一个有序字符串:");
scanf("%s", str1);
printf("请输入第二个有序字符串:");
scanf("%s", str2);
str_bin(str1, str2);
printf("合并后的有序字符串:%s\n", str1);
return 0;
}
```
在该函数中,我们首先计算出两个字符串的长度 len1 和 len2,然后使用三个指针 i、j 和 k 分别指向 str1、str2 和合并后的字符串的末尾。接下来,我们在一个 while 循环中依次比较 str1[i] 和 str2[j] 的大小,并将较大的字符复制到合并后的字符串的末尾,直到其中一个字符串被复制完为止。最后,我们再将剩余的字符复制到合并后的字符串的末尾即可。
在主函数中,我们首先输入两个有序字符串,然后调用 str_bin 函数将它们合并,并输出合并后的结果。
阅读全文