C语言程序设计No程序设计.pptx
1 1、关系运算:对两个值进行、关系运算:对两个值进行“比较运算比较运算”2、关系运算符:、关系运算符:、=、=、!=高高 低低3、优先级别:、优先级别:算术运算符、关系运算符、赋值运算符算术运算符、关系运算符、赋值运算符 高高 低低 如:如:ca+b c(a+b)ab=c (ab)=c a=bc a=(bc a=(bc)优先级相同优先级相同注意:区分注意:区分=与与=11、关系运算符和关系表达式第1页/共26页24 4、关系表达式:、关系表达式:用关系运算符将两个表达式用关系运算符将两个表达式(算术表达式、算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子。连接起来的式子。如:如:x!=0 x!=0 a a!=!=A A a*a+b*bY*Y a*a+b*ba+b c(a+b)a=bc a=(bc)a=bc a=(bb&bc (ab)&(bc)a!=b&c!=0 (a!=b)&(c!=0)!a|ab (!a)|(ab)53&2|!83&2|(!8)3&2|(!8)3)&2|(!8)3)&2)|(!8)b&bc (ab)&(bc)a!=b&c!=0 (a!=b)&(c!=0)!a|ab (!a)|(ab)53&2|!83&2|(!8)3&2|(!8)3)&2|(!8)3)&2)|(!8)2 x1+a且且yb 的定义域的定义域 写出表达式的值写出表达式的值:(a=2,b=0,c=-2.5)a*b|c !b&c 0|a 1&!a/cAbs(x)2或x2|x-2x=(1+a)&y=2|x=0&x!=01110year%4=0&year%100!=0|year%400=0第5页/共26页6程序设计题目:题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。P1P2S2P1Pn假假SnSn+1真真假假真真假假真真M-MondayT-u-Tuesday -h-ThursdayW-WednesdayF-FridayS-a-Saturday -u-Sunday第6页/共26页7#include void main()char letter;printf(please input the first letter of someday:n);while(letter=getchar()!=E)/*when enter E to exit*/switch(letter)case S:printf(please input second lettern);if(letter=getchar()=a)printf(saturdayn);else if(letter=getchar()=u)printf(sundayn);else printf(data errorn);break;case F:printf(fridayn);break;case M:printf(mondayn);break;case T:printf(please input second lettern);if(letter=getchar()=u)printf(tuesdayn);else if(letter=getchar()=h)printf(thursdayn);else printf(data errorn);break;case W:printf(wednesdayn);break;default:printf(data errorn);/*end switch*/*end while*/*end main*/程序5-001.cpp第7页/共26页833 if if 语句一、一、ifif语句的三种形式语句的三种形式 1 1、条件执行、条件执行 if(e)Aif(e)A if(a0)printf(if(a0)printf(“A is positive.nA is positive.n”););2 2、分支选择、分支选择 if(e)A else if(e)A else B B 当当e e为真时,执行为真时,执行A A;否则执行;否则执行B B或后续语句。或后续语句。if(a0)printf(if(a0)printf(“A is positive.nA is positive.n”););else printf(A is not positive.n else printf(A is not positive.n”););AB或空或空tef条件逻辑表达式条件逻辑表达式语句语句if(xy)z=y;y=x;x=z;说明:说明:A或或B都可以是单一语句,也可以是复合语句。都可以是单一语句,也可以是复合语句。else部分不能独立存在,即部分不能独立存在,即else前一定有一个前一定有一个“;”,它必须是它必须是 if语句的一部分。语句的一部分。第8页/共26页933 if if 语句注意:在注意:在C C语言中,表达式语言中,表达式e e的值为非的值为非0 0时,系统均时,系统均 按按“真真”处理。处理。如:如:if(if(a a)printf()printf(“O.K.O.K.”););x=-5;if(x)printf(x=-5;if(x)printf(“O.K.O.K.”););y=0;if(y=0)printf(y=0;if(y=0)printf(“O.K.O.K.”););if(y)printf(if(y)printf(“O.K.O.K.”););第9页/共26页1033 if if 语句一、一、ifif语句的三种形式语句的三种形式 1 1、条件执行、条件执行 if(e)Aif(e)A 2 2、分支选择、分支选择 if(e)A else Bif(e)A else B 程序举例:程序举例:y=y=1 x=0 1 x=0include void main()float x,y;printf(“input x:”);scanf(“%f”,&x);if(x=0)y=1;else y=(x*5+1)/x;printf(“nx=%4.1fny=%4.1fn”,x,y);input x:2x=2.0y=5.5y1;if(x!=0)y=(x*5+1)/x;第10页/共26页1133 if if 语句一、一、ifif语句的三种形式语句的三种形式 3 3、else if else if 形式形式(阶梯式的阶梯式的if-elseif-else语句语句)if(P1)s1 if(P1)s1 else if (P2)s2 else if (P2)s2 else if(Pn)sn else if(Pn)sn else sn+1 else sn+1系统从上到下的逐个判断条件系统从上到下的逐个判断条件P P,一旦发现某些,一旦发现某些满足时,则执行与它有关的语句满足时,则执行与它有关的语句S Si i,并跳过其他,并跳过其他剩余的阶梯。若所有条件均不满足,执行最后一剩余的阶梯。若所有条件均不满足,执行最后一个个elseelse语句或后续语句。语句或后续语句。.一般一般elseelse与最与最近的近的ifif匹配。匹配。注意注意P1P2S2S1Pn假假SnSn+1真真假假真真假假真真第11页/共26页1233 if if 语句例:评价学生成绩例:评价学生成绩score90 优秀优秀score80 良好良好score70 中中score60 及格及格score 60 不及格不及格P1P2S2P1Pn假假SnSn+1真真假假真真假假真真include void main()int score;printf(“input a score:”);scanf(“%d”,&score);if(score=90)printf(“优秀优秀n”);else if(score=80)printf(“良好良好n”);else if(score=70)printf(“中中n”);else if(score=60)printf(“及格及格n”);else printf(“不及格不及格n”);input a score:86良好良好第12页/共26页1333 if if 语句二、二、ifif语句的嵌套语句的嵌套 if (P1)if(P2)A else B else if(P3)C else DP1P2P3真真真真真真假假假假假假假假ABCD例:计算函数例:计算函数 y=#include main()float x,y;printf(“input x:”);scanf(“%f”,&x);if(x=-3.0&xb?a:b x=0?1:sin(x)/x 3、执行过程:、执行过程:4、运算顺序:高于赋值运算,、运算顺序:高于赋值运算,低于算术、关系、逻辑运算低于算术、关系、逻辑运算 如:如:y=x=0?1:sin(x)/x;等价于:等价于:if(x=0)y=1;else y=sin(x)/x;C C中唯一的一个三目运算符中唯一的一个三目运算符计算计算e1e1e1e1值为非值为非0 0即真,即真,计算并返回计算并返回e2e2的值的值否则计算并返回否则计算并返回e3e3的值。的值。第15页/共26页1633 if if 语句 5 5、条件运算符的结合方向是、条件运算符的结合方向是“右结合右结合”如:如:ab?a:cd?c:dab?a:cd?c:d 等价于:等价于:ab?a:(cd?c:d)ab?a:(cd?c:d)例:写出该程序完成的功能例:写出该程序完成的功能#includemain()int a,b,imax;printf(“input data to a and b:”);scanf(“%d,%d”,&a,&b);imax=ab?a:b;printf(“The max is%dn”,imax);printf(“max=%dn”,imax=ab?a:b);printf(“max=%dn”,ab?a:b);求求a a、b b两个两个数中的大数数中的大数思考:思考:n n个数中找出个数中找出最大数或最小数?最大数或最小数?采用循环实现采用循环实现input data to a and b:12,34The max is 34第16页/共26页17P1P2S2P1Pn假假SnSn+1真真假假真真假假真真4 4 switch语句语句回顾前面的例子回顾前面的例子:评价学生成绩评价学生成绩score90 优秀优秀 score80 良好良好 score70 中中 score60 及格及格 score 60 不及格不及格include void main()int score;printf(“input a score:”);scanf(“%d”,&score);if(score=90)printf(“优秀优秀n”);else if(score=80)printf(“良好良好n”);else if(score=70)printf(“中中n”);else if(score=60)printf(“及格及格n”);else printf(“不及格不及格n”);include void main()int score;printf(“input a score:”);scanf(“%d”,&score);switch(score/10)case 10:case 9:printf(“优秀优秀n”);break;case 8:printf(“良好良好n”);break;case 7:printf(“中中n”);break;case 6:printf(“及格及格n”);break;default:printf(“不及格不及格n”);第17页/共26页184 4 switch语句语句 switch语句:亦称多分支选择语句。它比用嵌语句:亦称多分支选择语句。它比用嵌套的套的ifif语句实现多路分支问题,其程序结构清语句实现多路分支问题,其程序结构清晰、易读。晰、易读。一、格式一、格式 switch(e)switch(e)case c1:case c1:语句语句1 1 case c2:case c2:语句语句2 2 case cn:case cn:语句语句n n default:default:语句语句n+1n+1 表达式表达式e e可以是整型、字符型、枚举型可以是整型、字符型、枚举型常量表达式常量表达式cici必须与表达式类型一致必须与表达式类型一致(整型与字符型通用整型与字符型通用)执行过程:执行过程:1.1.计算表达式计算表达式e e的值;的值;2.2.若与常量表达式若与常量表达式cici值一致值一致,则则从语句从语句i,i,开始执行开始执行;直到遇直到遇到到breakbreak语句或语句或switchswitch语句的语句的“”3.3.若与任何常量表达式值均不若与任何常量表达式值均不一致时,则执行一致时,则执行defaultdefault语句,语句,或执行后续语句。或执行后续语句。第18页/共26页194 4 switch语句语句如:如:switch(x)case 1:printf(“statment 1”);break;case 2:printf(“statment 2”);break;default:printf(“default”);思考:思考:case1、2中没有中没有break的结果是什么?的结果是什么?第19页/共26页204 4 switch语句语句说明:说明:1.switch后的表达式后的表达式,可为任何类型。可为任何类型。2.2.表达式的值与某个表达式的值与某个casecase后的常量后的常量 表达式值相等,就执行该表达式值相等,就执行该casecase后的后的 语句,否则执行语句,否则执行defaultdefault。3.3.常量表达式的值必须是唯一的。常量表达式的值必须是唯一的。4.case4.case与与defaultdefault没有先后次序。没有先后次序。5.5.常量表达式常量表达式cici仅仅时语句标号的仅仅时语句标号的 作用即只进行匹配作用即只进行匹配,不作条件判断。不作条件判断。6.6.多个多个casecase语句可共用一组执行语句。语句可共用一组执行语句。(举例说明举例说明)switch(e)case c1:语句语句1 case c2:语句语句2 case cn:语句语句n default:语句语句n+1 如:如:case A:case B:case C:printf(“60n”);break;如:如:case A:printf(“优秀优秀n”);case A:printf(“良好良好n”);case C:printf(“合格合格n”);break;第20页/共26页215 5 程序举例程序举例例:物流公司对用户计算运费。收费标准随距离例:物流公司对用户计算运费。收费标准随距离s s变化如下变化如下:s250km s250km 不折扣不折扣250s500km 2250s500km 2500s1000km 5500s1000km 51000s2000km 81000s2000km 82000s3000km 102000s3000km 103000s 153000s 15分析:分析:计费是按照运输距离计费是按照运输距离s s和货物重量和货物重量w w进行的。设进行的。设每公里每吨货物的基本运费为每公里每吨货物的基本运费为p p,考虑折扣,考虑折扣d d时,总运时,总运费的计算公式为费的计算公式为 f=p*w*s(1-d)f=p*w*s(1-d)int(s)/250 0:d=0 411:d=0.1 1:d=0.02 其它其它:d=0.152、3:d=0.05第21页/共26页22#includevoid main()float s,f,p,w,d;printf(“输入单价、距离和货物重量:输入单价、距离和货物重量:”);scanf(“%f,%f,%f”,&p,&s,&w);switch(int)s/250)case 0:d=0;break;case 1:d=0.02;break;case 2:case3:d=0.05;break;case 4:case5:case6:case7:d=0.08;break;case 8:case9:case10:case11:d=0.1;break;default:d=0.15f=p*s*w*(1-d);printf(“总运费总运费%.2fn”,f);输入单价、距离和货物重量:输入单价、距离和货物重量:100,300,20总运费总运费588000.00程序5-003.cpp第22页/共26页23第23页/共26页24程序题目:题目:要求输出国际象棋棋盘。1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。改进程序源代码:#include“stdio.h”main()int i,j;for(i=0;i8;i+)for(j=0;j8;j+)if(i+j)%2=0)printf(“%c%c”,219,219);elseprintf(“);printf(n);程序5-004.cpp2.程序源代码:#include“stdio.h”main()int i,j;i=0;While(i8)j=0;while(j8)if(i+j)%2=0)printf(“%c%c”,219,219);else printf(“”);j+;printf(n);i+;第24页/共26页25请认真浏览教材中本讲内容!第25页/共26页感谢您的欣赏!第26页/共26页