鱼C论坛

 找回密码
 立即注册
查看: 1199|回复: 10

写一个函数(起泡法),输入10个字符按a-z排序

[复制链接]
发表于 2021-9-28 16:34:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 荆襄楚樊 于 2021-10-5 10:11 编辑

#include <stdio.h>
#include <string.h>
#define N 10

char str[N];
void sort(char str[])
{
        int i;
        int j;
        char t;

        for (j = 1; j < N; j++)
        {
                for (i = 0; (i < N - j) && (str[i] != '\0'); i++)
                {
                        if (str[i] > str[i + 1])
                        {
                                t = str[i];
                                str[i] = str[i + 1];
                                str[i + 1] = t;
                        }
                }
        }
}

int main(void)
{
        int i;
        int flag;

        for (flag = 1; flag == 1;)
        {
                printf("输入字符串:\n");
                scanf_s("%s", str);
                if (strlen(str) > N)
                {
                        printf("字符串太长,请重新输入!");
                }
                else
                {
                        flag = 0;
                }
        }

        sort(str);
        printf("字符串排序:\n");

        for (i = 0; i < N; i++)
        {
                printf("%c", str[i]);
        }
        printf("\n");
       
        return 0;
}

/*
在VS2019中输出结果是:
-------------------------
输入字符串:
reputation
-------------------------
未输出
*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-28 18:09:11 | 显示全部楼层
本帖最后由 jhq999 于 2021-9-28 22:17 编辑
#include <stdio.h>
#include <string.h>
#define N 100

char str[N];
void sort(char str[])
{
        int i;
        int j;
        char t;
                int flag=0;
        for (j = 1; str[j]; j++)
        {
                flag=0;
                for (i = 1; str[i]; i++)
                {
                        if (str[i-1] > str[i])
                        {
                                flag=1;
                                t = str[i];
                                str[i] = str[i - 1];
                                str[i - 1] = t;
                        }
                }
                if (!flag)break;
                                
        }
}

int main(void)
{
        int i;
        int flag;

        for (flag = 1; flag == 1;)
        {
                printf("输入字符串:\n");
                scanf("%s", str);
                if (strlen(str) > N)
                {
                        printf("字符串太长,请重新输入!");
                }
                else
                {
                        flag = 0;
                }
        }

        sort(str);
        printf("字符串排序:\n");

        for (i = 0; str[i]; i++)
        {
                printf("%c", str[i]);
        }
        printf("\n");
       
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-28 20:44:56 | 显示全部楼层

复制你的代码,还是不能输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-28 21:52:13 | 显示全部楼层
本帖最后由 jhq999 于 2021-9-28 21:55 编辑
荆襄楚樊 发表于 2021-9-28 20:44
复制你的代码,还是不能输出。


scanf_s("%s", str);换成scanf("%s", str);试试
多问一句你是不是加了_CRT_SECURE_NO_WARNINGS;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-28 22:12:55 | 显示全部楼层
jhq999 发表于 2021-9-28 21:52
scanf_s("%s", str);换成scanf("%s", str);试试
多问一句你是不是加了_CRT_SECURE_NO_WARNINGS;

换成scanf("%s", str)也不行。
_CRT_SECURE_NO_WARNINGS不知道加在什么地方,你还是把代码改好我复制,才学习C的小白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-28 22:20:27 | 显示全部楼层
没问题啊?
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 10:22:14 | 显示全部楼层
本帖最后由 荆襄楚樊 于 2021-9-29 10:33 编辑


你的代码17、21-22行是[i - 1]而我抄书上的是[i + 1],只是一个在前一个在后,请解释一下。
1.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-29 10:43:17 | 显示全部楼层
本帖最后由 jhq999 于 2021-9-29 10:56 编辑
荆襄楚樊 发表于 2021-9-29 10:22
你的代码17、21-22行是而我抄书上的是,只是一个在前一个在后,请解释一下。

i=1; if (str[0] > str[1])
i=2;   if (str[1] > str[2])
。。。。。。。
一直到str[i]='\0'之前,设为max:那么就是if (str[max-1] > str[max])
我这个效率不如你贴的,只不过明了点,你的原因还是scantf和scantf_s之间的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 14:31:31 | 显示全部楼层
jhq999 发表于 2021-9-29 10:43
我这个效率不如你贴的,只不过明了点,你的原因还是scantf和scantf_s之间的问题

谢谢你这几天的回答,你正确的代码是用的哪个编程软件写出来的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-29 14:32:01 | 显示全部楼层
荆襄楚樊 发表于 2021-9-29 14:31
谢谢你这几天的回答,你正确的代码是用的哪个编程软件写出来的。

vs2012
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 20:34:31 | 显示全部楼层

谢谢啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 11:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表