C语言程序问题(if语句)
展开全部
第一题: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()后的{},否则就会按顺序的执行下去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询