905853663 发表于 2020-11-14 00:05:37

有关起泡法排列顺序问题

请问如下代码:
#include<stdio.h>
int main()
{
        int a, b=0, c, e;
        printf("请输入十个数:\n");
        scanf("%d", &a);
        for (b = 0; b <= 9; b++);
        for (c = 0; c < 9; c++)
                for (b = 0; b < 9 - c; b++)
                        if (a > a)
                        {
                                e = a;
                                a = a;
                                a = e;   //把两个值交换
                        }
        printf("它们从小到大排列顺序为;\n");
        for (b = 0; b <= 9; b++)
                printf("%d", a);
        return 0;
}
为什么执行是乱码?用了好几个编辑器都不行,还有就是,对于数组值的输入,就是那句scanf,是不是每个数用空格隔开?恳请大神解答疑惑!

jackz007 发表于 2020-11-14 00:25:56

#include <stdio.h>

int main(void)
{
      int a , b , c , e                           ;
      printf("请输入十个数:\n")                      ;
      for(b = 0 ; b < 10 ; b ++)scanf("%d", & a)   ;
      for(b = 1 ; b < 10 ; b ++) {
                for(c = b ; c && a < a ; c --) {
                        e = a                  ;
                        a = a               ;
                        a = e                        ;
                }
      }
      printf("它们从小到大排列顺序为 : \n")         ;
      printf("%d" , a)                           ;
      for(b = 1 ; b < 10 ; b ++) printf("\t%d", a) ;
      printf("\n")                                    ;
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
请输入十个数:
3 7 2 5 7 4 1 10 30 6
它们从小到大排列顺序为 :
1       2       3       4       5       6       7       7       10      30
D:\00.Excise\C>

905853663 发表于 2020-11-14 00:28:08

啊?难道可以正常运行?那为什么我这里不行呀?

905853663 发表于 2020-11-14 00:30:03

jackz007 发表于 2020-11-14 00:25
编译、运行实况:

谢谢老师帮我改正,等我看一下

jackz007 发表于 2020-11-14 00:37:39

905853663 发表于 2020-11-14 00:28
啊?难道可以正常运行?那为什么我这里不行呀?

      不行是指不能编译?

风过无痕1989 发表于 2020-11-14 00:46:48

错误全在注释中了
#include<stdio.h>
int main()
{
        int a, b, c, e;
        printf("请输入十个数:\n");
        for (b = 0; b <= 9; b++)         // 多了一个分号
          scanf("%d",&a);                // 与一语句顺序错误

                for (c = 0; c < 9; c++)
                {
                        for (b = 0; b <= 9 - c; b++)// 缺少一个等于号,最后一个元素会被遗漏
                        {
                                if (a < a)      // 所谓起泡,就是大数冒出来,所以应该使用小于号
                                {
                                        e = a;
                                        a = a;
                                        a = e;          //把两个值交换
                                }
                        }                         // 缺少花括号
                }                                 // 缺少花括号

        printf("它们从小到大排列顺序为;\n");
        for (b = 0; b <= 9; b++)
                printf("%d ", a);
        return 0;
}

905853663 发表于 2020-11-14 08:24:52

风过无痕1989 发表于 2020-11-14 00:46
错误全在注释中了

谢谢!不胜感激!

905853663 发表于 2020-11-14 08:25:41

jackz007 发表于 2020-11-14 00:37
不行是指不能编译?

没有没有,我看错了{:10_250:}

风过无痕1989 发表于 2020-11-14 10:42:37

905853663 发表于 2020-11-14 08:24
谢谢!不胜感激!

满意了就选为最佳答案吧

905853663 发表于 2020-11-14 14:30:49

风过无痕1989 发表于 2020-11-14 10:42
满意了就选为最佳答案吧

但是13行那里还是大于号不是小于,我是要从小到大的

风过无痕1989 发表于 2020-11-14 14:52:40

905853663 发表于 2020-11-14 14:30
但是13行那里还是大于号不是小于,我是要从小到大的

那你就改为大于号按你的排吧,没有问题的

PS: 正常的起泡,就像水泡一样,越大越容易往上冒

905853663 发表于 2020-11-14 22:38:03

风过无痕1989 发表于 2020-11-14 14:52
那你就改为大于号按你的排吧,没有问题的

PS: 正常的起泡,就像水泡一样,越大越容易往上冒

是的,讲道理是这样哈哈
页: [1]
查看完整版本: 有关起泡法排列顺序问题