v 将几个字符串由大到小排序
v 利用指针数组来实现函数
v 程序示例:
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
void sort(char *string[],int len)
{
int i = 0,j = 0;
char *tmp;
for(i = 0;i < len-1;i++)
{
for(j = 0;j < len - 1 - i;j++)
{
if(strcmp(string[j],string[j+1]) > 0)
{
tmp = string[j];
string[j] = string[j+1];
string[j+1] = tmp;
}
}
}
}
int main()
{
char *string[5]; //定义一个指针数组,里面有5个元素,每个元素都是一个指针
int i = 0;
int len;
len = sizeof(string)/sizeof(char *);
for(i = 0;i < 5;i++) //为数组中每一个元素在堆上分配一段空间
{
string[i] = (char *)malloc(sizeof(char)*10);
}
printf("Please input five strings:\n");
for(i = 0;i < 5;i++)
{
scanf("%s",string[i]);
}
sort(string,len); //单独实现的一个字符串排序函数
printf("after sort :\n"); //输出数组中每一个指针指向的内容
for(i = 0; i < 5;i++)
{
printf("%s\n",string[i]);
}
}
运行结果:
Please input five strings:
hello
am
init
123
ABC
after sort :
123
ABC
am
hello
init
v 利用二维数组实现字符串由大到小的排序
v 程序示例:
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0;
char a[3][20] = {0}; //定义一个二维数组
int j = 0;
printf("Please input three strings:\n");
for(i = 0;i < 3;i++)
{
scanf("%s",a[i]);
}
for(i = 0;i < 2;i++) //冒泡排序法进行字符串排序
{
for(j = 0;j < 2 - i;i++)
{
//char *tmp;
if(strcmp(a[j],a[j+1]) > 0) //当前一个字符串比后一个字符串大的时候,将两个字符串调换
{
char tmp[20];
strcpy(tmp,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],tmp);
}
}
}
printf("after sort :\n");
for(i = 0;i < 3;i++)
{
printf("%s\n",a[i]);
}
return 0;
}
运行结果:
Please input three strings:
hello
123
ABC
after sort :
123
hello
ABC