编程练习2——03
来源:互联网 发布:js eval函数 json 编辑:程序博客网 时间:2024/05/17 00:49
例如 hello good suqian nice world
输出 good hello nice suqian world
分析:使用strcmp比较字符串,最后用冒泡排序排序。
下面是代码实现:
/*************************************
字符串数组的冒泡排序,从小到大
例如 hello good suqian nice world
输出 good hello nice suqian world
*************************************/
#include <stdio.h>
#include <stdlib.h>
#define LEN 5
int mystrlen(char *str) //计算字符串长度
{
if (str == NULL)
{
return -1;
}
int length = 0;
while (*str++ != '\0')
{
length++;
}
return length;
}
int mystrcmp(const char *str1, const char *str2) //比较字符串大小,大于返回正数,小于负数,相等为0
{
char *p1 = (char *)str1;
char *p2 = (char *)str2;
if (str1 == NULL || str2 == NULL)
{
return -1;
}
#if 0
if (mystrlen(p1) != mystrlen(p2)) //如果长度不等,那么长的大
{
return (mystrlen(p1) > mystrlen(p2) ? 1 : -1);
}
#endif
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0; //相等返回0
}
str1++;
str2++;
}
return (*str1 - *str2);
}
void Sort(char **str, const int len) //排序字符串数组
{
int i = 0;
int j = 0;
char *temp = NULL;
temp = (char *)malloc(10 * sizeof (char));
char *p = temp;
for (i = 0; i < len - 1; i++) //冒泡排序
{
for (j = 0; j < len - i - 1; j++)
{
if (mystrcmp(str[j], str[j + 1]) > 0) //比较字符串大小按照ASCII比较
{
p = str[j];
str[j] = str[j + 1];
str[j + 1] = p;
}
}
}
free(temp);
temp = NULL;
}
int main()
{
int i = 0;
char *str[LEN] = {"hello", "suqian", "world", "nice", "good"}; //定义指针数组
Sort(str, LEN); //冒泡排序
for (i = 0; i < LEN; i++)
{
printf ("%s\n", str[i]); //输出结果
}
return 0;
}
- 编程练习2——03
- 编程练习3——03
- 编程练习2——04
- 编程练习2——05
- 编程练习2——06
- 编程练习2——07
- 编程练习2——08
- 编程练习2——09
- 编程练习2——10
- 初学编程——编程练习
- 我的J2ME编程练习(2)——DateField
- 《C++ Primer Plus》——编程练习答案(2)
- GEEK编程练习— —2的次方数
- C++编程练习(2)——椭圆类
- C语言学习历程——编程练习2——03
- 03编程上机练习
- 编程练习——红黑树(RedBlackTree)
- 编程练习——伸展树(SplayTree)
- 9、C程序 数组排序之[归并排序]
- PowerDesigner使用
- 升级版的C语言-->C++
- 如何定位和解决Andorid的内存溢出问题(转载)
- POJ
- 编程练习2——03
- hdu--6078--Wavel Sequence(dp)
- android屏幕旋转,但是不重建生命周期
- 使用gcov和lcov测试代码覆盖率
- android databinding RecyclerView / ListView
- 一个小demo
- 短信验证码
- 工厂模式
- 排序3——堆排序,归并排序,快速排序