8、有以下程序,执行后输出结果是 ( ) #include <stdio.h> void main() { int p[8]={11,12,13,14,15,1

我是这样算的:11+13+15+17=56.没错吧?可是我的卷子所给的答案是45.故请教一下。sorry题目上传得不完整,这里补充:8、有以下程序,执行后输出结果是()#... 我是这样算的:11+13+15+17=56.没错吧? 可是我的卷子所给的答案是45.
故请教一下。
sorry题目上传得不完整,这里补充:
8、有以下程序,执行后输出结果是 ( )
#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);
}
请教请教!您觉得结果是不是56呢?配上解释吧,谢谢!
展开
 我来答
龙辰888
推荐于2018-03-13
知道答主
回答量:37
采纳率:0%
帮助的人:29.4万
展开全部
#include <stdio.h>
void main()
{ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
While(i++<7) //当i=i+1小于7时,执行循环,所以一开始i=0+1=1
if(p[i]%2) //如果 p[1],p[2],p[3],p[4],p[5],p[6],p[7]能被2整除,执行下一条语句
j+=p[i]; // 所以从p[1]~p[7]能被2整除的是13,15,17,三者相加=45
printf("%d\n",j);
}
regret4hxp2
2011-02-15 · TA获得超过682个赞
知道小有建树答主
回答量:479
采纳率:100%
帮助的人:258万
展开全部
vs2008上运行了,你的括号全是中文括号。
结果是45

if(p[i]%2) 意思是 p[i]是奇数的时候, 加到j上去。
但是 主意while里是i++所以 第一个元素p[0]虽然是奇数。
但是没有加到j上去。明白了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dengniyiqianni
2011-02-15 · TA获得超过316个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:326万
展开全部
第一次进入循环的时候,i的值为0,先与7比较,0小于7,为真,然后i自加,这时为1,后面
p[1]为12了

我觉得龙辰888没有明白i++与++i的区别。前者先用后加,后者先加后用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式