编程练习2——05
来源:互联网 发布:怎么举报网络博客 编辑:程序博客网 时间:2024/06/05 12:00
函数功能是首先把b指向的字符串逆向存放
然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中
两个字符串中过长的剩余字符接在c指向数组的尾部。
分析:主要是交叉合并到c的处理代码如下。
下面是代码实现:
/********************************************************************
编写函数void change(char *a,char *b,char*c)。
函数功能是首先把b指向的字符串逆向存放
然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中
两个字符串中过长的剩余字符接在c指向数组的尾部。
*********************************************************************/
#include <stdio.h>
#include <stdlib.h>
int mystrlen (char *str) //字符串的长度
{
int length = 0;
if (str == NULL)
{
return -1;
}
while (*str++)
{
length++;
}
return length;
}
void RevStr (char *str, int len)
{
int i = 0;
char temp = 0;
for (i = 0; i < len / 2; i++) //字符串倒置
{
temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
void change (char *a, char *b, char *c)
{
int i = 0;
int count = 0;
int blen = mystrlen(b);
RevStr(b, blen); //将字符串b倒置
while (*a) //遍历a字符串,将a中元素装进c里面
{
*c++ = *a;
if (count < blen)
{
*c++ = *b++; //交叉放入c中,a长则把a多余的放入c中,否则把b多余的放入c中
count++;
}
a++;
}
while (*b)
{
*c++ = *b++;
}
*c = '\0';
}
int main()
{
char *a = NULL;
char *b = NULL;
char *c = NULL;
a = (char *)malloc(100 * sizeof(char));
b = (char *)malloc(100 * sizeof(char));
c = (char *)malloc(100 * sizeof(char));
printf ("Please input a string: "); //接收2个字符串
scanf ("%s", a);
printf ("Please input a string: ");
scanf ("%s", b);
change(a, b, c);
printf ("c = %s\n", c); //输出结果
free(c);
c = NULL;
free(b);
b = NULL;
free(a);
a = NULL;
return 0;
}
- 编程练习2——05
- 编程练习3——05
- 编程练习2——03
- 编程练习2——04
- 编程练习2——06
- 编程练习2——07
- 编程练习2——08
- 编程练习2——09
- 编程练习2——10
- 初学编程——编程练习
- 我的J2ME编程练习(2)——DateField
- 《C++ Primer Plus》——编程练习答案(2)
- GEEK编程练习— —2的次方数
- C++编程练习(2)——椭圆类
- C语言学习历程——编程练习2——05
- 编程练习——红黑树(RedBlackTree)
- 编程练习——伸展树(SplayTree)
- 编程练习——堆heap
- 正则表达式的使用
- js中canvas操作
- ZOJ-3804---YY's Minions (模拟)
- 骑记APP——IOS版登录流程体验报告
- 青蛙的约会(扩展欧几里德)
- 编程练习2——05
- 容斥原理
- LINUX I2C驱动偶尔出现段错误原因之一
- mybits 注解
- 统计一条语句中的空格、字母、数字的个数
- 【排序算法总结】选择排序
- Deploy Location!
- 编程练习2——06
- github上如何修改语言设置