标题:选择排序法:十个数按升序输出 为啥我的代码输出的不对
只看楼主
求学11
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-5-12
结帖率:0
已结贴  问题点数:20 回复次数:8 
选择排序法:十个数按升序输出 为啥我的代码输出的不对
#include<stdio.h>
int main()
{
    int a[10];
    int i,j,min;
    printf("输入十个数:\n");
    for(i=0;i<10;i++)
     {
      scanf("%d",&a[i]);
     }
     printf("\n");
     for(i=0;i<10;i++)
     {
         min=i;
         for(j=1;j<11;j++)
          {
              if(a[j]<a[i])
              min=j;
         }
        a[i]=a[min];     
     }
    printf("这十个数按升序排列为:\n");
    for(j=1;j<11;j++)
    {
    printf("%d",a[i]);
    printf("\n");
    }
    return 0;
}
搜索更多相关主题的帖子: min 输出 printf 个数 for 
2020-05-12 19:50
求学11
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-5-12
得分:0 
运行结果截图
2020-05-12 19:51
求学11
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-5-12
得分:0 
2020-05-12 19:51
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:7 
首先,排序写的不对。
其次,下标用到了10,超界了。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-05-12 20:25
求学11
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-5-12
得分:0 
回复 4楼 forever74
请问排序具体哪里错了呢 谢谢
2020-05-12 20:32
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
a[i]=a[min];
那a[i]里面原来的内容不就没了么?
教材上论坛上选择也好冒泡也好都多的是啊。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-05-12 20:36
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
得分:7 
程序代码:
#include<stdio.h>
int main()
{
    int a[10];
    int i,j,min;
    int t;        
    printf("输入十个数:\n");
    for(i=0;i<10;i++)
     {
      scanf("%d",&a[i]);
     }
     printf("\n");
     for(i=0;i<10;i++)
     {
         min=i;
         for(j=i+1;j<10;j++)   //数组越界,j的取值范围改回来
          {
              if(a[j]<a[i])
              min=j;
          }
        t=a[i];     //将最小的数与当前数交换
        a[i]=a[min];     
        a[min]=t;
     }
    printf("这十个数按升序排列为:\n");
    for(j=0;j<10;j++)
    {
    printf("%d",a[j]);   //将i改成j
    printf("\n");
    }
    return 0;
}



[此贴子已经被作者于2020-5-13 00:09编辑过]

2020-05-13 00:07
求学11
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-5-12
得分:0 
回复 6楼 forever74
谢谢指出 老是忽略这个问题谢谢了
2020-05-13 23:51
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
得分:7 
#include<stdio.h>
int main(void)
{
    int a[10];
    int i, j, min;
    printf("输入十个数:\n");
    for (i = 0; i<10; i++)
    {
        scanf("%d", &a[i]);
    }
    printf("\n");
   
    for (i = 0; i<10; i++)
    {
        min = i;
        for (j = i+1; j<10; j++)
        {
            if (a[j]<a[i])
                min = j;
        }
        if (min != i)
        {
            int temp = a[min];
            a[min] = a[i];
            a[i] = temp;
        }
    }
    printf("这十个数按升序排列为:\n");
    for (j = 0; j<10; j++)
    {
        printf("%d", a[j]);
        printf("\n");
    }
    return 0;
}
2020-05-14 09:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501579-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.645686 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved