c&&x+yc)&&((x+y)
16、,称为逻,辑,辑表达,式,式。逻,辑,辑表达,式,式的值,是,是一个,逻,逻辑值,,,,即“,true”,或“,flase”,。,C,语言中,,,,以数,字,字,1,表示“,真,真”,,以,以数字,0,表示“,假,假”,,但,但在判,断,断一个,量,量是否,为,为“真,”,”时,,以,以非,0,表示“,真,真”,,以,以,0,表示“,假,假”。,可以将,逻,逻辑表,达,达式的,运,运算结,果,果(,0,或,1,)赋给,整,整型变,量,量或字,符,符型变,量,量。,,,任务一,一,一,元,元二次,方,方程计,算,算器,相关知,识,识,四、,if,语句,if,语句可,以,以构成,选,选择结,构,构
17、。它,根,根据给,定,定的条,件,件进行,判,判断,,以,以决定,执,执行某,个,个选择,程,程序段,。,。,C,语言中,if,语句有,三,三种形,式,式。,1,.,if-else,形式,if-else,形式是,if,语句的,基,基本形,式,式,其,他,他两种,形,形式的,if,语句都,可,可以看,作,作是它,的,的变形,。,。,if-else,形式为,:,:,if(,表达式,),语句,1,;,else,语句,2,;,其语义,是,是:如,果,果表达,式,式的值,为,为真,,则,则执行,语,语句,1,,否则,执,执行语,句,句,2,,流程,图,图表示,如,如图所,示,示。,,,任务一,一,一,元
18、,元二次,方,方程计,算,算器,相关知,识,识,例,4.1,比较两,个,个数的,大,大小,,输,输出大,数,数。,main(),{,inta,b;,printf("input twonumbers:");,scanf("%d%d",,if(a>b),printf("max=%d\n",a);,else,printf("max=%d\n",b);,},程序运,行,行要求,输,输入两,个,个整数,,,,输出,其,其中的,大,大数。,,,任务一,一,一,元,元二次,方,方程计,算,算器,相关知识,2,.,if,形式,if,形式为:,if(,表达式,),语句,其语义是,:,:如果表,达,达式的值,为,
19、为真,则,执,执行其后,的,的语句,,否,否则不,执,执行该语,句,句。流程,图,图表示如,图,图。,,,任务一,一,一元二,次,次方程计,算,算器,相关知识,if,语句可看,作,作是,if-else,结构中语,句,句,2,为空的特,殊,殊情况。,即,即:,if(,表达式,),语句,1,;,else,;,例,4.2,比较两个,数,数的大小,,,,输出大,数,数。,main(){,inta,b,max;,printf("\n inputtwonumbers:");,scanf("%d%d",,max=a;,if (max
20、,,要,要求输入,两,两个数,a,、,b,。把,a,先赋予变,量,量,max,,再用,if,语句判别,max,和,b,的大小,,如,如,max,小于,b,,则把,b,赋予,max,。因此,max,中总是大,数,数,最后,输,输出,max,的值。,,,任务一,一,一元二,次,次方程计,算,算器,相关知识,3,.,if-else-if,形式,前二种形,式,式的,if,语句一般,适,适用于两,个,个分支的,情,情况。,当,当有多个,分,分支选择,时,时,可采,用,用,if-else-if,语句,其,一,一般形式,为,为:,if(,表达式,1),语句,1,;,elseif(,表达式,2),语句,2,;
21、,elseif(,表达式,3),语句,3,;,…,elseif(,表达式,m),语句,m,;,else,语句,n,;,其语义是,:,:依次判,断,断表达式,的,的值,当,出,出现某个,值,值为真时,,,,则执行,其,其对应的,语,语句。然,后,后跳到整,个,个,if,语句之外,继,继续执行,程,程序。,如,如果所有,的,的表达式,均,均为假,,则,则执行语,句,句,n,。然后继,续,续执行后,续,续程序。,if-else-if,流程图表,示,示如图。,,,任务一,一,一元二,次,次方程计,算,算器,相关知识,if-else-if,结构用用,if-else,表示如下,:,:,if(,表达式样,1
22、),语句,1,;,else,{,if (,表达式,2),语句,2;,else,{,if(,表达式,m),语句,m;,else,{,语句,n;,},},},,,任务一,一,一元二,次,次方程计,算,算器,相关知识,例,4.3,判断字符,类,类别,#include"stdio.h",main(),{,charc;,printf("input acharacter:");,c=getchar();,if(c<32),printf("Thisisa control character\n");,elseif(c>='0'&&c<='9'),printf("Thisisa digit\n");,else
23、if(c>='A'&&c<='Z'),printf("Thisisa capital letter\n");,elseif(c>='a'&&c<='z'),printf("Thisisa smallletter\n");,else,printf("Thisisan othercharacter\n");,},程序用于,判,判别键盘,输,输入字符,的,的类别。,判,判别字符,类,类别可以,根,根据输入,字,字符的,ASCII,码来判断,。,。由,ASCII,码表可知,ASCII,值小于,32,的为控制,字,字符;,在,在“,0”,和“,9”,之间的为,数,数字;在,“,“,A”,和“,Z”,之间
24、为大,写,写字母;,在,在“,a”,和“,z”,之间为小,写,写字母;,其,其余则为,其,其它字符,。,。 这是,一,一个多分,支,支选择的,问,问题,适,合,合用,if-else-if,语句编程,,,,通过判,断,断输入字,符,符,ASCII,码所在的,范,范围,分,别,别给出不,同,同的输出,。,。例如输,入,入为“,g”,,输出显,示,示它为小,写,写字符。,,,任务一,一,一元二,次,次方程计,算,算器,相关知识,4,.,if,语句使用,三种形式,的,的,if,语句中,,在,在,if,关键字之,后,后均为表,达,达式。,该,该表达式,通,通常是逻,辑,辑表达式,或,或者关系,表,表达式
25、,,但,但也可以,是,是其它表,达,达式,如,赋,赋值表达,式,式等,甚,至,至也可以,是,是一个变,量,量。,例如:,if(a=5),语句;,if(b),语句;,都是允许,的,的。这里,如,如果表达,式,式的值为,非,非,0,,则机器,会,会认为它,是,是逻辑值,为,为“真”,,,,如果表,达,达式的值,为,为,0,,则逻辑,值,值为“假,”,”。,,,任务一,一,一元二,次,次方程计,算,算器,相关知识,注意,程,序,序段:,if(a=b),printf("%d",a);,else,printf("a=0");,该程序段,并,并不是表,示,示当,a=b,时输出,a,,否则输出,“,“,a=
26、0”,,这样理解,是,是错误的,,,,,C,语言中表,示,示是否相,等,等是“,==”,。,本程序段,的,的正确理,解,解是,把,b,值赋予,a,,如为非,0,则输出该,值,值,否则,输,输出“,a=0”,字符串。,在,if,语句中,,条,条件判断,表,表达式必,须,须用括号,括,括起来,,在,在语句之,后,后必须加,分,分号。,在,if,语句的三,种,种形式中,,,,所有的,语,语句应为,单,单个语句,,,,如果要,想,想在满足,条,条件时执,行,行一组,(,多个,),语句,则,必,必须把这,一,一组语句,用,用“,{}”,括起来组,成,成一个复,合,合语句。,在,在,},之后不需,要,要再
27、加分,号,号。,例如:,if(a>b),{,c=a-b;,printf(“c:%f\n”,c);,},else,{,c=b-a;,printf(“c:%f\n”,c);,},,,任务二,任,任意三,个,个数排序,任务描述,三个数排,序,序是选择,结,结构经典,例,例程,要,求,求输入三,个,个数,按,大,大小输出,这,这三个数,。,。,任务分析,解决本问,题,题方法较,多,多,作为,初,初学者我,们,们先用比,较,较法来解,决,决此问题,。,。比较法,的,的基本思,路,路用数学,符,符号语句,表,表达如下,:,:,设三个数,分,分别为,a,b,c,,存放从,大,大到小顺,序,序三个数,变,变量
28、为,B,M,S,;,如果,a>=b,是 判,断,断,b>=c,是,B=a,M=b,S=c,否 判断,a>=c,是,B=a,M=c,S=b,否,B=c,M=a,S=b,否 判,断,断,b>=c,是 判断,a>=c,是,B=b,M=a,S=c,否,B=b,M=c,S=a,否,B=c,M=b,S=a,,,任务二,任,任意三,个,个数排序,用流程图,表,表示如图,4-7,所示,,,任务二,任,任意三,个,个数排序,任务实施,1.,程序源代,码,码,/*P4_Task2.c*/,#include,intmain(intargc, char*argv[]),{,float a,b,c,B,M,S;,p
29、rintf("Enter threenumber a,b,c\n");,scanf("%f,%f,%f",,,,,任务二,任,任意三,个,个数排序,任务实施,if (a>=b),{,if (b>=c),{,B=a;,M=b;,S=c;,},else,{,if(a>=c),{,B=a;,M=c;,S=b;,},else,{,B=c;,M=a;,S=b;,},},},,,,任务二,任,任意三,个,个数排序,任务实施,else,{,if(b>=c),{,if(b>=c),{,B=b;,M=a;,S=c;,},else,{,B=b;,M=c;,S=a;,},},else,{,B=c;,M=b;,S=a
30、;,},},,,,任务,二,二,任,任,意,意三,个,个数,排,排序,任务,实,实施,printf("ResultofSort:%.2f>%.2f>%.2f\n",B,M,S);,getch();,return0;,},,,任务,二,二,任,任,意,意三,个,个数,排,排序,任务,实,实施,2.,程序,运,运行,结,结果,三个,数,数排,序,序程,序,序运,行,行结,果,果如,图,图所,示,示。,,,任务,三,三,学,学,生,生成,绩,绩评,级,级,任务,描,描述,素质,教,教育,要,要求,对,对学,生,生学,习,习评,价,价采,用,用分,级,级评,定,定,,一,一般,考,考试,成,成绩,为,
31、为具,体,体分,数,数,,按,按分,数,数进,行,行分,级,级的,方,方法,如,如下,:,:,>=90,:,A,;,>=75,:,B,;,>=60,:,C,;,<60,:,D,。要,求,求输,入,入一,个,个学,生,生成,绩,绩,,输,输出,对,对应,的,的级,次,次。,,,任务,三,三,学,学,生,生成,绩,绩评,级,级,任务,分,分析,流程,图,图如,图,图所,示,示。,,,任务,三,三,学,学,生,生成,绩,绩评,级,级,任务,实,实施,1.,程序,源,源代,码,码,/*P4_Task3.c*/,#include,intmain(intargc,char*argv[]),{,floatg
32、;,charlevel;,printf("Enterscore:\n");,scanf("%f",,if(g>=90),level='A';,elseif(g>=75),level='B';,elseif(g>=60),level='C';,else,level='D';,printf("TheLevel:%c\n",level);,getch();,return0;,},,,任务,三,三,学,学,生,生成,绩,绩评,级,级,任务,实,实施,2.,程序,运,运行,结,结果,学生,成,成绩,评,评级,运,运行,结,结果,如,如图,所,所示,。,。,,,任务,三,三,学,学,生,生成,绩,绩评,级
33、,级,相关,知,知识,一、,if,语句,的,的嵌,套,套,if,语句,中,中的,执,执行,语,语句,为,为,if,语句,,,,就,构,构成,了,了,if,语句,嵌,嵌套,。,。如,图,图所,示,示。,,,任务,三,三,学,学,生,生成,绩,绩评,级,级,相关,知,知识,在嵌,套,套内,的,的,if,语句,可,可能,又,又是,if-else,型的,,,,这,将,将会,出,出现,多,多个,if,和多,个,个,else,重叠,的,的况,,,,这,时,时要,特,特别,注,注意,if,和,else,的配,对,对问,题,题。,如:,if(,表达,式,式,1),if(,表达,式,式,2),语句,1,;,el
34、se,语句,2,;,C语,言,言规,定,定,,else,总是,与,与它,前,前面,最,最近,的,的,if,配对,,,,因,此,此对,上,上述,例,例子,应,应按,前,前一,种,种情,况,况理,解,解。,应,应该,理,理解,为,为:,if(,表达,式,式,1),{,if(,表达,式,式,2),语句,1,;,else,语句,2,;,},,,任务,三,三,学,学,生,生成,绩,绩评,级,级,相关,知,知识,例,4.4,输出,两,两个,数,数的,大,大小,关,关系,main(){,inta,b;,printf("pleaseinputA,B:");,scanf("%d%d",,if(a!=b),if(
35、a>b)printf("A>B\n");,elseprintf("AB,、,A
36、e-if,形式,输,输出,两,两个,数,数的,大,大小,关,关系,main(){,inta,b;,printf("pleaseinputA,B:");,scanf("%d%d",,if(a==b)printf("A=B\n");,elseif(a>b)printf("A>B\n");,elseprintf("A
37、,条,条件,表,表达,式,式的,一,一般,形,形式,为,为:,表达,式,式,1?,表达,式,式,2,:表,达,达式,3,其语,义,义是,:,:如,果,果表,达,达式,1,的值,为,为真,,,,则,以,以表,达,达式,2,的值,作,作为,条,条件,表,表达,式,式的,值,值,,否,否则,以,以表,达,达式,3,的值,作,作为,整,整个,条,条件,表,表达,式,式的,值,值。,条件,表,表达,式,式通,常,常用,于,于赋,值,值语,句,句之,中,中。,例,如,如,条,条,件,件,语,语,句,句,:,:,if(a>b)max=a;,elsemax=b;,用,条,条,件,件,表,表,达,达,式,式,写
38、,写,为,为,max=(a>b)?a:b;,执,行,行,该,该,语,语,句,句,的,的,语,语,义,义,是,是,:,:,如,如,a>b,为,真,真,,,,,则,则,把,把,a,赋,予,予,max,,,否,否,则,则,把,把,b,赋,予,予,max,。,使,用,用,条,条,件,件,表,表,达,达,式,式,时,时,,,,,还,还,应,应,注,注,意,意,以,以,下,下,几,几,点,点,:,:,,,任,务,务,三,三,学,学,生,生,成,成,绩,绩,评,评,级,级,相,关,关,知,知,识,识,①,条,条,件,件,运,运,算,算,符,符,的,的,运,运,算,算,优,优,先,先,级,级,低,低,于,于,
39、关,关,系,系,运,运,算,算,符,符,和,和,算,算,术,术,运,运,算,算,符,符,,,,,但,但,高,高,于,于,赋,赋,值,值,符,符,。,。,因,此,此,max=(a>b)?a:b,可,以,以,去,去,掉,掉,括,括,号,号,而,而,写,写,为,为,max=a>b?a:b,②,条,件,件,运,运,算,算,符,符,?,和,:,:,是,是,一,一,对,对,运,运,算,算,符,符,,,,,不,不,能,能,分,分,开,开,单,单,独,独,使,使,用,用,。,。,③,条,条,件,件,运,运,算,算,符,符,的,的,结,结,合,合,方,方,向,向,是,是,自,自,右,右,至,至,左,左,。,。,
40、例,如,如,:,:,a>b?a:c>d?c:d,应,理,理,解,解,为,为,a>b?a:(c>d?c:d),这,也,也,就,就,是,是,条,条,件,件,表,表,达,达,式,式,嵌,嵌,套,套,的,的,情,情,形,形,,,,,即,即,其,其,中,中,的,的,表,表,达,达,式,式,3,又,是,是,一,一,个,个,条,条,件,件,表,表,达,达,式,式,。,。,,,任,务,务,三,三,学,学,生,生,成,成,绩,绩,评,评,级,级,相,关,关,知,知,识,识,例,4.6,使,用,用,条,条,件,件,表,表,达,达,式,式,判,判,别,别,成,成,绩,绩,级,级,别,别,#include,intma
41、in(intargc,char*argv[]),{,floatg;,printf("Enterscore:\n");,scanf("%f",,printf("TheLevel:%c\n",g>=90?'A':(g>=75?'B':(g>=60?'C':'D')));,return0;,},,,任,务,务,三,三,四,四,则,则,运,运,算,算,计,计,算,算,器,器,任,务,务,描,描,述,述,设,计,计,一,一,个,个,四,四,则,则,运,运,算,算,计,计,算,算,器,器,,,,,用,用,户,户,输,输,入,入,一,一,个,个,运,运,算,算,式,式,,,,,计,计,算,算,器,器,运,运
42、,算,算,出,出,结,结,果,果,。,。,任,务,务,分,分,析,析,流,程,程,图,图,如,如,图,图,所,所,示,示,。,。,,,任,务,务,三,三,四,四,则,则,运,运,算,算,计,计,算,算,器,器,任,务,务,实,实,施,施,1.,程,序,序,源,源,代,代,码,码,/*P4_Task3.c*/,main(){,floata,b;,charc;,printf("inputexpression:a+(-,*,/)b\n");,scanf("%f%c%f",,switch(c){,case'+':printf("Result:%f\n",a+b);break;,case'-':prin
43、tf("Result:%f\n",a-b);break;,case'*':printf("Result:%f\n",a*b);break;,case'/':printf("Result:%f\n",a/b);break;,default:printf("inputerror\n");,},getch();,},,,任,务,务,三,三,四,四,则,则,运,运,算,算,计,计,算,算,器,器,任,务,务,实,实,施,施,2.,程,序,序,运,运,行,行,结,结,果,果,三,角,角,形,形,面,面,积,积,计,计,算,算,器,器,运,运,行,行,结,结,果,果,如,如,图,图,所,所,示,示,。,。
44、,,,任,务,务,三,三,四,四,则,则,运,运,算,算,计,计,算,算,器,器,相关知,识,识,一、,switch,语句,C语言,提,提供了,另,另一种,用,用于多,分,分支选,择,择的,switch,语句,,其,其一,般,般形式,为,为:,switch(,表达式,){,case,常量表,达,达式,1:,语句,1;,case,常量表,达,达式,2:,语句,2;,…,case,常量表,达,达式,n:,语句,n;,default:,语句,n+1;,},其语义,是,是:计,算,算表达,式,式的值,。,。 并,逐,逐个与,其,其后的,常,常量表,达,达式值,相,相比较,,,,当表,达,达式的,值,值
45、与某,个,个常量,表,表达式,的,的值相,等,等时,,即,即执行,其,其后的,语,语句,,然,然后不,再,再进行,判,判断,,继,继续执,行,行后面,所,所有,case,后的语,句,句。如,表,表达式,的,的值与,所,所有,case,后的常,量,量表达,式,式均不,相,相同时,,,,则执,行,行,default,后,的语句,。,。,,,任务三,四,四,则,则运算,计,计算器,相关知,识,识,例,4.9switch,语句使,用,用,main(){,inta;,printf("input integernumber:");,scanf("%d",,switch(a){,case 1:printf(
46、"Monday\n");break;,case 2:printf("Tuesday\n");break;,case 3:printf("Wednesday\n");break;,case 4:printf("Thursday\n");break;,case 5:printf("Friday\n");break;,case 6:printf("Saturday\n");break;,case 7:printf("Sunday\n");break;,default:printf("error\n");,},},,,任务三,四,四,则,则运算,计,计算器,相关知,识,识,本程序,是,是要求,输,输入一,个,个,1-7,的数字,,,,输出,与,与之对,应,应的星,期,期英文,单,单词。,注意:,使用,switch,语句时,应,应注意,以,以下几,点,点:,①在,case,后的各常量,表,表达式的值,不,不能相同,,否,否则会出现,错,错误。,②在,case,后,允许有,多,多个语句,,可,可以不用,{},括起来。,③各,case,和,default,子句的先后,顺,顺序可以变,动,动,而不会,影,影响程序执,行,行结果。,④,default,子句可以省,略,略不用。,,,教学检测,1.三个数,排,排序,2.判断是,否,否闰年,,,作业,完成项目,4,练习与习题,。,。,,,谢谢!,,,