也许用链表比较好实现,下面是用数组实现的程序:
#include<stdio.h>
#include<string.h>
main()
{ int i,j,k,m,n;
char a[100],b[100],c;
gets(a);
gets(b);
c=getchar();
m=strlen(a);
for(i=0;i<m;i++)
{if(a[i]==c)<br/> break;<br/> }
if(i>=m)
{printf("出错!\n");<br/> return;<br/> }
n=strlen(b);
k=m;
for(j=m+n;j>i;j--,k--)
a[j]=a[k];
for(j=i,k=0;j<n+i;j++,k++)
a[j]=b[k];
printf("%s\n",a);
}
设计过程:
定义两个字符串s2,s2,字符k
输入两个字符串 s1 、 s2 和 s1 中任意字符 k
先遍历 s1 找到指定字符 k,记录下当前位置
从k字符开始,按s2的长度后移其余的数据
将s2拷贝到k所在的位置
输出s1。
代码如下:
#include <stdio.h>
#include <string.h>
void main(){
char s1[100];
char s2[20];
char k;
int i,pos,len;
printf("input s1: ");scanf("%s", s1 );
printf("input s2: ");scanf("%s", s2 );
getchar();//滤掉回车符
printf("input k: ");scanf("%c", &k );
for( i=0;s1[i];i++ )
if ( s1[i]==k )
break;
}
pos=i; //记录下待插入的位置
len=strlen(s2); //得到s2长度
for( i=strlen(s1);i>=pos;i-- ) //后移字符串
{
s1[i+len]=s1[i];
}
strncpy( &s1[pos], s2, len ); //插入数据
printf("%s\n", s1 ); //输出字符串
}
匿名回答于2019-07-27 12:53:00