#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
char a[N],b[N],c[N];
int i,j,k,f=(strlen(a)+strlen(b));
gets(a);gets(b);
for(i=0;i<strlen(a);i++) c[i]=a[i];
for(j=0;b[j]!=0;i++,j++) c[i]=b[j];
c[strlen(a)+strlen(b)]='\0';//把ab合并放入c
for(i=0;i<f-1;i++)
{
for(j=0;j<f-2-i;j++)
{
if(c[j+1]<c[j]) {k=c[j];c[j]=c[j+1];c[j+1]=k;}
}
}//冒泡排序
puts(c);
return 0;
}
#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
char a[N],b[N],c[N];
int i,j;
char k;//k要定义成字符型
gets(a);
gets(b);
int f=(strlen(a)+strlen(b));//只有输入了字符串a b才能计算出字符长度
for(i=0;i<strlen(a);i++) c[i]=a[i];
for(j=strlen(a),i=0;b[i]!='\0';j++,i++) c[j]=b[i];//上面你放i时是从0开始的现在有从0开始则会把数组a覆盖掉
c[strlen(a)+strlen(b)]='\0';//把ab合并放入c
for(i=0;i<f-1;i++)
{
for(j=0;j<f-2-i;j++)
{
if(c[j+1]<c[j]) {k=c[j];c[j]=c[j+1];c[j+1]=k;}
}
}//冒泡排序
c[f]='\0';
puts(c);
return 0;
}
排序的方法可以用更快的方法 你的方法也没错
对于 两个已经按从小到大顺序排列好的字符串
最好利用这个条件来减少运行时间,楼主有时间可以参考下这个
#include<stdio.h>#include<string.h>
#define N 100
int main()
{
char a[N],b[N],c[2*N];
int i,j,k;
scanf("%s",&a);
scanf("%s",&b);
k=0;
for(i=0,j=0;i<=strlen(a)||j<=strlen(b);)
{
if(a[i]=='\0')
{
c[k++]=b[j++];
if(j==strlen(b))
{
c[k]='\0';
break;
}
}
else if(b[j]=='\0')
{
c[k++]=a[i++];
if(i==strlen(a))
{
c[k]='\0';
break;
}
}
else if(a[i]<b[j])
c[k++]=a[i++];
else
c[k++]=b[j++];
}
printf("%s\n",c);
return 0;
}