#include"stdio.h"#define N 10 int main() { float a[N]={1.78,1.77,1.82,1.79,1.85,1.75,1.86,1.77,1.81,1.80}; int i,j; for(i=N-1;i>=0;i--) { for(j=0;j<i;j++) //如果在该行for语句中的j<i改为j<=i,则输出的数全变成0.0了。 请问为什么呢 ? { //和自身比较的话不就连if的条件都没满足吗,那就相当于没有执行if里面的语句,为什么 if(a[j]>a[j+1]) //会出现这样的情况呢? { a[i]+=a[j]; a[j]=a[i]-a[j]; a[i]-=a[j]; } } } for(i=0;i<N;i++) { printf("%6.2f",a[i]); } putchar('\n'); return 0;}
3 回答
已采纳
望远
TA贡献1017条经验 获得超1032个赞
a[i]+=a[j]; a[j]=a[i]-a[j]; a[i]-=a[j];
这是你交换两个数据的代码块,就是因为这种加减运算的方法所以当j==i时数组元素全是0,你可以自己推一推。
temp=a[j]; a[j]=a[i]; a[i]=temp;
改成这样就行了。
- 3 回答
- 0 关注
- 1586 浏览
添加回答
举报
0/150
提交
取消