帮忙分析分析下面一道C语言编程

#include "stdio.h"
void main()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)if(p[i]%2) j+=p[i];
printf("%d\n",j);

}

此题关键在于while(i++<7)
第一次循环 i=0,i++<7,即0<7,比较完成后,i+1=1,p[1]=12,j=0
第二次循环 i=1,i++<7,即1<7,比较完成后,i+1=2,p[2]=13,j=13
第三次循环 i=2,i++<7,即2<7,比较完成后,i+1=3,p[3]=14,j=13
第四次循环 i=3,i++<7,即3<7,比较完成后,i+1=4,p[4]=15,j=13+15=28
第五次循环 i=4,i++<7,即4<7,比较完成后,i+1=5,p[5]=16,j=28
第六次循环 i=5,i++<7,即5<7,比较完成后,i+1=6,p[6]=17,j=28+17=45
第七次循环 i=6,i++<7,即6<7,比较完成后,i+1=7,p[7]=18,j=45
程序结束,结果输出45
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-25
i=0<7,i=1,无余数
i=1<7,i=2,余1,j=0+13
i=2<7,i=3,无余数
3 j=13+15=28
4
5 j=28+17=45
i=6<7,i=7,无余数
i=7 直接到printf
打印j为45
第2个回答  2011-07-25
嗯,好玩的地方在i++<7。这里当i=6时,6小于7,然后i再自加,i=7。p[i]==p[7]==18.
再执行下一循环时,7<7为false,跳出循环。

好好研究下i++跟++i的区别吧
第3个回答  2011-07-25
输出为:45
while先i++再判断,if中p[i]为偶数时跳出语句,所以j=13+15+17。
主要为while,if中的判断语句的真假,值为0假跳出,其他则执行。
第4个回答  2011-07-27
数组中第一个数据后7的个数据中的奇数的和
第5个回答  2011-07-25
有错误,IF中的有
相似回答