C语言,写的不是很完整,相信高手会回答

来源:百度知道 编辑:UC知道 时间:2024/05/31 13:49:26
用冒泡排序法对键盘输入的8个整数从小到大进行排序。
main()
{int i,j,a[8],temp,swap;
for(i=0;i<8;i++)scanf.......for........
{swap=0;for(j=0;j<8-i-1;j++)
if(a[j]>a[j+1])
[swap=1;
temp=a[j]............}
if(!swap)break;................里面三处SWAP怎么解释

swap表示有交换的标志位。
第一处。初始化,每一次输入,都初始化swap是0.表示没有交换。

第二次。交换。如果前一个比后一个大就进行交换,此时swap标志1

第三次。执行。如果右交换,就退出本次小循环。

swap的值在这个程序中做的就是判断这8个数是否已经从小到大排好了。
看第二个for循环,他它每次都会将swap=0,但是如果已经从小到大排好了以后,就不会运行if(a[j]>a[j+1])这个判断里面的语句,于是!swap=1,所以跳出总循环,排序完毕。