c语言指针:编写一个函数void str_bin(char str1[ ], char str2[ ]), str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。在main函数中测试该函数:从键盘输入两个有序字符串,然后调用该函数,最后输出合并后的结果。
时间: 2023-06-19 08:05:02 浏览: 208
下面是函数的实现代码:
```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("Enter two sorted strings:\n");
scanf("%s%s", str1, str2);
str_bin(str1, str2);
printf("Merged sorted string: %s\n", str1);
return 0;
}
```
使用两个指针 i 和 j 分别指向两个字符串的末尾,从后往前比较,将较大的字符依次放到 str1 的末尾。如果其中一个字符串遍历完了,就将另一个字符串剩下的部分直接拼接到 str1 的前面。最后得到的 str1 就是合并后的有序字符串。
阅读全文