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]);
}你好像把排序的方法弄错了哦..............
----------------解决方案--------------------------------------------------------
其实max=min=a[0]这一句就是错误!
没有这么赋值的
----------------解决方案--------------------------------------------------------
可以
----------------解决方案--------------------------------------------------------
每走一遍内循环后你的数组已经乱了套
[此贴子已经被作者于2006-6-25 18:18:15编辑过]
----------------解决方案--------------------------------------------------------
走完第二个循环后,以后的循环内的内容永远不会被执行
没走时的循环: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]
----------------解决方案--------------------------------------------------------
有的编译器可以这样赋值.C++提供这样的赋值方法.
楼主似乎不是在做排序.如果是每次取最大值的话,应该将每次找的最大值打印后,赋一个最小值(比如-32767).这样遍历可以显示排序.但真正不是排序.
楼主应该去看看各种排序的编程思想,理解一下,可以知道自己错哪的.
----------------解决方案--------------------------------------------------------
//冒泡排序
#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]);
}
----------------解决方案--------------------------------------------------------
//选择排序
#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]);
}
----------------解决方案--------------------------------------------------------