标题:大一新生,结果和想的不一样,检查了很久也没看出问题,求好心人帮忙看下问 ...
只看楼主
t_dcy
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2019-11-27
结帖率:75%
已结贴  问题点数:20 回复次数:2 
大一新生,结果和想的不一样,检查了很久也没看出问题,求好心人帮忙看下问题出在哪了
#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编辑过]

搜索更多相关主题的帖子: for 大一新生 printf 最大的 i++ 
2019-12-11 21:31
angelly
Rank: 2
等 级:论坛游民
帖 子:1
专家分:20
注 册:2019-12-11
得分:20 
int a[10]=t,i,j,n;
这里数组初始化 int a[10]={0},t,i,j,n;

if(n=10-i);//如果刚好还剩n个数又是第n个最大,就不需要对这个数字进行操作
把这句的判断中的一个'='号,改为两个'='号,即'=='.
2019-12-11 22:47
t_dcy
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2019-11-27
得分:0 
回复 2楼 angelly
非常感谢,感谢感谢
2019-12-11 23:15



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




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

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