C语言,合并两个有序字符串问题,求帮忙纠错

2024-11-23 00:44:54
推荐回答(2个)
回答(1):

望采纳!!!

#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;

}





回答(2):

你的a的字符串中最后比b都大的字符没插入,
b[len1+len2]='\0';
改为 b[len1+k+1]='\0';
if(k < len1) strcat(b,a+k);
另你的这个方法 不是扫描了很多遍 b吗,我自己的思路:直接弄个新的字符串,a、b两个字符串从头开始比较,谁的字符小,就把字符放在新字符串里面,就这样一个个往后放。