3、以下程序段的输出结果为 () 。

3、以下程序段的输出结果为 ⑶ 。
int p[]={1,2,3,4,5,6,7,8},i=0,j=0;
while(i++<6)
if(p[i]%2) j+=p[i];
cout<<j;
要分析和答案,不要随便复制粘贴,很耽误事的。
答案给的是15,有人可以分析一下 吗

程序的输出结果是: 1 -2
第一次执行循环体: 输出1 此时x=x-2=3-2=1
判断条件 !(--x) 结果为 真 //此时x再减1 变成 x=0
第二次执行循环体: 输出-2 此时x=x-2=0-2=-2
判断条件 !(--x) 结果为 假 // 此时x再减1 变成 x=-3
循环条件为假 整个循环到此结束。
所以输出结果是 1 -2
是否可以解决您的问题?
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-16
while(i++<6) 看这里

i循环,每次加1 在小于6的时候,都要执行white里面的代码,
代码里面有判断。
if(p[i]%2) 如果 p这个数组第i个元素,注意,数组的下标是从0开始的。当这个元素除以二没有余数,那么这个j就等于j+这个元素
一直执行到最后i++等于6的时候,跳出循环,输出j
这个看着一步一步算就出来了,你是看不懂运算关系才问的么?追问

我觉得应该是9,也就是把下标小于6的元素中的奇数加到j上。可是答案给的是15,所以才问的。

追答

if(p[i]%2)
满足这个条件的 也只有 2,4,6 这三个相加到j的话,也应该是12啊

看来,答案有问题。

追问

满足这条件的应该是数组元素中的135,应该是 p[i]的值是 奇数。而不是下标是奇数。

追答

p[i]%2 表示 p[i]是偶数,要被2整除,只能是偶数撒。 那么就只有2 4 6 三个了嘛。

追问

如果是偶数那么判别式结果就是0,也就是条件就是假,语句就不执行。你再看看。

追答

也对头,你这个不是 true false 的,是1,0执行的,我代码搞混淆了,那他给的那个答案就有问题了。

最后的答案就应该是9了。
还有你另外一个数据库问题不要去回我了我要下班了。

追问

e~~我还想呢,这两个要是同一个人就有意思了,结果还真是。。。你忙吧,不打扰了。

本回答被提问者采纳