从键盘输入一个字符a和b,试编程实现在字符串a中的最大元素后边插入字符串b

# include "stdio.h"
# include "string.h"
void main()
{
char a[128];
char b[128];
int i,j=0,m=0,index,n,k;
gets(a);
gets(b);
index=0;
k=strlen(a);
n=strlen(b);

for(i=0;a[i]!='\0';i++)
{
if(a[i]<a[i+1])
index=i+1;
else
index=i;
}

for(j=k;j>=index+1;j--)
{
a[j+n]=a[j];

}
for(i=index+1;i<=index+1+n;i++)
{
a[i]=b[m];
m++;
}
puts(a);

}

哪错了,为什么编出来的效果是b连在a后面。
最新回答
吃素的蚊子

2024-06-06 05:51:28

方法1:
1 #include <stdio.h>
2 #include <string.h>
3 int main(void)
4 {
5 char a[128],b[128],temp[128];
6 int i,j,g,m=0,index,n,k;
7 printf("get string a:\n");
8 gets(a);
9 printf("get string b:\n");
10 gets(b);
11 index=0;
12 k=strlen(a);
13 n=strlen(b);
14 for(i=1;a[i]!='\0';i++)
15 {
16 if(a[index]<a[i])
17 index=i;
18 else
19 continue;
20 }
21 strcpy(temp,a);
22 for(i=0;i<=index;i++)
23 temp[i]=a[i];
24 for(j=0;j<n+1;j++)
25 temp[j+i]=b[j];
26 i=index+n+1;
27 for(j=index+1;a[j]!='\0';j++)
28 {
29 temp[i]=a[j],i++;
30 }
31 temp[i]='\0';
32 printf("the result is:\n");
33 puts(temp);
34 }
方法2:
1 #include <stdio.h>
2 #include <string.h>
3 int main(void)
4 {
5 char a[128],b[128],temp[128];
6 int i,j,g,m=0,index,n,k;
7 printf("get string a:\n");
8 gets(a);
9 printf("get string b:\n");
10 gets(b);
11 index=0;
12 k=strlen(a);
13 n=strlen(b);
14 for(i=1;a[i]!='\0';i++)
15 {
16 if(a[index]<a[i])
17 index=i;
18 else
19 continue;
20 }
21 strcpy(temp,a);
22 strcpy(&temp[index+1],b);
23 strcpy(&temp[index+n+1],&a[index+1]);
24 if(strlen(temp)<=126)
25 strcpy(a,temp);
26 else
27 strcpy(a,temp);
28 a[127]='\0';
29 printf("the result is:\n");
30 puts(a);
31 }
小糊涂

2024-06-06 03:40:30

后面的我没看,你这个循环体
for(i=0;a[i]!='\0';i++)
{
if(a[i]<a[i+1])
index=i+1;
else
index=i;
}

自己琢磨一下,为什么要else呢?
hehzea
比如上面这个字符串,我测到a的时候,不是a最大就是e最大?不是吧

所以,index刚开始让他为0。后面的字符如果比index指向的字符大,就改变index,不用else