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 展开
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 展开
2个回答
展开全部
答案选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。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询