王小二° 发表于 2023-11-21 13:47:48

教教孩子

选择法排序:本题要求将给定的n个整数从小到大排序后输出。输出时相邻数字中间用一个空格分开,行末不得有多余空格。
#include <stdio.h>

# define MAXN 10



int main()

{

int i, index, k, n, temp;

int a;



scanf("%d", &n);

for(i = 0; i < n; i++){

    scanf("%d", &a);

}

   

for(k = 0; k < n-1; k++){

    index = 【1】 ;

    for【2】{

      if【3】{

      index = i;

      }   

    }

   【4】

}



for(i = 0; i < n; i++) {

    if【5】{

      printf("%d", a);

    }else{

      printf(" %d", a);

    }

}

printf("\n");



return 0;

}
麻烦讲一下,谢谢

松花蛋江 发表于 2023-11-21 13:47:49

#include <stdio.h>

//1.宏定义常量MAXN为10
# define MAXN 10

int main() {
    int i, index, k, n, temp;
    //2.创建一个数组a,容量为10
    int a;

    //3.接收用户输入的数字赋值给变量n
    scanf_s("%d",&n);

    //4.接收用户输入的n个数依次放入数组a
    for (i = 0; i < n; i++) {
      scanf_s("%d", &a);
    }

    //5.冒泡排序,外层循环为冒泡轮数,每一轮产生一个最大的数放到a的最后一个位置,轮数为n-1
    for (k = 0; k < n - 1; k++) {

      //6.指向数组中较小的数的索引
      index = k;

      //7.内层循环,两数比较,找出所有数中最小的那个
      for (i = k; i < n; i++) {
            if (a < a) {
                index = i;
            }
      }
      
      //8.将最小的数移动到a中最前面的位置
      temp = a;
      a = a;
      a = temp;
    }

    //9.数组a中的数已经排好序,遍历输出数组a,若为第一个数则前面不加空格
    for (i = 0; i < n; i++) {
      if (i == 0) {
            printf("%d", a);
      }
      else {
            printf(" %d", a);
      }
    }

    //10.换行
    printf("\n");

    return 0;
}

王小二° 发表于 2023-11-21 17:20:28

松花蛋江 发表于 2023-11-21 16:50
#include

//1.宏定义常量MAXN为10


谢谢你,讲的很细致,但是这个程序得不到预期的结果,还需要完善一下

王小二° 发表于 2023-11-21 17:43:13

顶顶顶

松花蛋江 发表于 2023-11-21 18:30:51

王小二° 发表于 2023-11-21 17:20
谢谢你,讲的很细致,但是这个程序得不到预期的结果,还需要完善一下

我改好了,应该是可以了

王小二° 发表于 2023-11-21 21:22:08

松花蛋江 发表于 2023-11-21 18:30
我改好了,应该是可以了

谢谢,解决了
页: [1]
查看完整版本: 教教孩子