编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字符串中过长的剩余字符接在c指向数组的尾部。
例如,当a指向的字符串为"abcdefg",b指向的字符串为"1324"时,c指向的数组中字符串应为"a4b2c3d1efg"。
程序如题
#include <stdio.h>
mygets(char str[])
{
int i = 0;
while((str[i] = getchar()) != '\n')
{
i++;
}
str[i] = '\0';
}
int Strlen(const char *str)
{
int i = 0;
while(*str++ != '\0')
{
++i;
}
return i;
}
void cross_combine(char *a,char *b,char *c)
{
int i;
char temp;
int n;
int m;
n = Strlen(b);
m = Strlen(a);
for(i = 0; i < n / 2; i++ )
{
temp = b[i];
b[i] = b[n - 1 - i];
b[n - 1 - i ] = temp;
}
if(m > n)
{
for(i = 0; i < n; i++)
{
c[2*i] = a[i];
c[2*i + 1] = b[i];
}
for(i = 0; i < m - n ; i++)
{
c[2*n+i] = a[i + n];
}
printf("%s\n",c);
}
else
{
for(i = 0; i < m; i++)
{
c[2*i] = a[i];
c[2*i + 1] = b[i];
}
for(i = 0; i < n - m ; i++)
{
c[2*m+i] = b[i + m];
}
printf("%s\n",c);
}
}
int main()
{
char a[20];
char b[20];
char c[40];
int m;
printf("please input character string:\n");
mygets(a);
/* m = Strlen(a);
printf("%d",m);*/
printf("please input figure string:\n");
mygets(b);
cross_combine(a,b,c);
return 0;
}
运行截图明天再补