NWAFU-OJ(基础)16.姓名排序

文章介绍了如何用C语言对10个学生的拼音姓名按ASCII码顺序进行排序。提供了两种方法,一是使用冒泡排序算法,二是利用stdlib库中的qsort函数配合自定义比较函数实现排序。每种方法都有详细的代码实现和运行结果展示。
摘要由CSDN通过智能技术生成

题目描述

由键盘任意输入10个学生的姓名(以拼音形式),将它们按照ASCⅡ码的顺序从小到大排序

输入

10个学生的姓名(以拼音形式)。

输出

按照ASCⅡ码的顺序从小到大排序。

样例输入

ziang
zaang
zbang
zcang
zdang
zeang
zfang
zgang
zhang
zhang

样例输出

zaang
zbang
zcang
zdang
zeang
zfang
zgang
zhang
zhang
ziang

题目分析

方法一:

利用冒泡排序。

基本的冒泡排序必须会写。不会写的请参考我的视频链接。

需要注意的是 这里对字符串不能直接进行赋值,需要用到strcpy(a,b)将b字符数组中的字符拷贝给a。

其它与一般的冒泡排序都一样

代码实现:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>

int main()
{
	char a[11][1000];
	for(int i=0;i<10;i++)
	{
		scanf("%s",a[i]);
    }
	for(int i=0;i<9;i++)
	{
		for(int j=0;j<10-i-1;j++)
		{
			if(strcmp(a[j],a[j+1])>0)
			{
				char b[100];
				strcpy(b,a[j]);
				strcpy(a[j],a[j+1]);
				strcpy(a[j+1],b);
			}
		}
	}
	for(int i=0;i<10;i++)
	{
		printf("%s\n",a[i]);
    }
	return 0;
}
运行结果:

方法二:

利用stdlib库中的qsort函数,不清楚其排序过程的也可看视频链接。

qsort(a,n,sizeof(a[0]),cmp)

a代表排序数组的首地址,n代表元素个数,sizeof(a[0])代表每个元素的所占字节数,cmp为自定义的比较函数。记得引入stdlib.h头文件。

代码实现:
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
int cmp(const void *a,const void *b)
{
	return strcmp((char*)a,(char*)b);
}
int main()
{
	char a[11][1000];
	for(int i=0;i<10;i++)
	{
		gets(a[i]);
    }
	qsort(a,10,sizeof(a[0]),cmp);
	for(int i=0;i<10;i++)
	{
		printf("%s\n",a[i]);
    }
	return 0;
}
运行结果:

欢迎批评指正!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字漫游者

力图简洁c++,创作不易,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值