#include<stdio.h>
#include<string.h>
#define ROW 5
#define COL 80
void sortString01(char (*pName)[COL]);//直接将姓名二维数组交换顺序(冒泡)
void sortString02(char **ppnames);//使用指针数组存储姓名,将指针数组调换顺序(冒泡)
int main(void)
{
int i;
char names[ROW][COL];
char *ppname[ROW];
//键盘输入五个待排序名字
printf("Please Input %d names:\n", ROW);
for(i = 0 ; i < ROW ; i ++)
{
gets(names[i]); //scanf("%s", names[i]);
}
//使用指针数组储存姓名
for(i = 0 ; i < ROW ; i ++)
{
ppname[i] = names[i];
}
//第一种排序
sortString01(names);
//打印结果
printf("After 01 Names:\n");
for(i = 0 ; i < ROW ; i ++)
{
puts(names[i]); //printf("%s\n", names[i]);
}
//第二种排序
sortString02(ppname);
//打印结果
printf("After 02 Names:\n");
for(i = 0 ; i < ROW ; i ++)
{
puts(ppname[i]); //printf("%s\n", names[i]);
}
return 0;
}
void sortString01(char (*pName)[COL])
{
int i, j;
char temp[COL];
for(i = 1 ; i < ROW; i ++)
{
for(j = 0 ; j < ROW - i ; j ++)
{
if(strcmp(pName[j], pName[j + 1]) > 0 )//顺序排列
{
strcpy(temp, pName[j]);
strcpy(pName[j], pName[j + 1]);
strcpy(pName[j + 1], temp);
}
}
}
}
void sortString02(char **ppnames)
{
int i,j;
char *temp = NULL;
for(i = 1 ; i < ROW ; i ++)
{
for(j = 0 ; j < ROW -i ; j ++)
{
if(strcmp(ppnames[j], ppnames[j + 1]) < 0)//倒序排列
{
temp = ppnames[j];
ppnames[j] = ppnames[j + 1];
ppnames[j + 1] = temp;
}
}
}
}
【C语言】从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。
最新推荐文章于 2023-10-30 22:54:13 发布
本文介绍如何使用C语言从键盘输入5个长度不超过80字节的字符串,并进行升序排序。通过实例讲解了C语言中的字符串操作和排序算法,重点在于指针的应用。
4077

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



