本人测试过能用。不知道怎么上图。你可以把代码复制后测试。
[ 本帖最后由 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 编辑 ]
共同进步,共同收获!!!!