C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因

下面程序运行结果是。#include<stdio.h>voidmain(){inta,b,c,d,x;a=c=0;b=1;d=20;if(a)d=d-10;elseif(... 下面程序运行结果是 。
#include <stdio.h>
void main()
{
int a,b,c,d,x;
a=c=0;
b=1;d=20;
if(a) d=d-10;
else if(!b)
if(!c)x=15;
else x=25;
printf("%d\n",d);
}
(A)20 (B)25 (C)15 (D)10
答案:A
最后一个else不是对应以上所有吗,为什么不是25?
展开
 我来答
moonshiptrue
2013-03-17 · TA获得超过148个赞
知道答主
回答量:37
采纳率:50%
帮助的人:33.1万
展开全部
加上括号你就明白了,按照else与最近的if配合这个规则,这段连续if-else等同如下代码:
if(a){
d=d-10;
}else if(!b){
if(!c){
x=15;
}else{
x=25;
}
}

所以答案是A。
zzw820428
2013-03-17 · TA获得超过729个赞
知道小有建树答主
回答量:633
采纳率:0%
帮助的人:702万
展开全部
#include <stdio.h>
void main()
{
int a,b,c,d,x;
a=c=0;
b=1;d=20;
if(a) d=d-10;
else if(!b)
if(!c)x=15;
else x=25;
printf("%d\n",d);
}
最简单的,这里面跟打印出来的d有关的就只有一句。
if(a) d=d-10
a=0,所以if(a)不会进去。d的值不会改变。就这么简单,d为初值20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永不言弃940711
2013-03-17 · 超过12用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:32.5万
展开全部
else是与和它最近的if配对的 所以最后一个else是与最后一个if配对的#include <stdio.h>
int main()
{
int a,b,c,d,x;
a=c=0;
b=1;d=20;
if(a) d=d-10;
else if(!b)
{
if(!c)x=15;
else x=25;//所以这里的大括号加不加都一样的
}
printf("%d\n",d);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-03-17 · TA获得超过153个赞
知道答主
回答量:63
采纳率:0%
帮助的人:66.4万
展开全部
当然不是,第一个else对应第一个if,第二个else对应第二个if 所以相当于d的值没变过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
taoyu2013
2013-03-17
知道答主
回答量:29
采纳率:0%
帮助的人:12.2万
展开全部
输出的是d的值,d并没有参加运算,所以这个结果就应该是20跟前面的if嵌套语句无关
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-17
展开全部
结果让输出d,以为第一个if语句不成立,所以不对d的值做改变,而且最后一个else应该与他上面的那if是嵌套的,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式