朱棣 发表于 2021-3-15 11:39:25

用冒泡法对10个数从小到大排序

#include<stdio.h>
void main()
{
int i,j,a,t;
printf("请输入10个数字:");
for(i=0;i<10;i++)
{
scanf("%d",&a);
}
for(j=0;j<10;j++)
{
if(a>a)
t=a;
a=a;
a=t;
}
for(j=0;j<10;j++)
{
printf("%d\n",a);
}

getchar();
getchar();
}

顺序排列是对的,但是后面会出现奇怪的乱码
求帮助!!!!

henkuderen 发表于 2021-3-15 11:56:27

奇怪的乱码是指什么呢。
另外冒泡排序是需要双重循环的,外循环为排序的次数,内循环为一次排序比较的次数,
你代码的排序部分需要修改一下。

jackz007 发表于 2021-3-15 12:11:37

本帖最后由 jackz007 于 2021-3-15 14:07 编辑

for(j=0;j<10;j++)
{
if(a>a)                     // j = 9 时,a = a 下标越界
t=a;
a=a;                        // j = 9 时,a = a 下标越界
a=t;                           // j = 9 时,a = a 下标越界
      下面是我修改的代码,谨供楼主参考
#include<stdio.h>
int main(void)
{
      int i , j , a , t                           ;
      printf("请输入10个数字 : ")                     ;
      for(i = 0 ; i < 10 ; i ++) scanf("%d" , & a)   ;
      for(i = 0 ; i < 9 ; i ++){
                for(j = i + 1 ; j < 10 ; j ++) {
                        if(a > a) {
                              t = a                  ;
                              a = a               ;
                              a = t                  ;
                        }
                }
      }
      printf("%d" , a)                               ;
      for(i = 1 ; i < 10 ; i ++) printf(" , %d" , a) ;
      printf("\n")                                    ;
}
      编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c

D:\0002.Exercise\C>x
请输入10个数字 : 2 4 6 8 10 1 3 5 7 9
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10

D:\0002.Exercise\C>

朱棣 发表于 2021-3-15 15:49:41

谢谢大佬

wodeaidelicious 发表于 2021-3-15 17:36:18

#include<stdio.h>
int main(void)
{
      int i , j , a , t                           ;
      printf("请输入10个数字 : ")                     ;
      for(i = 0 ; i < 10 ; i ++) scanf("%d" , & a)   ;
      for(i = 0 ; i < 10 ; i ++){
                for(j = 0; j < 10-i; j ++)
                                {
                        if(a > a)
                                               {
                              t = a                  ;
                              a = a               ;
                              a = t                  ;
                        }
                }
      }
      printf("%d" , a)                               ;
      for(i = 1 ; i < 10 ; i ++) printf(" , %d" , a) ;
      printf("\n")                                    ;
}
页: [1]
查看完整版本: 用冒泡法对10个数从小到大排序