编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字符串中过长的剩余字符接在c指向数组的尾部。
例如,当a指向的字符串为"abcdefg",b指向的字符串为"1324"时,c指向的数组中字符串应为"a4b2c3d1efg"。
#include <stdio.h>
#define SIZE 255
void change(char*a,char *b,char *c);
int main()
{
char str1[80] = "abcdefg";
char str2[80] = "1324";
char s[SIZE];
printf("%s\n%s\n",str1,str2);
change(str1,str2,s);
return 0;
}
void change(char *a,char *b,char *c)
{
char *p1,*p2,*p3,*p;
int count = 0,i = 0;
p1 = a; // 将a、b、c赋给指针,用对指针的操作实现对数组的操作
p2 = b;
p3 = c;
while( (*p2) != '\0') //实现b的逆序存放,将p2指向'\0',并记下这个数组的长度
{
p2++;
count++;
}
i = count;
p2--; //指向最后一个字符
while(count > 0) //实现逆序功能,将其存放在p指向的单元
{
*p = *p2;
count --;
printf("%c",*p);
p++;
p2 = p2 -1;
}
*p = '\0';
printf("\n");
while(i > 0) // 将p指向新数组的首地址
{
p--;
i--;
}
b = p; //将逆序的数组重新赋给b
p2 = b;
while( (*p1) != '\0' || (*p2) != '\0') // 实现交叉存放功能
{
if( (*p1) != '\0')
{
*p3 = *p1;
printf("%c",*p3);
p3++;
p1++;
}
if( (*p2) != '\0')
{
*p3 = *p2;
printf("%c",*p3);
p3++;
p2++;
}
}
printf("\n");
return ;
}
程序运行结果输出:
abcdefg
1324
4231
a4b2c3d1efg