数组与循环

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:07:51
int a[12]={76,63,54,62,40,75,80,92,77,84,44,73);
int b[4]={60,70,90,101};
int c[4]={0};
int i,j;
for(i=0;i<12;i++) {
j=0;
while(a[i]>=b[j]) j++;
c[j]++;
}
for(i=0;i<4;i++) printf("%d ",c[i]);
printf("\n");
printf("\n");
请说一下程序中的是怎么循环的。
当执行while(a[i]>=b[j]) ,不成立时,j++; 和c[j]++; 怎么执行法?

1.先进入下面这个循环体
for(i=0;i<12;i++)
{
j=0;
while(a[i]>=b[j])
j++;
c[j]++;
}
<1.>当i=0时,i<12成立,执行for循环体中的语句
<2.>首先执行j=0,再执行while循环,当while循环退出时a[i]=76,b[j]=90,j=2,再执行c[j]++,执行后c[2]=1,到此一次for循环结束。
<3.>i的值增1,重复1,2步,直到i=12for循环退出。

2.接下来进入下面这个循环体
for(i=0;i<4;i++)
printf("%d ",c[i]);

3.这个程序的目的是按顺序打印出,数组a中比数组b中相应位的数小的个数。

该程序段的作用是将a数组中的整数与b中的整数进行比较,并将比较结果记录在c数组中,最后输出.比较过程如下:
1)首先将a中的第一个整数与b中的第一个整数比较,若大于或等于,将c中与b 中对应元素的数值加1,然后比较下一个;若小于,不再比较;
2)接下来将a中的第二个整数与b中的各个整数进行比较,方法如上;
3)将a中所有的整数都比较完毕后,输出结果.c中有4个元素,分别记录了a
中整数有多少个大于或等于b中相应的整数.
整个循环过程就是这样了.

当while(a[i]>=b[j])不成立时,j++和c[j]++不执行,因为b的整数是按从小到大排列的,所以当循环的条件不成立,也就表示当前a中的整数不可能再比b中后面的数更大了,所以不用再比较下去了,同时用来表示计数的c[j]也不会加1,循环退出,然后在外循环中i加1,又开始下一轮比较.

先进入for循环,将i初始化为0,j初始化为0;然后进入while循环,判断是否满足while循环的条件,a[0]>=b[0],执行循环,j变为1;再判断是否满足while循环的条件,a[0]>=b[1],执行循环,j变为2;再判断是否