任务描述
本关任务: 输入两个已经按照升序排列好的字符串,将两个字符串合并成一个字符串,新字符串中的字符仍然按照升序排列。
相关知识
为了完成本关任务,你需要掌握: 1.字符串的存储; 2.一维字符数组; 3.字符串处理函数gets,strlen,puts等; 4.数字的ASCII码值; 5.字符串结束标志‘\0’; 6.有序字符串重组的算法。
编程要求
1.撰写函数void resort(…,…,…,),完成对两个排好序的字符串的重组; 2.编写主函数,实现: (1)键盘接收有序字符串1和有序字符串2; (2)调用resort函数实现重组; 3.输出排好序的最终字符串(可以在函数或者主函数中输出)。
测试说明
平台会对你编写的代码进行测试: 输入: 输入排好序的字符串1 abcdefg 输入排好序的字符串2 1234567 输出: 1234567abcdefg
#include<stdio.h>
#include<string.h>
#define SIZE 100
void resort(char *a)
{
int i=0,j=0;
int len=strlen(a);
char temp;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
char arr1[SIZE];
char arr2[SIZE];
int n;
puts("输入排好序的字符串1");
gets(arr1);
puts("输入排好序的字符串2");
gets(arr2);
n=strcmp(arr1,arr2);
if(n<0)
{
strcat(arr1,arr2);
resort(arr1);
puts(arr1);
}
else
{
strcat(arr2,arr1);
resort(arr2);
puts(arr2);
}
return 0;
}