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 展开
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 展开
3个回答
展开全部
第一题: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()后的{},否则就会按顺序的执行下去。
第二题: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()后的{},否则就会按顺序的执行下去。
展开全部
第一题只会执行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了。
第二题: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了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题 应该是 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:
第二题 没有加括号
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:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询