| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2410 人关注过本帖, 1 人收藏
标题:按从大到小排列求助
只看楼主 加入收藏
langzi546
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-6-19
收藏(1)
 问题点数:0 回复次数:25 
按从大到小排列求助

我想按从大到小排出被输入的十个数,可怎么也不成功啊,请高人指教。


#include<stdio.h>
#define P printf
#define S scanf

void main()
{
int a[10],i,j,t;
int max,min;

P("please input ten integers:");
for(i=0;i<10;i++)
{
S("%d",&a[i]);
}
max=min=a[0];
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(a[j]>a[i])
t=max;
max=a[j];
a[j]=t;
}
printf("%d ",max);

}
}

结果是这样:
please input ten integers:1 2 3 4 5 6 7 8 9 10
10 9 8 8 8 8 8 8 8 8 Press any key to continue...
好郁闷啊

搜索更多相关主题的帖子: 排列 
2006-06-25 14:25
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-25 16:17
huangtaomvp
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-23
收藏
得分:0 

void main()
{
int a[10],i,j,t;
int max,min;

P("please input ten integers:");
for(i=0;i<10;i++)
S("%d",&a[i]);
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[j]>a[i])
{ t=a[i];
a[i]=a[j];
a[j]=t;}
for(i=0;i<10;i++)
P("%d, ",a[i]);
}你好像把排序的方法弄错了哦..............


2006-06-25 16:58
limaoyuan0921
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-6-25
收藏
得分:0 

其实max=min=a[0]这一句就是错误!

没有这么赋值的

2006-06-25 17:22
huangtaomvp
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-23
收藏
得分:0 
可以

2006-06-25 18:00
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 


每走一遍内循环后你的数组已经乱了套

[此贴子已经被作者于2006-6-25 18:18:15编辑过]


2006-06-25 18:02
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 
走完第二个循环后,以后的循环内的内容永远不会被执行
没走时的循环:1 2 3 4 5 6 7 8 9 10
第一个循环后:1 1 2 3 4 5 6 7 8 9
第三个循环后:1 1 10 2 3 4 5 6 7 8
a[2]永远不小于a[j]

2006-06-25 18:40
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

有的编译器可以这样赋值.C++提供这样的赋值方法.
楼主似乎不是在做排序.如果是每次取最大值的话,应该将每次找的最大值打印后,赋一个最小值(比如-32767).这样遍历可以显示排序.但真正不是排序.
楼主应该去看看各种排序的编程思想,理解一下,可以知道自己错哪的.


倚天照海花无数,流水高山心自知。
2006-06-28 14:24
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

//冒泡排序
#include<stdio.h>
main()
{int i,j,temp,n,a[100],flag=1;
printf("请问你要输入几个排序数:\n");
scanf("%d",&n);
printf("请输入你要排序的数值:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n&&flag==1;i++)
{ flag=0;
for(j=1;j<n-i;j++)
if(a[j]<a[j-1])
{ flag=1;
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
printf("排序后的:\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
}


倚天照海花无数,流水高山心自知。
2006-06-28 14:25
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
//选择排序
#include<stdio.h>
main()
{int a[100], min,i,k,temp,j,cout;
printf("请问你要输入几个数字(不要超过100个!!):\n");
scanf("%d",&cout);
printf("请输入数字:\n");
for(i=0;i<cout;i++)
scanf("%d",&a[i]);
for(i=0;i<cout;i++)
{
min=i;
for(k=i+1;k<cout;k++)
{
if(a[min]>a[k])
{
min=k;

}

}if(i!=min)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
for(j=0;j<cout;j++)
printf("%d\t",a[j]);
}

倚天照海花无数,流水高山心自知。
2006-06-28 14:25
快速回复:按从大到小排列求助
数据加载中...
 
   



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

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