编程练习2——03

xiaoxiao2021-02-28  62

3.   字符串数组的冒泡排序,从小到大    例如 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; }

转载请注明原文地址: https://www.6miu.com/read-59870.html

最新回复(0)