




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章选择结构程序设计制作人:张丽涓第五章制作人:张丽涓5.1关系运算符和关系表达式关系运算符用来比较两个数据的大小,运算的结果为成立或不成立。如果成立,则结果为逻辑值“真”,用整数“1”表示;如果不成立,则结果为逻辑值“假”,用整数“0”表示。5.1关系运算符和关系表达式运算符名称对象数运算规则结合性<<=>>===!=小于小于或等于大于大于或等于等于不等于双目满足则为真结果为1不满足为假结果为0自左向右优先级一、关系运算符及其优先级<<=>>===!=优先级相同(高)优先级相同(低)算术运算符优于关系运算符
优于
赋值运算符例:
c>a+b ——c>(a+b)a>b!=c ——(a>b)!=ca==b<c ——a==(b<c)a=b>c ——a=(b>c)如果a=1;b=2;c=3
求各表达式的值?运算符名称对象数运算规则结合性<小于优一、关系运算符及其优先例
若a=0;b=0.5;x=0.3;则a<=x<=b的值为:
例
5>2>7>8在C中是允许的,值为:例
inti=1,j=7,a;a=i+(j%4!=0);
则,a=例
‘a’>0结果为:
‘A’>100结果为:00210注意:避免对实数作相等或不等的判断;注意区分“=”与“==”的不同.例 若a=0;b=0.5;x=0.3;例5>2>二、关系表达式关系表达式是由关系运算符连接2个表达式构成的。它的一般形式为:
表达式关系运算符表达式 其中:表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式。 例如:a=2,c=‘a’,f=3.0 a+2!=c-100 值为: (a>c)>=(f>4) 值为:11二、关系表达式115.2逻辑运算符和逻辑表达式一、逻辑运算符及其优先级逻辑运算符是用来对两个关系式或逻辑量进行逻辑运算的,运算结果为逻辑值“真(1)”或“假(0)”。在C语言中,逻辑量是用数值非0和0来表示逻辑真和假的。
逻辑运算符运算符名称对象数结合性&&||逻辑与逻辑或双目自左向右!逻辑非单目自右向左5.2逻辑运算符和逻辑表达式一、逻辑运算符及其优先级运算符逻辑运算符运算规则:aba&&ba||b!a假(0)假(0)真(1)真(1)假(0)真(1)假(0)真(1)假(0)假(0)假(0)真(1)假(0)真(1)真(1)真(1)真(1)真(1)假(0)假(0)
逻辑运算符的优先级:
!
算术运算符 关系运算符
&& ||逻辑运算符运算规则:aba&&ba||b!a假(0)假(0)二、逻辑表达式逻辑表达式是由逻辑运算符连接表达式构成的。它的一般形式为:
表达式双目逻辑运算符表达式
单目逻辑运算符表达式其中表达式可以是算术表达式、关系表达式、赋值表达式、逗号表达式等。逻辑表达式的运算结果以数值“1”代表真,“0”代表假;在判断一个数值时,其值为“0”即为假,“非0”即为真。二、逻辑表达式例:a=2,c=‘a’,f=3.0,求逻辑表达式的值。
!(c-’a’) f/3&&a-c a<=c||f<=c !(1&&!a) (c>a)&&(f>4) !(1,2) !(c=‘A’) (1,2,3)&&(3,3,3)11110001例:a=2,c=‘a’,f=3.0,求逻辑表达式的值。111
三、逻辑运算的短路特性 逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例
a&&b&&c——只在a为真时,才判别b的值;
只在a、b都为真时,才判别c的值例
a||b||c——只在a为假时,才判别b的值;
只在a、b都为假时,才判别c的值例
a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)
问,m和n的运算结果结果:m=0,n=1三、逻辑运算的短路特性例a&&b&&c——只在a5.3if语句一、if语句的三种形式
形式一:
if(表达式)
语句;
或
if(表达式)语句;其中:表达式一般为关系表达式或逻辑表达式,也可以是其它的表达式。语句可以是单一语句或复合语句。exprstatement=1=0
例:if(x>y)printf(“%d”,x);5.3if语句一、if语句的三种形式exprstatem
形式二:
if(表达式)
语句1;
else
语句2;语句1和语句2可以是单一语句或复合语句。exprstatement1statement2=1=0
例:if(x>y) max=x; elsemax=y;形式二:exprstatement1statement
形式三:
if(表达式1)语句1; elseif(表达式2)语句2; elseif(表达式3)语句3;
…… elseif(表达式m)语句m; else语句n;expr1statemnt1=1=0expr2expr3statemntnstatemnt3statemnt2=1=1=0=0
例:if(score>=90)grade=‘A’;elseif(score
>=80)grade
=‘B’;elseif(score
>=70)grade
=‘C’;elseif(score
>=60)grade
=‘D’;elsegrade
=‘F’;形式三:expr1statemnt1=1=0expr2例: if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a’)printf(“%d”,’a’);说明:①if后面的表达式类型任意
②语句可以是复合语句
③if(x)if(x!=0)if(!x)if(x==0)例: if(a>b)
{t=a;a=b;b=t;}例: if(a==b&&x==y)printf(“[例]从键盘输入两个数,求出绝对值较大者并显示输出。 #include<stdio.h>
#include<math.h> voidmain() {inta,b,max; printf(“Enter2numbers:”); scanf(“%d,%d”,&a,&b); if(abs(a)>abs(b)) max=a; else max=b; printf(“Max(absolute)=%d\n”,max);
}运行结果:
Enter2numbers:-78,23<CR>
Max(absolute)=-78选择结构[例]从键盘输入两个数,求出绝对值较大者并 #inclu[例]判断输入的字符是否是“Q”或“q”,若是,显示Quit。
#include<stdio.h> voidmain() {charc; printf(“Enteracharacter:”); c=getchar(); if(c==‘Q’||c==‘q’)printf(“Quit!\n”);
}运行结果:
Enteracharacter:Q<CR>
Quit![例]判断输入的字符是否是“Q”或“q”,若是,显示Qui 1、将以下条件写成逻辑表达式
①
m1-n1≤j≤m1+n1
②X<-5或X>5
③M和N之一为5,但不能同时为5
④-100<k<100,且K为偶数
2、写程序,输入两个数并判断两数是否相等,输出判断结果。
3、编制一个数制转换程序,要求能进行如下的数制转换:10进制转换为16进制
16进制转换为10进制
10进制转换为8进制
8进制转换为10进制课堂练习 1、将以下条件写成逻辑表达式课堂练习2、
#include<stdio.h> voidmain() {inta,b; printf("Enterintegera:"); scanf("%d",&a); printf("Enterintegerb:"); scanf("%d",&b);
if(a==b) printf("a==b\n"); else printf("a!=b\n"); }运行结果:
Enterintegera:12Enterintegerb:12
a==b运行结果:
Enterintegera:12
Enterintegerb:9
a!=b2、运行结果:运行结果:
3、
#include<stdio.h> voidmain() { intch,a; printf(“\n1.DectoHex\n”);
printf(“2.HextoDec\n”);
printf(“3.DectoOct\n”);
printf(“4.OcttoDec\n”);
printf(“\nEnteryourchoice:”);
scanf(“%d”,&ch);
if(ch=1)
{printf(“\nEnteraninteger(Dec):”);
scanf(“%d”,&a);
printf(“Dec=%dHex=%x\n”,a,a);
}
if(ch=2)
┆3、#include<stdio.h> 【写程序】提示输入3个整数,判断最大者并输出判断结果。课堂练习 【写程序】提示输入3个整数,判断最大者并输出判断结果。课堂二、if语句的嵌套——if中又包含if。if(expr1)
if(expr2)statement1;
elsestatement2;else
if(expr3)statement3;
elsestatement4;内嵌if内嵌ifif(expr1)
if(expr2)statement1;
else
statement2;内嵌ifif(expr1)
if(expr2)statement1;elsestatement2;
内嵌ifif(expr1)statement1;else
if(expr3)statement3;
else
statement4;内嵌if二、if语句的嵌套——if中又包含if。if(expr1)if~else配对原则:else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...
当缺少某个分支else时,正确的配对方法:加{}例:
if(a==b)if(b==c)printf(“a==b==c”);
elseprintf(“a!=b”);修改:
if(a==b)
{if(b==c)printf(“a==b==c”);
}
elseprintf(“a!=b”);if~else配对原则:else总是和它上面离它最近的未配[例]y=
编程序,输入一个x值,输出y值。
voidmain()
{intx,y;
scanf(“%d”,&x);
if(x<0)y=-1;
else
if(x>0)y=1;
elsey=0;
printf(“x=%d,y=%d\n”,x,y);
}-1(x<0)0(x=0)1(x>0)运行结果:
-5
x=-5,y=-1去掉else,分析运行结果运行结果:
-5
x=-5,y=0[例]-1(x<0)运行结果:去掉else,分析运行结课堂练习 1、对学生的成绩进行分级:分数>=80是优良,分数低于60为不及格,其它为及格。{intscore;printf(“Enteranum:\n”);scanf(“%d”,&score);if(score>=80)printf(“Good!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Failed!\n”);}if(score<60)printf(“Failed!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Good!\n”);if(score<60)printf(“Failed!\n”);elseif(score>=80)printf(“Good!\n”);elseprintf(“Passed!\n”);if(score>=60)if(score>=80) printf(“Good!\n”);elseprintf(“Passed!\n”);elseprintf(“Failed!\n”);if(score>=80)if(score>=60) printf(“Passed!\n”);elseprintf(“Good!\n”);elseprintf(“Failed!\n”);课堂练习 1、对学生的成绩进行分级:分数>=80是优良,分数课堂练习 2、编程:输入一个数,判断该数是>0、<0,还是=0,输出判断结果。#include<stdrio.h>voidmain{intx;printf(“Inputyournumber:\n”);scanf(“%d”,&x);if(x>0)printf(“It’sapositive.\n”);elseif(x<0)printf(“It’sanegative.\n”);elseprintf(“It’sazore.\n”);}课堂练习 2、编程:输入一个数,判断该数是>0、<0,还是=三、条件运算符和条件表达式
if(a>b)max=a;if语句
elsemax=b;┊
max=(a>b)?a:b;
条件表达式语句
1.条件运算符及其优先级条件运算符是三目运算符,其三个运算对象都是表达式。运算符名称对象数运算规则结合性
?:
条件
三目对e1?e2:e3
e1为真,获得e2
e1为假,获得e3
自右向左三、条件运算符和条件表达式运算符名称对象数运算规则结合性
?
条件运算符的优先级如下:其它运算符优于
条件运算符
优于赋值运算符优于逗号运算符 例:设a,b,c均为2,则
(a==b)?c=1:0 d=a+1==3?b=a+2:a+32.条件表达式条件表达式是由条件运算符连接表达式构成的。其一般形式为:
表达式1?表达式2:表达式3条件运算符的优先级如下:例:设a=2,c=‘a’,f=3.0,求下列条件表达式的值。
x=a>0?a:-ax=f>=2.0?a<=c:a>=cx=!(a!=0)?!a:!!ax=(f>0)?((a>0)?2:1):((a>0)?1:0)
x=(a>=0)?(a=1):(a=0)
x=(c==‘A’)?(0,1):(1,0)211210例:设a=2,c=‘a’,f=3.0,求下列条件表达式的值。5.4switch语句switch是C语言提供的一个多分支选择语句。
switch语句比通过嵌套实现多分支选择的if语句更直观。
switch的一般格式如下:
switch(表达式){caseE1:
语句组1;break;caseE2:
语句组2;break;
…….caseEn:
语句组n;break;[default:
语句组;break;]}
5.4switch语句switch是C语言提供的一
switch语句的控制流程是:首先计算表达式的值,然后依次与每一个case中的常量值进行比较,当发现与某个值匹配,就执行该case后面的语句,直到break为止。若表达式的值与所有case中的常量值都不匹配,则执行default后面的语句。switch表达式语句组1语句组2语句组n语句组…...E1E2Endefaultcaseswitch语句的控制流程是:首先计算表达式的值,然说明:①E1,E2,…En是常量表达式,且值必须互不相同②case语句起标号作用,必须用break跳出③case后可包含多个可执行语句,且不必加{}④switch可嵌套⑤多个case可共用一组执行语句例:switch(ch)
case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;
……..说明:例:switch(ch)例:
switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}score为5时,输出:
Verygood!Good!Pass!Fail!dataerror!例:switch(score)score为5时,输出:例:voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){ case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}运行结果:a=2,b=1例:voidmain()运行结果:a=2,b=1#include<stdio.h>main(){intc;printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}}例:根据输入字母输出字符串#include<stdio.h>例:根据输入字母输出字符[例]用switch语句实现菜单选择数据转换功能。#include<stdio.h>
main()
{intch,a;
printf(“\n1.DectoHex\n”);
printf(“2.HextoDec\n”);
printf(“3.DectoOct\n”);
printf(“4.OcttoDec\n”);
printf(“\nEnteryourchoice:”);
scanf(“%d”,&ch);
switch(ch)
{case1:printf(“\nEnteraninteger(Dec):”);
scanf(“%d”,&a);
printf(“Dec=%dHex=%x\n”,a,a);
break;
case2:┆[例]用switch语句实现菜单选择数据转换功能。[例]输入一个字符,判断其是否是A(Abort)或R(Retry)或F(Fail),并输出相应信息。
#include<stdio.h>voidmain(){charc;printf(“Abort,Retry,Fail?”);c=getchar();switch(c){case‘a’:case‘A’:printf(“Abort!\n”);
break;case‘r’:
case‘R’:printf(“Retry!\n”);
break;case‘f’:
case‘F’:printf(“Fail!\n”);
break;default:
printf(“Erroneouscharacter!\n”);
}
}
运行结果: Abort,Retry,Fail?r<CR>
Retry!
运行结果: Abort,Retry,Fail?e<CR>
Erroneouscharacter![例]输入一个字符,判断其是否是A(Abort)或R(Ret5.5程序举例[例]写程序,判某一年是否是闰年。year%4?year%100?year%400?leap=1?leap=0leap=1leap=1leap=0noleapyearleapyearNN=0NYYYY5.5程序举例[例]写程序,判某一年是否是闰年。year%[例]
写一个计算器程序,用户输入运算数和四则运算符,输出计算结果.
当输入的不是四则运算符或除数为0时,提示出错信息.
[例]#include<stdio.h>
voidmain()
{floata,b;charc;
printf(“Inputexpression:a+(-,*,/)b\n”);
scanf(“%f%c%f”,&a,&c,&b);
switch(c)
{case‘+’:printf(“=%f\n”,a+b);break;
case‘-’:printf(“=%f\n”,a-b);break;case‘*’:printf(“=%f\n”,a*b);break;#include<stdio.h>
voidmain()case‘/’:if(b==0)printf(“datadividedbyzero\n”);elseprintf(“=%f\n”,a/b); break;default:printf(“inputerror\n”);}}case‘/’:
编写程序,用户分别输入年、月,输出该月的天数。
课堂练习 编写程序,用户分别输入年、月,输出该月的天数。
课堂练习#include<stdio.h>
main()
{intyear,month,day;printf(“inputyear”);
scanf(“%d”,&year);
printf(“inputmonth”);scanf(“%d”,&month);
switch(month)
{case1:
case3:case5:#include<stdio.h>
main()
{incase7:
case8:case10:case12:day=31;break;case4:
case6:case9:case11:day=30;break;
case2: if((year%4==0&&year%100!=0) ||(year%400==0))day=29; elseday=28;}printf(“%dyear%dmonth=%day\n”, year,month,day);}case7:
case8:第五章选择结构程序设计制作人:张丽涓第五章制作人:张丽涓5.1关系运算符和关系表达式关系运算符用来比较两个数据的大小,运算的结果为成立或不成立。如果成立,则结果为逻辑值“真”,用整数“1”表示;如果不成立,则结果为逻辑值“假”,用整数“0”表示。5.1关系运算符和关系表达式运算符名称对象数运算规则结合性<<=>>===!=小于小于或等于大于大于或等于等于不等于双目满足则为真结果为1不满足为假结果为0自左向右优先级一、关系运算符及其优先级<<=>>===!=优先级相同(高)优先级相同(低)算术运算符优于关系运算符
优于
赋值运算符例:
c>a+b ——c>(a+b)a>b!=c ——(a>b)!=ca==b<c ——a==(b<c)a=b>c ——a=(b>c)如果a=1;b=2;c=3
求各表达式的值?运算符名称对象数运算规则结合性<小于优一、关系运算符及其优先例
若a=0;b=0.5;x=0.3;则a<=x<=b的值为:
例
5>2>7>8在C中是允许的,值为:例
inti=1,j=7,a;a=i+(j%4!=0);
则,a=例
‘a’>0结果为:
‘A’>100结果为:00210注意:避免对实数作相等或不等的判断;注意区分“=”与“==”的不同.例 若a=0;b=0.5;x=0.3;例5>2>二、关系表达式关系表达式是由关系运算符连接2个表达式构成的。它的一般形式为:
表达式关系运算符表达式 其中:表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式。 例如:a=2,c=‘a’,f=3.0 a+2!=c-100 值为: (a>c)>=(f>4) 值为:11二、关系表达式115.2逻辑运算符和逻辑表达式一、逻辑运算符及其优先级逻辑运算符是用来对两个关系式或逻辑量进行逻辑运算的,运算结果为逻辑值“真(1)”或“假(0)”。在C语言中,逻辑量是用数值非0和0来表示逻辑真和假的。
逻辑运算符运算符名称对象数结合性&&||逻辑与逻辑或双目自左向右!逻辑非单目自右向左5.2逻辑运算符和逻辑表达式一、逻辑运算符及其优先级运算符逻辑运算符运算规则:aba&&ba||b!a假(0)假(0)真(1)真(1)假(0)真(1)假(0)真(1)假(0)假(0)假(0)真(1)假(0)真(1)真(1)真(1)真(1)真(1)假(0)假(0)
逻辑运算符的优先级:
!
算术运算符 关系运算符
&& ||逻辑运算符运算规则:aba&&ba||b!a假(0)假(0)二、逻辑表达式逻辑表达式是由逻辑运算符连接表达式构成的。它的一般形式为:
表达式双目逻辑运算符表达式
单目逻辑运算符表达式其中表达式可以是算术表达式、关系表达式、赋值表达式、逗号表达式等。逻辑表达式的运算结果以数值“1”代表真,“0”代表假;在判断一个数值时,其值为“0”即为假,“非0”即为真。二、逻辑表达式例:a=2,c=‘a’,f=3.0,求逻辑表达式的值。
!(c-’a’) f/3&&a-c a<=c||f<=c !(1&&!a) (c>a)&&(f>4) !(1,2) !(c=‘A’) (1,2,3)&&(3,3,3)11110001例:a=2,c=‘a’,f=3.0,求逻辑表达式的值。111
三、逻辑运算的短路特性 逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例
a&&b&&c——只在a为真时,才判别b的值;
只在a、b都为真时,才判别c的值例
a||b||c——只在a为假时,才判别b的值;
只在a、b都为假时,才判别c的值例
a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)
问,m和n的运算结果结果:m=0,n=1三、逻辑运算的短路特性例a&&b&&c——只在a5.3if语句一、if语句的三种形式
形式一:
if(表达式)
语句;
或
if(表达式)语句;其中:表达式一般为关系表达式或逻辑表达式,也可以是其它的表达式。语句可以是单一语句或复合语句。exprstatement=1=0
例:if(x>y)printf(“%d”,x);5.3if语句一、if语句的三种形式exprstatem
形式二:
if(表达式)
语句1;
else
语句2;语句1和语句2可以是单一语句或复合语句。exprstatement1statement2=1=0
例:if(x>y) max=x; elsemax=y;形式二:exprstatement1statement
形式三:
if(表达式1)语句1; elseif(表达式2)语句2; elseif(表达式3)语句3;
…… elseif(表达式m)语句m; else语句n;expr1statemnt1=1=0expr2expr3statemntnstatemnt3statemnt2=1=1=0=0
例:if(score>=90)grade=‘A’;elseif(score
>=80)grade
=‘B’;elseif(score
>=70)grade
=‘C’;elseif(score
>=60)grade
=‘D’;elsegrade
=‘F’;形式三:expr1statemnt1=1=0expr2例: if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a’)printf(“%d”,’a’);说明:①if后面的表达式类型任意
②语句可以是复合语句
③if(x)if(x!=0)if(!x)if(x==0)例: if(a>b)
{t=a;a=b;b=t;}例: if(a==b&&x==y)printf(“[例]从键盘输入两个数,求出绝对值较大者并显示输出。 #include<stdio.h>
#include<math.h> voidmain() {inta,b,max; printf(“Enter2numbers:”); scanf(“%d,%d”,&a,&b); if(abs(a)>abs(b)) max=a; else max=b; printf(“Max(absolute)=%d\n”,max);
}运行结果:
Enter2numbers:-78,23<CR>
Max(absolute)=-78选择结构[例]从键盘输入两个数,求出绝对值较大者并 #inclu[例]判断输入的字符是否是“Q”或“q”,若是,显示Quit。
#include<stdio.h> voidmain() {charc; printf(“Enteracharacter:”); c=getchar(); if(c==‘Q’||c==‘q’)printf(“Quit!\n”);
}运行结果:
Enteracharacter:Q<CR>
Quit![例]判断输入的字符是否是“Q”或“q”,若是,显示Qui 1、将以下条件写成逻辑表达式
①
m1-n1≤j≤m1+n1
②X<-5或X>5
③M和N之一为5,但不能同时为5
④-100<k<100,且K为偶数
2、写程序,输入两个数并判断两数是否相等,输出判断结果。
3、编制一个数制转换程序,要求能进行如下的数制转换:10进制转换为16进制
16进制转换为10进制
10进制转换为8进制
8进制转换为10进制课堂练习 1、将以下条件写成逻辑表达式课堂练习2、
#include<stdio.h> voidmain() {inta,b; printf("Enterintegera:"); scanf("%d",&a); printf("Enterintegerb:"); scanf("%d",&b);
if(a==b) printf("a==b\n"); else printf("a!=b\n"); }运行结果:
Enterintegera:12Enterintegerb:12
a==b运行结果:
Enterintegera:12
Enterintegerb:9
a!=b2、运行结果:运行结果:
3、
#include<stdio.h> voidmain() { intch,a; printf(“\n1.DectoHex\n”);
printf(“2.HextoDec\n”);
printf(“3.DectoOct\n”);
printf(“4.OcttoDec\n”);
printf(“\nEnteryourchoice:”);
scanf(“%d”,&ch);
if(ch=1)
{printf(“\nEnteraninteger(Dec):”);
scanf(“%d”,&a);
printf(“Dec=%dHex=%x\n”,a,a);
}
if(ch=2)
┆3、#include<stdio.h> 【写程序】提示输入3个整数,判断最大者并输出判断结果。课堂练习 【写程序】提示输入3个整数,判断最大者并输出判断结果。课堂二、if语句的嵌套——if中又包含if。if(expr1)
if(expr2)statement1;
elsestatement2;else
if(expr3)statement3;
elsestatement4;内嵌if内嵌ifif(expr1)
if(expr2)statement1;
else
statement2;内嵌ifif(expr1)
if(expr2)statement1;elsestatement2;
内嵌ifif(expr1)statement1;else
if(expr3)statement3;
else
statement4;内嵌if二、if语句的嵌套——if中又包含if。if(expr1)if~else配对原则:else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...
当缺少某个分支else时,正确的配对方法:加{}例:
if(a==b)if(b==c)printf(“a==b==c”);
elseprintf(“a!=b”);修改:
if(a==b)
{if(b==c)printf(“a==b==c”);
}
elseprintf(“a!=b”);if~else配对原则:else总是和它上面离它最近的未配[例]y=
编程序,输入一个x值,输出y值。
voidmain()
{intx,y;
scanf(“%d”,&x);
if(x<0)y=-1;
else
if(x>0)y=1;
elsey=0;
printf(“x=%d,y=%d\n”,x,y);
}-1(x<0)0(x=0)1(x>0)运行结果:
-5
x=-5,y=-1去掉else,分析运行结果运行结果:
-5
x=-5,y=0[例]-1(x<0)运行结果:去掉else,分析运行结课堂练习 1、对学生的成绩进行分级:分数>=80是优良,分数低于60为不及格,其它为及格。{intscore;printf(“Enteranum:\n”);scanf(“%d”,&score);if(score>=80)printf(“Good!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Failed!\n”);}if(score<60)printf(“Failed!\n”);elseif(score>=60)printf(“Passed!\n”);elseprintf(“Good!\n”);if(score<60)printf(“Failed!\n”);elseif(score>=80)printf(“Good!\n”);elseprintf(“Passed!\n”);if(score>=60)if(score>=80) printf(“Good!\n”);elseprintf(“Passed!\n”);elseprintf(“Failed!\n”);if(score>=80)if(score>=60) printf(“Passed!\n”);elseprintf(“Good!\n”);elseprintf(“Failed!\n”);课堂练习 1、对学生的成绩进行分级:分数>=80是优良,分数课堂练习 2、编程:输入一个数,判断该数是>0、<0,还是=0,输出判断结果。#include<stdrio.h>voidmain{intx;printf(“Inputyournumber:\n”);scanf(“%d”,&x);if(x>0)printf(“It’sapositive.\n”);elseif(x<0)printf(“It’sanegative.\n”);elseprintf(“It’sazore.\n”);}课堂练习 2、编程:输入一个数,判断该数是>0、<0,还是=三、条件运算符和条件表达式
if(a>b)max=a;if语句
elsemax=b;┊
max=(a>b)?a:b;
条件表达式语句
1.条件运算符及其优先级条件运算符是三目运算符,其三个运算对象都是表达式。运算符名称对象数运算规则结合性
?:
条件
三目对e1?e2:e3
e1为真,获得e2
e1为假,获得e3
自右向左三、条件运算符和条件表达式运算符名称对象数运算规则结合性
?
条件运算符的优先级如下:其它运算符优于
条件运算符
优于赋值运算符优于逗号运算符 例:设a,b,c均为2,则
(a==b)?c=1:0 d=a+1==3?b=a+2:a+32.条件表达式条件表达式是由条件运算符连接表达式构成的。其一般形式为:
表达式1?表达式2:表达式3条件运算符的优先级如下:例:设a=2,c=‘a’,f=3.0,求下列条件表达式的值。
x=a>0?a:-ax=f>=2.0?a<=c:a>=cx=!(a!=0)?!a:!!ax=(f>0)?((a>0)?2:1):((a>0)?1:0)
x=(a>=0)?(a=1):(a=0)
x=(c==‘A’)?(0,1):(1,0)211210例:设a=2,c=‘a’,f=3.0,求下列条件表达式的值。5.4switch语句switch是C语言提供的一个多分支选择语句。
switch语句比通过嵌套实现多分支选择的if语句更直观。
switch的一般格式如下:
switch(表达式){caseE1:
语句组1;break;caseE2:
语句组2;break;
…….caseEn:
语句组n;break;[default:
语句组;break;]}
5.4switch语句switch是C语言提供的一
switch语句的控制流程是:首先计算表达式的值,然后依次与每一个case中的常量值进行比较,当发现与某个值匹配,就执行该case后面的语句,直到break为止。若表达式的值与所有case中的常量值都不匹配,则执行default后面的语句。switch表达式语句组1语句组2语句组n语句组…...E1E2Endefaultcaseswitch语句的控制流程是:首先计算表达式的值,然说明:①E1,E2,…En是常量表达式,且值必须互不相同②case语句起标号作用,必须用break跳出③case后可包含多个可执行语句,且不必加{}④switch可嵌套⑤多个case可共用一组执行语句例:switch(ch)
case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;
……..说明:例:switch(ch)例:
switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}score为5时,输出:
Verygood!Good!Pass!Fail!dataerror!例:switch(score)score为5时,输出:例:voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){ case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}运行结果:a=2,b=1例:voidmain()运行结果:a=2,b=1#include<stdio.h>main(){intc;printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三历史试题及答案全部人教版
- 2025年城市污水处理厂智能化升级改造方案与技术趋势分析报告
- 高中抑郁症测试题及答案
- 2025年咖啡连锁品牌扩张战略:咖啡连锁品牌与咖啡行业生态品牌合作策略报告
- 发热多选择题试题及答案
- 医药电商行业2025年运营模式创新与合规管理政策影响分析
- 新能源二手车市场2025年评估体系与流通模式创新案例研究报告
- 江门麻醉面试题及答案
- 弱电改造服务合同协议书
- 民政护理单招试题及答案
- 货物实时监控系统行业跨境出海项目商业计划书
- 2024年吐鲁番市高昌区招聘社区工作者笔试真题
- 糖尿病中医健康教育讲座
- 地《巴西》第一课时教学设计-2024-2025学年七年级地理下册(人教版2024)
- 27万吨年丙烯腈项目初步设计说明书
- 装配式建筑概论课件:BIM技术在装配式建筑中的应用
- 2023-2024学年上海市宝山区八年级(下)期末数学试卷 (含答案)
- 2025年高考作文预测范文10篇
- 四川省九师联盟2025届高三仿真模拟卷物理试卷及答案(HG)
- 乙状结肠癌试题及答案
- 禁毒工作面试题及答案
评论
0/150
提交评论