用C语言编写一个字符串排序函数,从小到大排序。 要求:1. 函数要有返回值,参数必须是指针类型的。 2. 本

如题所述

/*
排序前:
One-1 Two-2 Three-3 Four-4 Five-5 Six-6 Seven-7 Eight-8 Nine-9 Ten-10

排序后:
Two-2 Three-3 Ten-10 Six-6 Seven-7 One-1 Nine-9 Four-4 Five-5 Eight-8

Press any key to continue
*/
#include <stdio.h>
#include <string.h>

void sort(char *a[],int n) { // 选择排序
char *temp;
int i,j,k;
for(i = 0;i < n - 1;i++) {
k = i;
for(j = i + 1;j < n;j++)
if(strcmp(a[k],a[j]) < 0) k = j;
if(k != i) { // 交换的是字符串的地址,不是字符串的内容
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}

int main() {
int i,n = 10;
char *s[] = {"One-1","Two-2","Three-3","Four-4","Five-5","Six-6","Seven-7","Eight-8","Nine-9","Ten-10"};
printf("排序前:\n");
for(i = 0;i < n;i++) printf("%s ",s[i]);
printf("\n\n");
sort(s,n);
printf("排序后:\n");
for(i = 0;i < n;i++) printf("%s ",s[i]);
printf("\n\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-18
首先必须承认一楼思想和代码都非常不错,但是一个不符合题目要求的解,就算解得再好都要废掉的吧……
编写一个字符串排序函数,要求:1. 函数要有返回值……
第2个回答  2012-04-14
楼上的代码写的真不错啊。。。。我原本想用strcpy来交换,忘记指针这茬了。。不错,好想法,不过不知道楼主是不是要将字符串的内容来进行排序,比如将一个字符串str[]=“wafga”;进行排序,如果是这个,直接传字符串的名字进去了。字符串的名字也是一个地址,进去直接比较字符的大小,字符是可以进行比较的(看asic码标就知道了)