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

Python013

C语言程序问题(if语句),第1张

第一题: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=bb=aa=t

}。而你的程序没加“{}”,所以相当于:

main()

{

int

a=3,b=4,c=5,t=99

if(b<a&&a<c)

t=a

a=cc=t

if(a<c&&b<c)

t=b

b=aa=t

printf("%d%d%d\n",a,b,c)

}

这样执行完第一个if后,不管()内的值是什么,都会执行a=cc=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=0i<10i++)

{

printf("%d",i)

}

for(i=0i<10i++)

{

printf("%d",i)if(i==5)

break

}

第一个for语句会显示0-9;而第二个当i==5时遇到break,就跳出循环,不再执行i=6,7...9的情况。

对switch()语句也一样,遇到break就会跳出switch()后的{},否则就会按顺序的执行下去。

改如下:

int main(){

int x,/*a,b,c,d,e,*/f

scanf("%d",&x)

if(x<1000||x>9999)

{

printf("Invalid data\n")

}

else

{

/*a=x/1000//这一段算法有误

e=x-1000*a

b=e/100

e=e-100*b

c=b/10

e=e-10*c

d=eprintf("%d %d %d %d\n",a,b,c,d)

f=(a+b+c+d)/2*/

f=(x/1000+x/100%10+x/10%10+x%10)%2//将上面注销的改成这一行

if(f==0)

{

printf("Yes\n")

}

else

{

printf("No\n")

}

}

return 0

}