望采纳!!!
#include
#include
int main()
{
char str1[100],str2[100],str[200];
int i,j,len1,len2,max,min,count;
char *p1,*p2;
while(scanf("%s %s",str1,str2)!=EOF)
{
p1=str1;p2=str2;
count=0;
len1=strlen(str1);
len2=strlen(str2);
max=len1>len2?len1:len2;
min=len1 for(i=0;i { if(*p1!='\0'&&*p2!='\0') { if(*p1<*p2) { str[count++]=*p1; p1++; } else { str[count++]=*p2; p2++; } } else if(*p1=='\0') { while(*p2) { str[count++]=*p2; p2++; } } else if(*p2=='\0') { while(*p1) { str[count++]=*p1; p1++; } } str[len1+len2]='\0'; } printf("%s\n",str); } return 0; }
你的a的字符串中最后比b都大的字符没插入,
b[len1+len2]='\0';
改为 b[len1+k+1]='\0';
if(k < len1) strcat(b,a+k);
另你的这个方法 不是扫描了很多遍 b吗,我自己的思路:直接弄个新的字符串,a、b两个字符串从头开始比较,谁的字符小,就把字符放在新字符串里面,就这样一个个往后放。