4.2 switch4.2 switch语句语句4.1 if4.1 if语句语句 1 1、、6 6种关系运算符:种关系运算符:< <= >= > == != < <= >= > == != 2 2、、关系表达式:关系表达式:用关系运算符将表达式连接起来的式子用关系运算符将表达式连接起来的式子 优先级优先级:: (< <= >= >)(< <= >= >)> >( == != )( == != ) 结合性结合性:自左至右;:自左至右; 表达式的值表达式的值:: 若为真,则结果为若为真,则结果为1 1;; 若若为假,则结果为为假,则结果为0 03>5 3>5 的值为的值为 0 0;;3<4>2 3<4>2 的值为的值为 0 0;;3+(4<3)*43+(4<3)*4的值为的值为 3 3;;3+43+4<3*4 <3*4 的值为的值为 1 1;;算术运算符优先级高于关系运算符算术运算符优先级高于关系运算符一、关系运算符和关系表达式第 2 章 基 本 数 据 类 型 与 表 达 式例题例题 2 2、、逻辑表达式:逻辑表达式:用逻辑运算符将表达式连接起来的式子用逻辑运算符将表达式连接起来的式子 优先级:优先级: ! !> >&&&&> >|||| 结合性:自左至右;结合性:自左至右; 表达式的值:表达式的值: 若为真,则结果为若为真,则结果为1 1;; 若为假,则结果为若为假,则结果为0 0。
三、逻辑运算符和逻辑表达式1 1、、3 3种逻辑运算符:种逻辑运算符:&& || !&& || ! 逻辑值:可以是整型、实型、字符型和指针类型逻辑值:可以是整型、实型、字符型和指针类型. . 如:如:0 0,,0.00.0,,‘‘\0’,NULL\0’,NULL都代表都代表假假 0 0——假假 非非0 0——真真 第 2 章 基 本 数 据 类 型 与 表 达 式 int a=5; float b=3.5; !a (0) !(a < b) (1) a && b (1) !a&&b (0) !a&&!b (0) !(a&&b) (0) 第 2 章 基 本 数 据 类 型 与 表 达 式例如例如 注意注意 &&:只要有一个为假,结果则为假;只要有一个为假,结果则为假; ||:只要有一个为真,结果则为真;只要有一个为真,结果则为真; (a < b) && (a > 0) (0) (a < b) ||(a > 0) (1)第 2 章 基 本 数 据 类 型 与 表 达 式 ! ! 高高 算术运算符算术运算符 关系运算符关系运算符 &&&&和和|| || 赋值运算符赋值运算符 低低 注意注意思考思考5>3&&2||8<4-!55>3&&2||8<4-!5结果结果:1:1注意注意在逻辑表达式的求解中,并不是所有的逻辑运算在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
才能求出表达式的解时,才执行该运算符1)x=3;(1)x=3; y=0&&(x++); y=0&&(x++); 结果结果:x:x为为3,y3,y为为0 02)x=3;(2)x=3; z=5||(x++); z=5||(x++); 结果:结果:x x为为3 3,,z z为为1 13)a = 0; b = 1; (3)a = 0; b = 1; c = a++ && ( b = 3 ); c = a++ && ( b = 3 ); 结果结果: a: a为为1,b1,b为为3,c3,c为为0 0第 2 章 基 本 数 据 类 型 与 表 达 式 (1)n(1)n是是小于小于m m的偶数:的偶数: n= 0 ) y =2 * x; printf(“y= %6.2f”, y ); }表达式表达式语句语句真真假假单分支选择单分支选择例1:例1:例例2:输入两个数输入两个数, 比较大小比较大小,将较大的数输出。
将较大的数输出单分支结构单分支结构#include main( ){ float a, b,max; scanf(“%f, %f”,&a, &b); max=a; if (max
将较大的数输出双分支结构双分支结构#include main( ){ float a, b; scanf(“%f, %f”,&a, &b); if (a>b) printf (“%f”, a ); else printf (“%f”, b ); }第4章 选择程序设计返回返回4.1.34.1.3多分支选择语句多分支选择语句第4章 选择程序设计形式:形式:if (表达式表达式1) 语句 语句1 else if (表达式表达式2) 语句语句2 else if (表达式表达式3)) 语句语句3 …… else if (表达式表达式m)) 语句语句m else 语句语句m+1 表达式表达式1真真语句语句1假假表达式表达式2表达式表达式3语句语句4语句语句3语句语句2真真真真假假假假多分支选择多分支选择例1例1 写一个程序完成下列功能写一个程序完成下列功能:输入一个学生分数输入一个学生分数score如果如果score>=90 输出输出 等级等级A如果如果80==90) printf(“等级等级A\n”);else if ( score >=80) printf(“等级等级B\n”);else if (score >=70) printf(“等级等级C\n”);else if (score >=60) printf(“等级等级D\n”);else printf(“等级等级E\n”); }程序如下:程序如下:score<90score<80score<70score<60#includemain( ){char c;printf(“input a character:\n”);c=getchar( );if(c>=‘0’&&c<=‘9’) printf(“A\n”);else if(c>=‘A’&&c<=‘Z’) printf (“B\n”);else if(c>=‘a’&&c<=‘z’) printf (“C\n”);else if(c==‘’) printf (“D\n”);else if(c==‘\n’) printf (“E\n”);else printf(“F\n”);}例例2 判断键盘输入字符的类别判断键盘输入字符的类别:如果是数字输出如果是数字输出A,如果是大写字母输,如果是大写字母输出出B,如果是小写字母输出,如果是小写字母输出C,如果是空格输出,如果是空格输出D,如果是回车换行格,如果是回车换行格输出输出E,如果是其它字符输出,如果是其它字符输出F..字符字符 ASCII0 489 5710A 6511Z 9012a 9713z 1221、、if语句判断条件的语句判断条件的表达式表达式必须用必须用括号括号括起来括起来,括号括号后不能用分号。
后不能用分号2、、if语句中的表达式语句中的表达式一般一般为为关系或逻辑表达式关系或逻辑表达式,也可,也可以为以为任何数值类型的表达式任何数值类型的表达式或或赋值表达式赋值表达式或或变量变量3、、if语句中所有的语句应为语句中所有的语句应为单个语句单个语句,若想在满足条,若想在满足条件时执行一组语句,必须用件时执行一组语句,必须用大括号大括号括起来 第4章 选择程序设计注意注意输入两个字符输入两个字符ch1和和ch2,如果如果ch1==‘Z’ 且且 ch2==‘B’,则输出 则输出 You are right ! 思思考考程序如下:程序如下:#includemain( ){ char ch1,ch2; ch1=getchar( ); ch2=getchar( ); if ( ch1 == ‘Z’ && ch2==‘B’ ) printf( “You are right ! “ );} } 第4章 选择程序设计程序如下:程序如下:main()main(){ {intint year; year; printf("Pleaseprintf("Please input the year:\n"); input the year:\n"); scanf("%d",&yearscanf("%d",&year); ); if if ( ((year%4==0 && year%100!=0)||(year%400==0)(year%4==0 && year%100!=0)||(year%400==0)) ) printf("%dprintf("%d is a leap year.\ is a leap year.\n",yearn",year); ); else else printf("%dprintf("%d is not a leap year.\ is not a leap year.\n",yearn",year); );} }从键盘上输入年份,判断其是否闰年。
从键盘上输入年份,判断其是否闰年闰年的条件是:能被闰年的条件是:能被4 4整除、但不能被整除、但不能被100100整除,整除,或者能被或者能被400400整除思思考考思思考考y=3-x (x<0)2x (x=0)X (x>0)程序如下:程序如下:main( ){ float x , y; scanf(“%f ”, &x); if ( x <0 ) y =3- x; else if (x==0) y=2*x; else y=x; printf(“y= %6.2f”, y ); }例如:例如:#includemain( ){int x=100,a=30,b=20,ok1=10,ok2=6;printf(“%d\n”,x);}第4章 选择程序设计if(a>b)if(b!=10)if(!ok1) x=1;else if(ok2) x=10;else x=20;C语言规定,语言规定,else总是与它前面最近的未配对的总是与它前面最近的未配对的if配对注意注意4.1.4 if语句的嵌套语句的嵌套 在在if语句中又包含了一个或多个语句中又包含了一个或多个if语句,就形成了语句,就形成了if语句的嵌套结构。
语句的嵌套结构4.2 Switch语句语句switch(表达式表达式){ case 常量表达式常量表达式1: 语句语句1; case 常量表达式常量表达式2: 语句语句2; case 常量表达式常量表达式3: 语句语句3;……case 常量表达式常量表达式n: 语句语句n; default: 语句语句n+1;}多分支语句多分支语句,根据表达式不同的值选择不同的语句根据表达式不同的值选择不同的语句第4章 选择程序设计Switch语句语句的形式:的形式:1、、switch后的表达式可以是后的表达式可以是任何类型任何类型;;2、语句结构中各个、语句结构中各个case后常量表达式的值必须后常量表达式的值必须互不相同互不相同;;3、、case 与后面的常量表达式之间与后面的常量表达式之间必须空格必须空格;;4、当、当switch后的表达式的值与某个常量表达式值相同,执后的表达式的值与某个常量表达式值相同,执行该行该case后的语句,并后的语句,并继续执行其他继续执行其他case后的语句后的语句5、、case 后的语句允许有后的语句允许有多个多个,可以,可以不用大括号不用大括号括起来。
括起来第4章 选择程序设计注意注意 例例1::#includemain( ){int a;scanf(“%d”,&a);switch(a) {case 1:printf(“Monday\n”); case 2:printf(“Tuesday\n”); case 3:printf(“Wednesday\n”); case 4:printf(“Thursday\n”); case 5:printf(“Friday\n”); case 6:printf(“Saturday\n”); case 7:printf(“Sunday\n”); default:printf(“error\n”); }} 输入一个数字,输出一个对输入一个数字,输出一个对 应的英文星期单词应的英文星期单词思思考考第4章 选择程序设计break;break;break;break;break;break;break;1、、break语句语句用于跳出用于跳出switch语句;语句;2、、 switch语句也语句也可以嵌套可以嵌套 3、、switch语句中语句中可用可不用可用可不用break语句。
语句第4章 选择程序设计注意注意 score score/10 score>=90 10, 980==90 输出输出 等级等级A如果如果80=main( ) { int score; scanf(“%d” ,&score); switch (score /10) {case 10: case 9: printf("等级等级A\n");break; case 8: printf("等级等级B\n"); break; case 7: printf("等级等级C\n");break; case 6: printf("等级等级D\n");break; default: printf("等级等级E\n"); } }第4章 选择程序设计返回返回表达式为表达式为数值类型表达式数值类型表达式例如:例如: 1、if(5) printf(“OK!\n”);2、if(6.3) printf(“OK!\n”);3、if(‘a’) printf(“OK!\n”);表达式为表达式为赋值表达式赋值表达式例如:例如:4、if(x=y-5) printf(“x<>0\n”); else printf(“x=0\n”);表达式为表达式为变量变量例如:例如:5、if(x) printf(“OK!\n”);第4章 选择程序设计例如:例如:输入两个数输入两个数a、、b,要求按由小到大的顺序输出。
要求按由小到大的顺序输出 #include main( ){ float a , b , t ;printf("input two number:\n") ;scanf("%f%f" , &a , &b) ;if(a>b) {t=a ; a=b ; b=t;} /* 如果如果a>b,则交换,则交换a和和b */printf("sort:%5.3f , %5.3f" , a , b ) ;}第4章 选择程序设计返回返回例如:#includemain( ){int x=1,y=0,a=1,b=0;switch(x) {case 1: switch(y) {case 0:a++; case 1:b++;break; } case 2: a++;b++;break; }printf(“a=%d,b=%d\n”,a,b);}返回返回第4章 选择程序设计1a=220 b=1 2 a=3 1 b=2 a=3,b=2第5章 循环结构程序设计 go to 语句语句形式:形式: go to 标号标号;功能:无条件转去执行标号后所标识的语句。
功能:无条件转去执行标号后所标识的语句注意注意:标号是标号是标识符标识符,不能是数字不能是数字例例9 计算计算s=1+2+……+100的值includemain( ){int n,s=0;n=1;loop:if(n<=100){s=s+n;n++;goto loop;}printf(“%d”,s);}返回返回。