编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放

  1. /*5、编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字符串中过长的剩余字符接在c指向数组的尾部。 
  2. 例如,当a指向的字符串为"abcdefg",b指向的字符串为"1324"时,c指向的数组中字符串应为"a4b2c3d1efg"。 
  3. */  
  4. #include <stdio.h>  
  5. #include <string.h>  
  6. void swap(char *a,char *b)  
  7. {  
  8.     char temp;  
  9.     temp = *a;  
  10.     *a = *b;  
  11.     *b = temp;  
  12. }  
  13. void change(char *a,char *b,char *c)  
  14. {  
  15.     int len_a = strlen(a);  
  16.     int len_b = strlen(b);  
  17.     int i = 0;  
  18.     int j = 0;  
  19.       
  20.     for(i = 0;i < len_b/2;i++)                                           //将b字符串逆向存放  
  21.     {  
  22.         swap(&b[i],&b[len_b-i-1]);  
  23.     }  
  24.     if(len_a > len_b)                                                    //a字符串比b长的情况  
  25.     {  
  26.         while(*a)  
  27.         {  
  28.             while(*b)  
  29.             {  
  30.             *c = *a;  
  31.             c++;  
  32.             a++;  
  33.             *c = *b;  
  34.             c++;  
  35.             b++;  
  36.             }  
  37.             *c = *a;  
  38.             c++;  
  39.             a++;  
  40.         }  
  41.     }  
  42.     else                                                                 //b字符串比a长的情况  
  43.     {  
  44.         while(*b)  
  45.         {  
  46.             while(*a)  
  47.             {  
  48.             *c = *a;  
  49.             c++;  
  50.             a++;  
  51.             *c = *b;  
  52.             c++;  
  53.             b++;  
  54.             }  
  55.             *c = *b;  
  56.             c++;  
  57.             b++;  
  58.         }  
  59.     }  
  60. }  
  61.   
  62. int main()  
  63. {  
  64.     char a[100] = {0};  
  65.     char b[100] = {0};  
  66.     char c[100] = {0};  
  67.   
  68.     printf("please input string a:\n");  
  69.     scanf("%s",a);  
  70.     printf("please input string b:\n");  
  71.     scanf("%s",b);  
  72.   
  73.     change(a,b,c);  
  74.   
  75.     printf("the result is:%s\n",c);  
  76.     return 0;  
  77. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值