一名不愿透漏姓名的沙雕
2020-03-09 22:47
#include <stdio.h> int main() { double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80}; int i,j; printf("\n************排队前*************\n"); for(i=0;i<10;i++) { if(i != 9) printf("%.2f, ", arr[i]); else printf("%.2f", arr[i]); } for(i=8; i>=0; i--) { for(j=0;j<=i;j++) { if(arr[j]>arr[j+1] ) //这里的整个if代码块里j能否用i代替呢? { double temp; temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } printf("\n************排队后*************\n"); for(i=0;i<10;i++) { if(i != 9) printf("%.2f, ", arr[i]); else printf("%.2f", arr[i]); } return 0; }
在注释处标明的代码块,第一次写时全写成了 i ,显示“输出成功,代码错误”。但是运行结果和改成 j 之后是一样的。
想问一下这里能不能写 i ,以及写 j 有没有什么好处……(直觉上感觉应该是因为数组的限制最好用j?但是没想明白。本人超——级菜的,非常感谢您的回答!!!)
也可以用i,如果用i的话,那么外循环i就应该从9开始,此时arr[j]>arr[i]的比较就是从数组第一个数依次后推和最后一个比较,排出最大值,然后,第二次循环就是从第一个
依次后推和
倒数第二个比较,这样也是可以比较出最大值的,如果是arr[j]>arr[j+1]
就是相邻两个依次比较,直到将最大值推到最后一个位置
这个和字母没有关系 int i,j; 是你定义的两个变量 你可以任意定义字母abc都行 你可以试试把有j的字母全部换掉 结果也是一样的 在这个循环中只是给j定义并赋值了 和其本身字母无关
C语言入门
926299 学习 · 20799 问题
相似问题