C语言问题求解!!!!!

编写一个函数char *link(char *s1,char *s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中,函数返回值为字符数组s1的首地址。请
#include
#include
int  main( )
{char a[100],b[100];
 char *link(char *,char *);
 gets(a);
 gets(b);
此处请写出link函数的调用过程;
 puts(a);
}
char *link(char *s1,char *s2)
{
   //将s1与s2所指向的字符串交叉连接,生成的新字符串放在s1所指的数组中
}
例如运行时:代表回车
输入abc12345,输出a1b2c345。
输入abcde123,则输出a1b2c3de。

4个回答

你可以看下相关的知识点的。

用俩个字符串去接收数字和字母 然后 再排序就好了。

 #include<stdio.h>

char *link(char *,char *);
void main( )
{
    char a[100],b[100];
    gets(a);
    gets(b);
    link(a,b);
    puts(a);   
}

char *link(char *a,char *b)
{
     int alength=0,blength=0;
     char  c[200];   int k =0;
     while(*(a+alength)!='\0')    alength++;
     while(*(b+blength)!='\0')    blength++;
     int i = 0,j = 0;
     for(;i<alength&&j<blength;)
     {
          if((i+j)%2 == 0)
          {  *(c+k) = *(a+i);  i++; k++;}
          if((i+j)%2 == 1)
          {  *(c+k) = *(b+j);  j++; k++;}
     }
     if(i>=alength&&j>=blength)  
     {       }
    else if(i<alength) 
     {
         for(;i<=alength;i++)
         { *(c+k) = *(a+i);   k++;}
     }
     else if(j<blength)
     {
         for(;j<blength;j++)
         { *(c+k) = *(b+j);   k++;}
     }

     for(i =0;i<k;i++)
         *(a+i) = *(c+i);
              *(a+i) = '\0';

     return   a;
} 
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐