一道C语言题,为什么运行结果是16?我算出来是149

 我来答
我就是很烦12
2021-04-21 · TA获得超过1.8万个赞
知道小有建树答主
回答量:1050
采纳率:83%
帮助的人:334万
展开全部
那是你自己的问题,怎么可能会是149呢?我不知道你怎么算的啊。
这个循环,当i>7,这个循环就结束了,s是由i相加得到的,i最多从0一直增加到7,最多是0+1+2+3+4+5+6+7=28,一看就知道铁定不会超过50的啊,怎么可能整出149呢?
运行结果16是对的,s=1+3+5+7=16。
一开始i=s=0嘛,然后是if语句嘛,是个取余的判定嘛,i=0;i%2=0,第一个数是0对2的取余嘛,结果是0,没问题吧,0除任何数,商都是0啊,余数自然也是0。那么自然跳过后面的if语句的表达式了嘛,做i++,s+=i;i++完了之后不是就加了1嘛,这时候i=1嘛,s+=i,也就是s=s+i嘛,所以s=1了嘛,没问题吧,这时候i是小于7的嘛,所以继续做嘛,第二个if语句,i%2的取余嘛,1/2,商是0嘛,余数是1嘛,所以i%2的结果是1嘛,做if后面的循环嘛,i++嘛,这个时候i=2嘛,然后做continue嘛,自然就跳过了后面i++,s+=i嘛,所以这个时候s还是1嘛,然后i还是小于7的嘛,继续做第三遍嘛,这个时候i=2了嘛,i%2的结果是0嘛,if语句就不做嘛,做后面的i++嘛,这个时候i变成了3嘛,s+=i;s之前是1嘛,这个时候i是3嘛,s=1+3=4嘛,后面是一样的了啊,我就不说了吧。
那么最后就是隔一个数相加一下嘛,所以s=1+3+5+7,当i=7的时候,已经不满足i<7了嘛,直接跳出循环嘛,s=16啊。你那个式子全是相加的,又没有相乘的式子,i最大又是限制在7以内,怎么会有149这么大的数嘛,自己循环和if判断语句看错了吧,初学者,也正常,不过整本书看完了的,不应该问这么简单的,电脑是不会错的,当电脑和你的预算不一样的时候,一定是你的程序逻辑和你自己想的逻辑有出路,按照程序逻辑的语法去算,才能发现问题,这种简单的,还是自己去调试吧,其实很容易搞定的。
microroom
科技发烧友

2021-04-21 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1497万
展开全部
i=0时执行的是i++;s+=1;结果是i=1,s=1。
i=1时执行的是i++;continue;结果是i=2,s=1。
i=2时执行的是i++;s+=1;结果是i=3,s=4。
i=3时执行的是i++;continue;结果是i=4,s=4。
i=4时执行的是i++;s+=1;结果是i=5,s=9。
i=5时执行的是i++;continue;结果是i=6,s=9。
i=6时执行的是i++;s+=1;结果是i=7,s=16。
i=7时退出循环,所以,s最后等于16。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式