c语言字符串的排序(冒泡排序)

代码思路:定义一个二维字符串数组,用冒泡排序,去将字符串排序。
用strcmp去比较字符串大小,比较字符串大小的原理是字符所对应的阿斯克码值的和。
用strcpy去冒泡排序中的关键一步
外层循环循环一次,冒泡排序一次,打印一次。具体实现看下述代码。


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d", &n);
    int i, j;
    char temp[100]; //暂存数组
    char str[100][100];//定义二维字符串数组
    for (i = 0; i < n; i++)
    {
        scanf("%s", &str[i]);//读取二维字符串数组
    }
    for (i = 0; i < n-1/*自身不用排序*/; i++) //冒泡排序
    {
        for (j = 0; j < n - 1-i/*每次排序会排好一次*/; j++)
        {
            if (strcmp(str[j], str[j + 1]) > 0)//strcmp中如果前者大于后者则返回1,等于返回0,小于返回-1;
            {
                strcpy(temp,str[j]);//是把后面的值赋给前面的值
                strcpy(str[j], str[j+1]);
                strcpy(str[j + 1], temp);
            }
        }
            printf("Sorting No.%d\n\n", i + 1);
            for (j = 0; j < n; j++)
            {
                printf("%s\n\n", str[j]);
            }
    }
    return 0;
}

有用的话点个赞谢谢

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值