51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> C >> 文章正文

将一个较短的字符串的字符交叉地插入到另一个较长的字符串中

更新时间:2012-3-29:  来源:51代码网

将一个较短的字符串的字符交叉地插入到另一个较长的字符串中,每个字符以一定的间隔插入。该间隔=(长字符串长度/短字符串),即对两个字符串长度相除取整。例如:如果两个字符串等长(字符插入间隔=1),就将后输入的串的字符每隔一个字符插入先输入的串当中;被插入的字符串长度为12,待插入的字符串的长度为5,那么字符插入间隔为2,以此类推。请参考Sample Input和Sample Output。
Input
只有一组测试数据,两个字符串(它们的长度不会超过100)。
Output
输出1行信息,即插入后的新串。
Sample Input
ABCDEFG abcdefg
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghi
Sample Output
AaBbCcDdEeFfGg
ABaCDbEFcGHdIJeKLfMNgOPhQRiSTUVWXYZ
Hint
注意输入的字符串中第一个字符串长度未必比第二个长。


我的代码如下:

#include "stdio.h"
#include<string.h>
int main()
{
int i,k,n,x;
  char a[100],b[100];
  scanf("%s%s",&a,&b);
  k=strlen(a)/strlen(b)>strlen(b)/strlen(a)?strlen(a)/strlen(b):strlen(b)/strlen(a);
  //求出长数组除以短数组的值
  n=strlen(a)>strlen(b)?strlen(a):strlen(b);
  //求出谁是长数组
  if(strlen(a)>=strlen(b))//如果a是长数组
  {
  for(i=0;i<n;i++)
  {
  printf("%c",a[i]);
  if((i+1)%k==0)
  {
  x=(i+1)/k-1;
  printf("%c",b[x]);//每输出一个a数组间隔(X+1)/k-1个b数组
  }
  }
  }
  else//如果b是长数组
  {
  for(i=0;i<n;i++)
  {
  printf("%c",b[i]);
  if((i+1)%k==0)
  {
  x=(i+1)/k-1;
  printf("%c",a[x]);
  }  
  }
  }
  return 0;
}
正确代码

#include "stdio.h"
#include<string.h>
int main()
{
    int i,k,n,x;
    int al,bl;          /*增加字符串长度变量,用于存储字符串的长度,简化计算。*/
    char a[100],b[100];
    scanf("%s%s",&a,&b);
    al=strlen(a);
    bl=strlen(b);
    k=al>bl?al/bl:bl/al;    /*这里看起来就更清楚了*/
    //求出长数组除以短数组的值
    /*n=strlen(a)>strlen(b)?strlen(a):strlen(b);*/
    //求出谁是长数组
    if(al>=bl)//如果a是长数组
    {
        for(i=0;i<al;i++)   /*n是没必要的了*/
        {
            printf("%c",a[i]);
            if((i+1)%k==0)
            {
                x=(i+1)/k-1;
                if (x<bl)       /*这里是为了避免在b输出完之后仍继续取b成员*/
                    printf("%c",b[x]);//每输出一个a数组间隔(X+1)/k-1个b数组
            }
        }
    }
    else//如果b是长数组
    {
        for(i=0;i<bl;i++)
        {
            printf("%c",b[i]);
            if((i+1)%k==0)
            {
                x=(i+1)/k-1;
                if (x<al)
                    printf("%c",a[x]);
            }  
        }
    }
    return 0;
}

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |