问题 单项选择题

有以下程序 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]; prizltf("%d\n", j); } 程序运行后的输出结果是

A.42

B.45

C.56

D.60

答案

参考答案:B

解析: 本题考查的是while语句和if语句的综合应用。程序中while的循环条件是1++<7,由于程序开始时将i初始化为0,而且循环体中没有改变变量i的语句,只有循环条件中i的自增,所以当i从0自增到6时循环的循环体一共被执行了7次,但是在循环体中,i的值为从1到7。在循环体中只有一条if语句,其条件表达式为 p[i]%2,当p[i]为奇数时,p[i]除以2余1,条件表达式的值为“真”,所以整个循环语句所做的事就是:累计p[1]到p[7]之间的奇数到变量j中。所以最后j的值应该为13+15+17=45.选项B符合题意。

单项选择题
单项选择题