1、关系运算符:<、<= 2、逻辑运犷符:!、&&、 3、逻辑值:真(1)、假(0) 4、非零为真。零为假 5、条件运犷符:表达式1?表达式2:表达式3 若intx=3,y=4,z=5; 1)求表达式!(x<y)&&!z‖1)的值 2)求表达式xy?x+y:!z+y的值
1、关系运算符: =、 >、 != 2、逻辑运算符: !、 &&、 || 3、逻辑值:真(1)、假(0) 4、非零为真,零为假 5、条件运算符:表达式1?表达式2 :表达式3 若 int x=3,y=4,z=5; 1)求表达式 !((xy? x+y :!z+y的值
6、使用条件选择语句(if)需要注意的问题: 以比较典型i语句为例: 表达式要扩上, 括号后没有符号 if(表达式1) 语句1 只能有一个语句,多 个的话必需用 else 语句2 只能有一个语句,多 个的话必需用
6、使用条件选择语句(if)需要注意的问题: 以比较典型if语句为例: if(表达式1) 语句1 else 语句2 表达式要扩上, 括号后没有符号 只能有一个语句,多 个的话必需用复合语 句 只能有一个语句,多 个的话必需用复合语 句
例如:实验程序(三个数按升序排序) mainO i int a, b, c, t; scanf(“%d,%d,%”,&a,&b,&c); if(a>b) It=a; a=b;b=t if(a>c) It=a;a=C:c=t if(b>c) It=b; b=c; c=t printf(“a=%d,b=%d,c=%d”,a,b,c)
例如:实验程序(三个数按升序排序) main() { int a , b , c , t ; scanf(“%d,%d,%c”,&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf(“a=%d,b=%d,c=%d”,a,b,c) }
mainO {inta,b,c,t;/不用复合语句的情况 scanf(“%d,%d,%c”,&a,&b,&c) if(a>b) t=a b a= b=t if(a>c) It=a;a=c; c=t: K if( b>c) It=b; b=c; c=t; K printf(“a=%d,b=%d,c=%d”,a,b,c)
main() { int a , b , c , t ; /*不用复合语句的情况*/ scanf(“%d,%d,%c”,&a,&b,&c); if(a>b) t=a; a=b; b=t; if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf(“a=%d,b=%d,c=%d”,a,b,c); }
maino maino 去掉复合语句* fint a, intayb, x,y scanf(0 3,), &a,&b) if(a>b if(a>b) x=a+b = 闪b el se y=a b I x=aib: y=a/b; j se printi(x写%,等gy printf(“x=%d,y=%d,c=%d”,x,y);
main() { int a , b , x , y ; scanf(“%d,%d,%c”,&a,&b); if(a>b) { x=a+b; y=a-b;} else { x=a*b ; y=a/b ;} printf(“x=%d,y=%d,c=%d”,x,y); } main() /* 去掉复合语句*/ { int a , b , x , y ; scanf(“%d,%d,%c”,&a,&b); if(a>b) x=a+b; y=a-b; else { x=a*b ; y=a/b ;} printf(“x=%d,y=%d,c=%d”,x,y); }
使用开关分支语句 般是算术表达式, 括号扩上,括号后没符号 ( switch语句)要注意 的问题: 这组case子句用花括号扩上个数不限 switch(表达式 { case E1:语句组1; break; 每个cas子句执行完由 case E2语旬组2: break break结束 switch语句 case En:语句组n;brea 当每个case子句都不匹配的 default语旬组; break;j 时候,执行 default-子句
switch( 表达式) { case E1:语句组 1; break; case E2:语句组 2; break; …….. case En: 语句组 n; break; [default: 语句组 ; break; ] } ……. 使用开关分支语句 (switch语句)要注意 的问题: 一般是算术表达式, 括号扩上,括号后没符号 这组case子句用花括号扩上个数不限 每个case子句执行完由 break结束switch语句 当每个case子句都不匹配的 时候,执行default子句
例 void main {intx=12y=0,a=0.b=0; switch(x) case switch(y) i case 0: a++, break case 1: b++. break case 2: a++: b++. break case 3 a++: b++ rIn ntf( na=%d, b=%d, a, b) 运行结果:a=2,b=1
例 void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++;b++; break; case 3: a++;b++; } printf(“\na=%d,b=%d”,a,b); } 运行结果:a=2,b=1
程序举例:*写程序,由公元号判断某一年是否闰年。 分析:闰年的条件:1)公元号能被4整除,但不能被100 整除,是闰年;2)公元号能被10整除,又能被40整 狳,是闰年。不满足这两个条件的不是闰年。 以变量ap代表是否闰年的信息。若闰年,令1eap=1排闰 年,1eap=-0。(ea是一个信号量) T yea被4整除 F year被100整除 F ea被4F leap=1 leap=0 eap=1 leap=0 leap F 输出"闰年 输出”非闰年
maine Rint year, leap scanf(se od, &year); if(year% 704==0) Rif (year%100==0 Rif (year 0400==0)leap=1; else leap=0;) else leap=1: else leap=0 if ( leap) printf( %dis"’year); else printf("%d is not"year) printf a leap year n;
main() {int year,leap; scanf(“%d”,&year); if (year%4==0) {if (year%100==0) {if (year%400==0) leap=1; else leap=0;} else leap=1; } else leap=0; if (leap) printf("%d is",year); else printf("%d is not",year); printf("a leap year.\n"); }
maino Rint year, leaps if (year%4 =0) leap=0 else if( year%100!=0 leap=l, else if (year%400=0) leap=0 else leap=1 if (leap printf("%d is",year); else printf("%d is not", year) printf(" a leap year In;
main() {int year,leap; if (year%4!=0) leap=0; else if (year%100!=0) leap=1; else if (year%400!=0) leap=0; else leap=1; if (leap) printf("%d is",year); else printf("%d is not",year); printf("a leap year.\n"); }