注册 登录
编程论坛 C语言论坛

大一新生,结果和想的不一样,检查了很久也没看出问题,求好心人帮忙看下问题出在哪了

t_dcy 发布于 2019-12-11 21:31, 2322 次点击
#include<stdio.h>
int main()
{
    printf("请输入10个整数,空格键隔开,回车将它们从小到大输出\n");
    int a[10]=t,i,j,n;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=1;i<10;i++)
        {
            for(j=0,n=0,t=a[0];j<10-i;j++)//遍历的数量会依次减少,因为每一次最大的已经放后面了,只需要找剩下数字中最大的就行
                {
                    if(a[j+1]>=t)
                    {
                        t=a[j+1];
                        n=j+1;
                    }   
                }
            if(n=10-i);//如果刚好还剩n个数又是第n个最大,就不需要对这个数字进行操作
            else
            a[j]=a[10-i];
            a[10-i]=t;//把最大的从后往前放
            
        }
    printf("它们从小到大排列的顺序是:");
    for(i=0;i<10;i++)
        printf("%d  ",a[i]);
    return 0;
}

[此贴子已经被作者于2019-12-11 21:36编辑过]

2 回复
#2
angelly2019-12-11 22:47
int a[10]=t,i,j,n;
这里数组初始化 int a[10]={0},t,i,j,n;

if(n=10-i);//如果刚好还剩n个数又是第n个最大,就不需要对这个数字进行操作
把这句的判断中的一个'='号,改为两个'='号,即'=='.
#3
t_dcy2019-12-11 23:15
回复 2楼 angelly
非常感谢,感谢感谢
1