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
本文介绍两种字符串排序的方法:一种是使用指针数组实现的排序,另一种是利用二维数组完成的排序。通过具体的C语言代码示例展示了如何从大到小对字符串进行排序,并给出了运行结果。
1万+

被折叠的 条评论
为什么被折叠?



