本人测试过能用。不知道怎么上图。你可以把代码复制后测试。
程序代码:
[ 本帖最后由 chenjin1st 于 2011-5-19 20:39 编辑 ]
程序代码:
/*
①从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。
②将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。提示,合并时可使用中间数组。例如:
s1输入为"123456789",S2输入为"abcdefghijk",则输出的s1为1a2b3c4d5e6f7g8h9ijk
③在屏幕上输出新生成的s1。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
int a=0;
char *s1,*s2,*s3;
s1=(char *)calloc(100,sizeof(char));
s2=(char *)calloc(100,sizeof(char));
s3=(char *)calloc(100,sizeof(char));
printf("请输入字符串S1:");
gets(s1);
printf("请输入字符串S2:");
gets(s2);
if(strlen(s1)>strlen(s2)){
while(s1[a]!='\0'){
s3[a]=s1[a+1];a++;
}
a=0;
while(s2[a]!='\0'){
s1[2*a+1]=s2[a];
s1[2*a+2]=s3[a];
a++;
}
while(s3[a]!='\0'){
s1[a+3]=s3[a];
a++;
}
s1[a+3]='\0';
printf("重新交叉排列后的S1为%s\n",s1);
}else{
while(s1[a]!='\0'){
s3[a]=s1[a];a++;
}
a=0;
while(s3[a]!='\0'){
if(a==0){
s1[0]=s3[0];
s1[1]=s2[0];
}else{
s1[2*a]=s3[a];
s1[2*a+1]=s2[a];
}
a++;
}
while(s2[a]!='\0'){
s1[a+3]=s2[a];
a++;
}
s1[a+3]='\0';
printf("重新交叉排列后的S1为:%s\n",s1);
}
free(s1);
free(s2);
free(s3);
}
[ 本帖最后由 chenjin1st 于 2011-5-19 20:39 编辑 ]

共同进步,共同收获!!!!






