C语言学习历程——编程练习2——03
来源:互联网 发布:c语言画玫瑰花程序 编辑:程序博客网 时间:2024/05/20 09:45
例如 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;
}
- C语言学习历程——编程练习2——03
- C语言学习历程——编程练习3——03
- C语言学习历程——编程练习2——01
- C语言学习历程——编程练习2——02
- C语言学习历程——编程练习2——04
- C语言学习历程——编程练习2——05
- C语言学习历程——编程练习2——06
- C语言学习历程——编程练习2——07
- C语言学习历程——编程练习2——08
- C语言学习历程——编程练习2——09
- C语言学习历程——编程练习2——10
- C语言学习历程——编程练习3——01
- C语言学习历程——编程练习3——02
- C语言学习历程——编程练习3——04
- C语言学习历程——编程练习3——05
- C语言学习历程——Training02位运算03
- C语言学习历程——Training04字符串训练03
- C语言学习历程——字符串训练03
- 1、MAC常用工具汇总一
- js实现的下拉框二级联动效果
- 定义一个不能被继承的类
- poj1014(较复杂的背包问题)
- 抽象类 接口 的个人理解
- C语言学习历程——编程练习2——03
- Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败
- Ajax、JSON
- 2017.04.30 有关c语言的可变参数表的学习
- 如何用polyfill制作响应式图片轮播
- OKHttp原码分析(一)
- 如何设计一个优秀的数据库
- QT5.5连接mysql5.6
- 【笔试】百度编程题