要求:将已升序排好的字符串a和字符串b按升序并归到字符串c中输出
思路:
1.因为输入的字符串a和b是有序字符串,所以对数组a和b中的元素逐个比较
2.然后将较小的字符先放到数组c中,直到a或b中有一个字符串全部放到c中
while (a[i] != '\0' && b[j] != '\0')
{
if (a[i] < b[j])
{
c[k] = a[i];
i++;
}
else
{
c[k] = b[j];
j++;
}
k++;
}
3.再判断哪一个字符串全部复制到了c中,对没有全部复制到c中的字符串,从未复制的位置开始全部连接到c中
if (a[i] == '\0')
p = b + j;
else
p = a + i;
strcat(c, p);
运行结果如下
完整代码如下
#include <stdio.h>
#include <string.h>
int main ()
{
char a[100], b[100], c[200], *p;
int i = 0, j = 0, k = 0;
printf("请输入字符串a:\n");
scanf("%s", a);
printf("请输入字符串b:\n");
scanf("%s", b);
while (a[i] != '\0' && b[j] != '\0')
{
if (a[i] < b[j])
{
c[k] = a[i];
i++;
}
else
{
c[k] = b[j];
j++;
}
k++;
}
c[k] = '\0';
if (a[i] == '\0')
p = b + j;
else
p = a + i;
strcat(c, p);
puts(c);
}