C语言程序问题(if语句)

第一题如下:main(){inta=1,b=2,c=3;if(c=a)printf("%d\n",c);elseprintf("%d\n",b);}输出结果是:1第二题如... 第一题如下:
main()
{
int a=1,b=2,c=3;
if(c=a)
printf("%d\n",c);
else
printf("%d\n",b);
}
输出结果是: 1

第二题如下:
main()
{
int a=3,b=4,c=5,t=99;
if(b<a&&a<c) t=a;a=c;c=t;
if(a<c&&b<c) t=b;b=a;a=t;
printf("%d%d%d\n",a,b,c);
}
输出结果是:4599

第三题如下(请附注说明break的作用,我的书上不是很明确):
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d",i);
}
//输出结果是:000122
展开
 我来答
别动队领导
2009-01-27 · TA获得超过399个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:297万
展开全部
第一题:if(c=a)?你是想写if(c==a)吧,(c=a)是赋值表达式,其作用是将a的值付给c。而该表达式的值是赋值号右边的值,也就是a的值1,所以判断的结果为真,执行“printf("%d\n",c);”,而变量c刚被赋值为a的值,所以显示1.要想判断相等,应用“==”。

第二题:if的作用范围是其后面的第一个语句,如果想要if作用多个语句,应用“{}”,例if(a<c&&b<c) { t=b;b=a;a=t; }。而你的程序没加“{}”,所以相当于:
main()
{
int a=3,b=4,c=5,t=99;
if(b<a&&a<c) t=a;
a=c;c=t;
if(a<c&&b<c) t=b;
b=a;a=t;
printf("%d%d%d\n",a,b,c);
}
这样执行完第一个if后,不管()内的值是什么,都会执行a=c;c=t;
第二个if也一样。

第三题:你没有加在case 结束后加break;所以当i==0时,执行完
case 0会继续执行case 2与default后的语句。如果想i为0时只执行case 0,应为:case 0:printf("%d",i);break;

break是用来跳出循环体,或if()、switch()的,如:
for(i=0;i<10;i++)
{ printf("%d",i); }
for(i=0;i<10;i++)
{ printf("%d",i);if(i==5) break; }
第一个for语句会显示0-9;而第二个当i==5时遇到break,就跳出循环,不再执行i=6,7...9的情况。
对switch()语句也一样,遇到break就会跳出switch()后的{},否则就会按顺序的执行下去。
砍侃看
2009-01-27 · TA获得超过6153个赞
知道大有可为答主
回答量:6584
采纳率:69%
帮助的人:2084万
展开全部
第一题只会执行printf("%d\n",c);,这是初学者经常犯的错误,因为if(c=a)中的c=a是一个赋值语句将a的值赋给c,所以if的判断始终都是真,因此打印出来的值是1,此时C的值因为c=a而改为了1.如果你想判断c与a是否相等的话,应该使用if(c==a)。

第二题:if(b<a&&a<c) t=a;a=c;c=t;我不知道你是不是掉了花括号还是别的,因为b<a&&a<c判断为假,所以t=a将不会执行,此时执行a=c;c=t;之后得到a的值变为5,c的值变为99.接着执行if(a<c&&b<c)因为a<c&&b<c判断为真所以语句 t=b;被执行,然后执行b=a;a=t;得到最终结果。if语句如果不加符号"{}"的话只会执行紧跟其后的语句。

第三题:break的作用是结束本次循环开始下次循环。拿本例来说,第一次执行时i==0,过在case 2:前有break;语句的话,那么只会执行case 0:printf("%d",i);这一句,然后结束本次循环不会再执行下面的语句,开始下一次循环此时i的值就变为1了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阴影中的猫猫
2009-01-27 · TA获得超过1199个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:387万
展开全部
第一题 应该是 c==a , c =a 不是判断语句 是 赋值语句

第二题 没有加括号

if(b<a&&a<c) {t=a;a=c;c=t; }
if(a<c&&b<c) {t=b;b=a;a=t; }

第三题 , 不加break 的话, switch 语句就完全错误了。
switch 的标准格式就是要break;
不然的话 当i==0时, 执行完printf("%d",i); , 它会接着执行后面的两行 , 无视case 2 default:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式