请高手帮我看看哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:55:58
/*键盘输入十个数组元素,按从大倒小排序*/
#include <stdio.h>
void main()
{
int a[10];//定义长度为10的数组
int i;//循环变量
int t;
printf("请输入十个数组元素:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);//输入数组元素

}
printf("此数组各个元素为:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=%d\n",i,a[i]);//按输入的顺序输出数组元素
}
for(i=0;i<10;i++)
{
if(a[i]<a[i+1])//大的元素向后错一位
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
printf("排序后的顺序:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=%d\n",i,a[i]);//输出排序后的数组元素
}

}

最后运行完报错,谢谢
那我应该如何来编程,多谢

错在这里
for(i=0;i<10;i++)
{
if(a[i]<a[i+1])//大的元素向后错一位
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

思想错了。应该是
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}

vs2005编译通过~
没问题。

if(a[i]<a[i+1])//大的元素向后错一位
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
当第10个元素比的时候 越界了
个人观点 仅供参考