C语言中,用冒泡法对十个整数进行从小到大排序,而且排序过程也要输出

如题所述

第1个回答  2014-10-24
#include <stido.h>

int main()
{
    int a[] = {12, 31, 14, 15, 29, 10, 23, 89, 112, 108};
    
    for(int i = 0; i < 10; i++)
    {
         for (int j = 0; j < 10- i- 1; j++)
         {
             if (a[j] > a[j+1])
             {
                 int tmp = a[j];
                 a[j] = a[j+1];
                 a[j+1] = tmp;
                 
                 printf("%d %d ", a[j], a[j+1]);
             }
         }
    }
    
     printf("\n");
     
     for (int i = 0; i< 10; i++)
     {
          printf("%d ", a[i]);
     }
     
     return 0;
}

追问

有错误啊

追答

不好意思,纯手打的,没有编译。

头文件写错了,把#include <stido.h>这句改成#include <stdio.h>

#include <stdio.h>

int main()
{
    int a[] = {12, 31, 14, 15, 29, 10, 23, 89, 112, 108};

    for(int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10- i- 1; j++)
        {
            if (a[j] > a[j+1])
            {
                int tmp = a[j];
                a[j] = a[j+1];
                a[j+1] = tmp;

                printf("%d %d\n", a[j], a[j+1]);
            }
        }
    }

    printf("\n");

    for (int i = 0; i< 10; i++)
    {
        printf("%d ", a[i]);
    }

    return 0;
}

运行结果:

追问

我已经调试了,没错误,但是最后输出不是我想要的,我的意思就是例如3,8,5,9,7,6,2,1,10,4对他们进行排序,输出结果是第一次排序结果3,8,5,9,7,6,2,1,10,4;第二次结果是3,5,8,7,6,2,1,9,4,10,;第三次。。。。。直到第十次1,2,3,4,5,6,7,8,9,10

追答

自己改吧,冒泡排序已经写出来了,剩下都是加打印输出的语句了。

追问

帮个忙吧,这个真心不会,谢谢了,帮我改出来吧

追答#include <stdio.h>

int main()
{
    int a[] = {3,8,5,9,7,6,2,1,10,4};

    for(int i = 0; i < 10; i++)
    {
        for (int k = 0; k< 10; k++)
        {
            printf("%d ", a[k]);
        }

        printf("\n");

        for (int j = 0; j < 10- i- 1; j++)
        {
            if (a[j] > a[j+1])
            {
                int tmp = a[j];
                a[j] = a[j+1];
                a[j+1] = tmp;
            }
        }
    }

    printf("\n");

    for (int i = 0; i< 10; i++)
    {
        printf("%d ", a[i]);
    }

    return 0;
}

结果:

本回答被网友采纳
相似回答