C语言中随机产生10个100之内的整数,然后按从大到小的顺序排列并输出。以下是我写的代码,但怎么排序后不

2025-02-14 05:49:49
推荐回答(3个)
回答1:

原因就是你使用if语句时不对,你这个代码中if语句只作用到t=a[i]就结束了,后面a[i]=a[j];a[j]=t;不属于if语句的作用范围,在每一次循环都执行了。在缺省括号时if语句默认执行到其后第一个分号时结束。所以用括号将t=a[i];a[i]=a[j];a[j]=t;括起就可以保证这三句代码是在条件语句内执行。建议你养成良好的编程习惯,在编写代码时最好不要随便省略括号,哪怕括号里只有一句代码。同时你这个代码层次不清楚,学下“ 路一直都在吗 ”的代码编排格式,不要嫌烦索,这样会让你省很多不必要的麻烦。

回答2:

#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");

}

回答3:

#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");

}