从键盘输入两个有序字符串(其中字符按ASCII码从小到大排序,并且不含重复字符),将两字符串合并,要求合并后的字符串仍是有序的,并且重复字符只出现一次,最后输出合并后的结果。 【输入形式】 分行从键盘输入两个有序字符串(每个字符串不超过50个字符) 【输出形式】 输出合并后的有序字符串 【输入样例】 abcdeg bdfh 【输出样例】 abcdefgh 【样例说明】 输入两个有序字符串abcdeg和bdfh,输出合并后的有序字符串为abcdefgh。设计一个c语言程序
时间: 2023-12-01 17:03:40 浏览: 210
C语言程序设计-将主函数中输入的字符串反序存放;例如:输入字符串“abcdefg”,则应输出“gfedcba”;.c
5星 · 资源好评率100%
好的,以下是C语言程序实现:
```c
#include<stdio.h>
#include<string.h>
void merge(char *str1, char *str2, char *result) {
int i = 0, j = 0, k = 0;
int len1 = strlen(str1);
int len2 = strlen(str2);
while (i < len1 && j < len2) {
if (str1[i] < str2[j]) {
result[k++] = str1[i++];
} else if (str1[i] > str2[j]) {
result[k++] = str2[j++];
} else {
result[k++] = str1[i++];
j++;
}
}
while (i < len1) {
result[k++] = str1[i++];
}
while (j < len2) {
result[k++] = str2[j++];
}
result[k] = '\0';
}
int main() {
char str1[51], str2[51], result[101];
scanf("%s%s", str1, str2);
merge(str1, str2, result);
printf("%s\n", result);
return 0;
}
```
程序中的 `merge` 函数接受两个有序字符串 `str1` 和 `str2`,并将它们合并成一个新的有序字符串 `result`。具体实现是利用三个指针 `i`、`j`、`k` 分别指向 `str1`、`str2`、`result` 的当前位置,比较 `str1[i]` 和 `str2[j]` 的大小,将较小的字符插入到 `result[k]` 中,如果相等则只插入一次。最后将剩余的字符插入到 `result` 的末尾即可。主函数中调用 `merge` 函数,并输出合并后的结果。
阅读全文