c++语言,while循环问题.里面的变量change把我搞糊涂了,它起到了什么作用?#include void main (){int a[10],i,j,t,n,change;for (j=0;j0&&change==1) /*为什么不直接写成n>0*/{change=0; /*这又是什么?*/for (j=0;j

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/23 20:32:30

c++语言,while循环问题.里面的变量change把我搞糊涂了,它起到了什么作用?#include void main (){int a[10],i,j,t,n,change;for (j=0;j0&&change==1) /*为什么不直接写成n>0*/{change=0; /*这又是什么?*/for (j=0;j
c++语言,while循环问题.里面的变量change把我搞糊涂了,它起到了什么作用?
#include
void main ()
{
int a[10],i,j,t,n,change;
for (j=0;j0&&change==1) /*为什么不直接写成n>0*/
{
change=0; /*这又是什么?*/
for (j=0;ja[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
change=1; /*为什么呢?*/
}
}
n--;
}
}
for (i=0;i

c++语言,while循环问题.里面的变量change把我搞糊涂了,它起到了什么作用?#include void main (){int a[10],i,j,t,n,change;for (j=0;j0&&change==1) /*为什么不直接写成n>0*/{change=0; /*这又是什么?*/for (j=0;j
change 是用来控制循环的,整个while循环是将当前已经输入的n的数据全部从小到大的排序.只有每次在循环里面的有发生数据的交换,change才会被值为1,如果change为0说明数组已经有序了,你是的只需要while(n a[j+1] = 3, 交换: 1 2 4 3 5(change 置为1)
第一交换完,整个数组还不是有序的,需要继续的执行.
第二次进入while:
j = 0 时, a[j] = 1 < a[j+1] = 2, 不交换: 1 2 4 3 5
j = 1 时, a[j] = 2 < a[j+1] = 4, 不交换: 1 2 4 3 5
j = 2 时, a[j] = 4 > a[j+1] = 3, 交换: 1 2 3 4 5(change 置为1)
j = 3 时, a[j] = 4 < a[j+1] = 5, 不交换: 1 2 4 3 5
整个while之后, change为1, 主要再次的进入执行, 检查.
这次由于所以的数已经有排序了
j = 0 时, a[j] = 1 < a[j+1] = 2, 不交换: 1 2 3 4 5
j = 1 时, a[j] = 2 < a[j+1] = 3, 不交换: 1 2 3 4 5
j = 2 时, a[j] = 3 < a[j+1] = 4, 不交换: 1 2 3 4 5
j = 3 时, a[j] = 4 < a[j+1] = 5, 不交换: 1 2 3 4 5
这次完了之后change=0; 不用在继续执行while了.
这样有了change变量控制之后,循环的次数就少多了.