C语言,求过程?

28. 有以下程序main(){ int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i... 28. 有以下程序
main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
 while(i<7&&p[i]%2){k=k+p[i];i++;}
 printf("%d\n",k);
}
执行后输出结果是( )。
(A) 58 (B) 56 (C) 45 (D) 24
展开
 我来答
DavidCai0316
2020-03-13 · TA获得超过973个赞
知道小有建树答主
回答量:311
采纳率:85%
帮助的人:105万
展开全部

答案选D。

分析:

  1. 找规律,i = 0,如果 i < 7 并且 p[i] % 2 都为真,k += p[i]。i 的值变化不大,应该重点看 p[i] % 2 这个条件,这是对 p[i] 奇偶性的判断,如果 p[i] 是偶数则为假,退出循环,所以从数组的首元素开始找,找出第一个偶数。

  2. 很明显,a[2] = 14 是偶数,所以共循环了两次,k 的值也累加了两次,所以 k 的值为 11 + 13 = 24,答案选 D。

运算过程:

  1. i = 0,k = 0,判断(i < 7 && p[i] % 2),0 < 7 为真,11 % 2 也为真,执行 k += p[i],i++,此时 k = 11,i = 1。

  2. i = 1,k = 11,判断(i < 7 && p[i] % 2),1 < 7 为真,13 % 2 也为真,执行 k += p[i],i++,此时 k = 24,i = 2。

  3. i = 2,k = 24,判断(i < 7 && p[i] % 2),2 < 7 为真,14 % 2 为假,退出循环。

  4. 输出 k 的值,即输出 24。

测试结果

匿名用户
2020-03-13
展开全部

i=0, i<7 && p[i] % 2 结果真,k=k+p[0]=11

i=1, i<7 && p[i] % 2 结果真,k=k+p[1]=24

i=2, i<7 && p[i] % 2 结果假,退出循环

输出  结果  24

正确答案   (D) 24

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式