C语言问题???急。。。。在线等!!!

main(){inta=10,y=0;do{a+=2,y+=a;printf("a=%dy=%d\n",a,y);if(y>20)break;}while(a=14);}... main()
{ int a=10,y=0;
do
{a+=2,y+=a;
printf("a=%d y=%d\n",a,y);
if(y>20) break;
}
while(a=14);
};
结果是多少,答案是a=12 y=12
a=16 y=28

A=12 Y=12我知道。我不明白16与28怎么算的呀。高手请教下。要请细0呀! <以上为课本上的试题>
展开
 我来答
悉己n
2008-04-22 · TA获得超过759个赞
知道小有建树答主
回答量:684
采纳率:100%
帮助的人:553万
展开全部
do while结构是先do后判断while表达式。

第一次: a=12,y=12, 此时,执行while里面的(a=14),注意这里是=,不是==,所以返回14,为TRUE,且a=14;

第二次: a=14+2=16,y=12+16=28 ,由于y>20,break,循环结束!
高金山
2008-04-22 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1651万
展开全部
这是个do-while循环啊
循环开始a=10,y=0;
循环第一次a=12 y=12
到while那,把a赋值了14
所以,循环第二次的时候a=16 y=28
这个时候if(y>20) break; 退出循环了
也就是说,这个循环不是靠while中的条件退出的,因为它一直为真
而是靠if(y>20) break;退出的

do
{
a+=2,y+=a;
printf("a=%d y=%d\n",a,y);
if(y>20) break;
}
while(a=14);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a1edae1
2008-04-22 · 超过17用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:31.3万
展开全部
你现在的程序得到的结果理论上就是a=12 y=12 :但因为while(a=14); 这个条件不是问a等于14吗,而是将14付值给a,所以循环执行有a=14+2=16啊y=14+12=28了(12是第一次付给y的值)要想得到a=12 y=12 需改while(a==14);就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cwin114040
2008-04-22
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
你的程序中有"while(a=14)"
当程序运行到这里的时候系统会对a赋值
当运行完第一次循环后出现a=12 y= 12
到while(a=14),a被赋值为14然后进入第二次循环
第二次printf出来的是a=16 y=28然后if(y>20) break执行,循环跳出
如果你将while(a=14)改为while(a==14)就可以得到a=12 y=12、这个唯一的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qw461502141
2008-04-22 · 超过11用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:35.7万
展开全部
呵呵。看来你是学c的新手哦,这个问题是个比较容易错的位子,=是赋值表达式,==才相当于数学中的等于号,while()括号里一般是关系表达式和逻辑表达式。但也可以是其他的合法表达式。a=14是赋值,a==14才能作为判断条件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式