如何合并字符串?

编写一个函数char * str_bin(char* str1, char* str2), str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。在main函数中测试该函数:从键盘输入两个有序字符串,然后调用该函数,最后输出合并后的结果。
【输入形式】
分行从键盘输入两个有序字符串(不超过100个字符)
【输出形式】
输出合并后的有序字符串
【输入样例】
aceg
bdfh
【输出样例】
abcdefgh
【样例说明】
输入两个有序字符串aceg和bdfh,输出合并后的有序字符串abcdefgh
char* str = new char[n+1]; //是什么意思?
1个回答
时间
投票
  • 0

    ws2002iou

    请参照下面的过程,改造成函数即可。  
      unit   Unit1;  
       
      interface  
       
      uses  
          Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
          Dialogs,   StdCtrls,   Buttons;  
       
      type  
          TForm1   =   class(TForm)  
              Memo1:   TMemo;  
              Memo2:   TMemo;  
              BitBtn1:   TBitBtn;  
              procedure   BitBtn1Click(Sender:   TObject);  
          private  
              {   Private   declarations   }  
          public  
              {   Public   declarations   }  
          end;  
       
      var  
          Form1:   TForm1;  
       
      implementation  
       
      {$R   *.dfm}  
       
      procedure   TForm1.BitBtn1Click(Sender:   TObject);  
      var  
          strSource,strDes:string;  
          int1,int2,int3,int4:integer;  
          arrDes:array   of   string;  
          i,j,k,x:integer;  
      begin  
              strSource:=memo1.Text;  
              i:=0;j:=0;k:=0;x:=0;  
              int1:=0;int2:=0;int3:=0;int4:=0;  
              i:=length(strSource);  
              if   i   mod   4=0   then   begin  
                  for   k:=0   to   (i   div   4)-1   do   begin  
                      int1:=strtoint(strSource[k*4+1]);  
                      int2:=strtoint(strSource[k*4+2]);  
                      int3:=strtoint(strSource[k*4+3]);  
                      int4:=strtoint(strSource[k*4+4]);  
                      strDes:=strDes+inttostr(int1+int3)+inttostr(int2+int4);  
                  end;  
              end  
              else   begin  
                  j:=i   mod   4;  
                  for   k:=0   to   (i   div   4)-1   do   begin  
                      int1:=strtoint(strSource[k*4+1]);  
                      int2:=strtoint(strSource[k*4+2]);  
                      int3:=strtoint(strSource[k*4+3]);  
                      int4:=strtoint(strSource[k*4+4]);  
                      strDes:=strDes+inttostr(int1+int3)+inttostr(int2+int4);  
                  end;  
       
                  int1:=0;int2:=0;int3:=0;int4:=0;  
                  x:=k*4+1;  
                  if   (x)<=i   then  
                      int1:=strtoint(strSource[x]);  
                  if   (x+1)<=i   then  
                      int2:=strtoint(strSource[x+1]);  
                  if   (x+2)<=i   then  
                      int3:=strtoint(strSource[x+2]);  
                  if   (x+3)<=i   then  
                      int4:=strtoint(strSource[x+3]);  
                  strDes:=strDes+inttostr(int1+int3)+inttostr(int2+int4);  
              end;  
              memo2.Lines.Add(strDes);  
      end;  
       
      end.  
     

    08-12-17 | 添加评论 | 打赏

    评论读取中....

精华知识
更多  
意见反馈 帮助