C语言题目,题目不懂是什么意思,还有为什么选B,求详解
有以下程序voidmain(){intp[8]={1,2,3,4,5,6,7,8},i=0,j=0;while(i++<7)if(i%2)j+=p[i];printf("...
有以下程序
void main()
{
int p[8]={1,2,3,4,5,6,7,8},i=0,j=0;
while(i++<7) if(i%2) j+=p[i];
printf("%d\n",j);
}
程序运行后的输出结果是( B)。
A)16 B)20 C)36 D)0 展开
void main()
{
int p[8]={1,2,3,4,5,6,7,8},i=0,j=0;
while(i++<7) if(i%2) j+=p[i];
printf("%d\n",j);
}
程序运行后的输出结果是( B)。
A)16 B)20 C)36 D)0 展开
3个回答
展开全部
if(i%2) j+=p[i];应该是这句不懂吧。
if 后括号里是判断:i%2若等于零则不执行下面语句,回复循环。若i%2不等于零即执行下面语句。
因为C语言里表判断的时候零为假,非零为真。
if 后括号里是判断:i%2若等于零则不执行下面语句,回复循环。若i%2不等于零即执行下面语句。
因为C语言里表判断的时候零为假,非零为真。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一次循环i=0执行后i=1不能被2整出所以 j+=p[1];j=2
第二次i=1执行后i=2能被整除不执行j+=p[i];j=2
第三次i=2执行后I=3不能被整出执行j+=p[i];j=2+p[3];j=6
第四次i=3执行后I=4能被整除 j=6
第五次i=4执行后i=5不能被整除j+=p[i];j=6+p[5];j=12
第六次i=5执行后i=6 被整除直接输出j=12
第七次i=6执行后i=7 不能整除执行j+=p[i];j=12+p[7];j=20
回答完毕
第二次i=1执行后i=2能被整除不执行j+=p[i];j=2
第三次i=2执行后I=3不能被整出执行j+=p[i];j=2+p[3];j=6
第四次i=3执行后I=4能被整除 j=6
第五次i=4执行后i=5不能被整除j+=p[i];j=6+p[5];j=12
第六次i=5执行后i=6 被整除直接输出j=12
第七次i=6执行后i=7 不能整除执行j+=p[i];j=12+p[7];j=20
回答完毕
追问
不是要在第二次循环的时候i才会自增吗?怎么第一次没循环完就自增了?
追答
while(i++<7) if(i%2) j+=p[i];
这个语句执行
while(i++<7)
之后这个i已经自增,但是这个语句中使用的i仍然是没有自增后的值,这就是i++,++i的区别,前者是先使用后运算,后者是先运算后使用。懂否?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i=0; j=0+p[1]=2;
i=1;
i=2; j=2+p[3]=6;
i=3;
i=4; j=6+p[5]=12;
i=5;
i=6; j=12+p[7]=20;
i=7;
i 是个后置自增,你要在p【i】里的i要进行自增才行。
i=1;
i=2; j=2+p[3]=6;
i=3;
i=4; j=6+p[5]=12;
i=5;
i=6; j=12+p[7]=20;
i=7;
i 是个后置自增,你要在p【i】里的i要进行自增才行。
追问
不是要在第二次循环的时候i才会自增吗?怎么第一次没循环完就自增了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询