鱼C论坛

 找回密码
 立即注册
查看: 1675|回复: 5

[已解决]教教孩子

[复制链接]
发表于 2023-11-21 13:47:48 | 显示全部楼层 |阅读模式
10鱼币
选择法排序:本题要求将给定的n个整数从小到大排序后输出。输出时相邻数字中间用一个空格分开,行末不得有多余空格。
#include <stdio.h>

# define MAXN 10



int main()

{

  int i, index, k, n, temp;

  int a[MAXN];



  scanf("%d", &n);

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

    scanf("%d", &a[i]);

  }

   

  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[i]);

    }else{

      printf(" %d", a[i]);

    }

  }

  printf("\n");



  return 0;

}
麻烦讲一下,谢谢
最佳答案
2023-11-21 13:47:49
  1. #include <stdio.h>

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

  4. int main() {
  5.     int i, index, k, n, temp;
  6.     //2.创建一个数组a,容量为10
  7.     int a[MAXN];

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

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

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

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

  18.         //7.内层循环,两数比较,找出所有数中最小的那个
  19.         for (i = k; i < n; i++) {
  20.             if (a[i] < a[index]) {
  21.                 index = i;
  22.             }
  23.         }
  24.         
  25.         //8.将最小的数移动到a中最前面的位置
  26.         temp = a[k];
  27.         a[k] = a[index];
  28.         a[index] = temp;
  29.     }

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

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

  41.     return 0;
  42. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-21 13:47:49 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

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

  4. int main() {
  5.     int i, index, k, n, temp;
  6.     //2.创建一个数组a,容量为10
  7.     int a[MAXN];

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

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

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

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

  18.         //7.内层循环,两数比较,找出所有数中最小的那个
  19.         for (i = k; i < n; i++) {
  20.             if (a[i] < a[index]) {
  21.                 index = i;
  22.             }
  23.         }
  24.         
  25.         //8.将最小的数移动到a中最前面的位置
  26.         temp = a[k];
  27.         a[k] = a[index];
  28.         a[index] = temp;
  29.     }

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

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

  41.     return 0;
  42. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-11-21 17:20:28 | 显示全部楼层
松花蛋江 发表于 2023-11-21 16:50
#include

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

谢谢你,讲的很细致,但是这个程序得不到预期的结果,还需要完善一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-11-21 17:43:13 | 显示全部楼层
顶顶顶
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

我改好了,应该是可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-11-21 21:22:08 | 显示全部楼层
松花蛋江 发表于 2023-11-21 18:30
我改好了,应该是可以了

谢谢,解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 15:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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