C语言,求过程?

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

答案选D。

分析:

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

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

运算过程:

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

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

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

    输出 k 的值,即输出 24。

测试结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  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

相似回答