原因就是你使用if语句时不对,你这个代码中if语句只作用到t=a[i]就结束了,后面a[i]=a[j];a[j]=t;不属于if语句的作用范围,在每一次循环都执行了。在缺省括号时if语句默认执行到其后第一个分号时结束。所以用括号将t=a[i];a[i]=a[j];a[j]=t;括起就可以保证这三句代码是在条件语句内执行。建议你养成良好的编程习惯,在编写代码时最好不要随便省略括号,哪怕括号里只有一句代码。同时你这个代码层次不清楚,学下“ 路一直都在吗 ”的代码编排格式,不要嫌烦索,这样会让你省很多不必要的麻烦。
#include
#include
main()
{ int a[10],i,m,j,t;
for(i=0;i<10;i++)
{ a[i]=rand()%100;
printf("%4d",a[i]);
}
printf("\n");
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;
}
printf("%4d",a[i]);
}
printf("\n");
}
#include
#include
void main()
{
int a[10],i,m,j,t;
for(i=0;i<10;i++)
{
a[i]=rand()%100;
printf("%4d",a[i]);
}
printf("\n");
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;
}
}
printf("%4d",a[i]);
}
printf("\n");
}