#include<stdio.h> main() { int t,p, i,j,a[10];
for(i=0;i<=9;i++) scanf ("%d ",&a[i]);
for(i=0;i<10;i++)
{ p=i;
for(j=i+1;j<10;j++)
if(a[p]<a[j])
p=j;
if(p!=i)
{t=a[i];a[i]=a[j];a[j]=t;} } for(i=0;i<=9;i++) printf("%d",a[i]);
}
#include<stdio.h> main() { int t,p, i,j,a[10];
for(i=0;i<=9;i++) scanf ("%d ",&a[i]);
for(i=0;i<10;i++)
{ p=i;
for(j=i+1;j<10;j++)
if(a[p]<a[j])
p=j;
if(p!=i)
{t=a[i];a[i]=a[j];a[j]=t;} } for(i=0;i<=9;i++) printf("%d",a[i]);
}
if(a[p]<a[j])
这句 有问题.. 你定义的数组 是 a[0] 到a[9]
当i=9 时,,, j =10 a[ j] 不存在......
不是这样的吧??因为 N个数只需要N-1次排序呀!!那个J不需要达到10 呀!!因为排序到9时已经结束了呀!!我还是不太懂呀!!
你这个是不是排序的程序啊?把小的数放在开头,大的在后?但程序有问题,不能做到你要的功能!我改了你的程序,让你参考一下,不过不是你的那种方法。
#include<iostream.h> void main() { int t,i,j,a[10]; for(i=0;i<=9;i++) cin>>a[i]; for(i=0;i<10;i++) { for(j=0;j<10-i;j++) { if(a[j]>a[j+1]) { t=a[j+1]; a[j+1]=a[j]; a[j]=t; } } } cout<<endl; for(i=0;i<10;i++) cout<<a[i]<<endl; }
[此贴子已经被作者于2004-07-07 23:34:21编辑过]