您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序设计课件第4章语句及程序流程控制
第4章语句及程序流程控制C语言程序设计2本章主要掌握内容:•C语言的语句类型•数据输出•数据输入•顺序结构程序设计•分支结构•循环结构3掌握内容1.C语言的语句?控制语句、函数调用语句、表达式语句、空语句、复合语句#includestdio.hmain(){inta=2,b=4,c=5;a+=b++;c*=a*b;printf(a=%d,b=%d,c=%d\n,a,b,c);{intc=10;a=++b+c;b=b+a;c=a=b;printf(a=%d,b=%d,c=%d\n,a,b,c);}printf(a=%d,b=%d,c=%d\n,a,b,c);}4掌握内容2.顺序结构程序的一般算法描述?变量定义、变量赋值、加工处理、输出结果若输入1234.567#includestdio.h#includemath.hmain(){doublea,b;printf(Inputreala\n);scanf(%lf,&a);b=(a*100+0.5)/100;printf(b=%.2f\n,b);}53.输入输出函数?P62页putchar()、getchar();printf()、scanf()字符数据输入输出#includestdio.hmain(){charc1,c2,c3;c1=getchar();c2=c1+3;c3=c1-3;putchar(c1);putchar(c2);putchar(c3);}若输入大写字母G,则输出结果:64.printf函数中用到格式%8.2f的含义是:A.输出一个float型数据,小数部分占2位,整数部分至少占8位B.输出一个float型数据,小数部分占2位,整数部分至少占4位C.输出一个double型数据,小数部分占2位,整数部分至少占8位D.输出一个double型数据,小数部分占2位,整数部分至少占5位P64-65页75.要使下面程序的输出语句在屏幕上显示1,2,34,则从键盘输入的数据格式应为以下备选答案中的。#includestdio.hmain(){chara,b;intc;scanf(%c%c%d,&a,&b,&c);printf(%c,%c,%d\n,a,b,c);}A)1234B)1,2,34C)’1’,’2’,34D)123484.3.1关系运算符C的关系运算符数学中的关系符含义大于=≥大于或等于小于=≤小于或等于===等于!=≠不等于注意:关系运算符中的相等用“==”表示不要与赋值号“=”混淆!4.3选择结构程序设计9关系运算的运算规则1.关系运算符的优先顺序为、=、、=相同,==、!=相同,前组优先于后组。2.关系表达式成立,则结果为1,即为真值;否则为0,即为假值。举例:1859184818818010103.关系运算的操作数可为算术表达式。4.关系运算符的优先级低于算术运算符的优先级。举例:2*510-710305.表面看起来合法的关系表达式,在逻辑上并不一定是正确的。举例:当a=3;b=2;c=1时abc?321110114.3.2逻辑运算符逻辑运算符&&逻辑与(并且)||逻辑或(或者)!逻辑非12逻辑运算的运算规则逻辑运算符的优先顺序为:!&&||按顺序递减。算术、关系、逻辑运算符的优先顺序为:算术运算关系运算逻辑运算举例:a+bc*d&&L1&&!L213C语言没有提供“逻辑型”或“布尔型”等数据类型。只要合法,任何类型表达式都可作为判断条件,可作逻辑量使用,表达式值为非0,即为真值,0为假!举例:当a=3时a+1为真值;a-3为假值。逻辑运算的运算规则14逻辑表达式举例判断某一年year是否是闰年。能被4整除,但不能被100整除;或能被400整除;year%4==0&&year%100!=0或year%400==0(year%4==0&&year%100!=0)||(year%400==0)154.3.3条件运算算式格式E1?E2:E3(属三目运算符)算式框图E1为真?E2E3yesno举例A=(xy)?x:y又:(++I%8)?‘’:'\n'16运算符按照优先级大小由上向下排列,在同一行的运算符具有相同优先级。第二行是所有的一元运算符。运算符解释结合方式()[]-.括号(函数等),数组,两种结构成员访问由左向右!~++--+-*&(类型)sizeof()否定,按位否定,增量,减量,正负号,间接,取地址,类型转换,求大小由右向左*/%乘,除,取模由左向右+-加,减由左向右==小于,小于等于,大于等于,大于由左向右==!=等于,不等于由左向右&&逻辑与由左向右||逻辑或由左向右?:条件由右向左=+=-=*=/=各种赋值由右向左,逗号(顺序)由左向右174.3.4单选择结构的框图结构yesno语句A条件成立否yesno条件语句A入口出口18双选择结构的框图结构yesno程序段A程序段B条件成立否入口出口yesno条件语句A语句B19if-else择条件语句选择结构的一种最常用形式:if(表达式)语句1;else语句2;语句3;执行过程:当括号内表达式成立时,即表达式的值是非0时,执行语句1,然后语句3;当表达式不成立时,值等于0时,执行语句2,然后语句3,上面else部分也可以没有。20if(表达式)语句1;语句3;执行过程:当括号内表达式成立时(表达式的值是非0),执行语句1,然后执行语句3;当表达式不成立时(等于0),直接执行语句3。if条件语句21if-else多选条件语句if的一种扩展形式格式:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…………else语句4;语句5;功能当表达式1为真值时,执行语句1;否则,当表达式2为真值时,执行语句2,否则…其中else部分可以没有。22补足程序段--1例:输入两个整数,按从小到大的顺序输出它们。t=a;a=b;b=t;#includestdio.hmain(){inta,b,t;scanf(%d,%d,&a,&b);if(ab){}printf(%d,%d,a,b);}23a=a+b;b=a-b;a=a-b;条件语句举例--1#includestdio.hmain(){inta,b;scanf(%d,%d,&a,&b);if(ab){}printf(%d,%d,a,b);}24条件语句举例--1ab?b:a,ab?a:b#includestdio.hmain(){inta,b;scanf(%d,%d,&a,&b);printf(%d,%d,);}25条件语句举例--2例:输入三个整数,按从小到大的顺序输出它们。#includestdio.hmain(){inta,b,c,t;scanf(%d,%d,%d,&a,&b,&c);if(ab){}if(ac){}if(bc){}printf(%d,%d,%d,a,b,c);}t=a;a=b;b=t;t=a;a=c;c=t;t=b;b=c;c=t;26有一函数:-1(x0)y=0(x=0)1(x0)编一程序,输入一个x值,输出y值。#includestdio.hmain(){intx,y;scanf(%d,&x);if(x0)y=-1;elseif(x=0)y=0;//elsey=1;printf(x=%d,y=%d,x,y);}条件语句举例--3#includestdio.hmain(){intx,y;scanf(%d,&x);if(x=0)/*条件语句嵌套*/if(x==0)y=0;/*注意:内、外重条件语句*/elsey=1;/*if-else配对使用原则:*/elsey=-1;/*else总是与距离它最近的且没有*//*配对的if相结合,与缩进格式无关!*/printf(x=%d,y=%d,x,y);}27开关语句--switch功能格式开关语句就像多路开关一样,程序可根据一个表达式可能产生的不同结果值,选择其中一个——独立分支结构,或几个分支的语句——非独立分支结构去执行。switch(表达式){case常量1:语句系列1case常量2:语句系列2……case常量m:语句系列mdefault:语句系列m+1}说明⑴switch后括号内表达式的值只能是整形、字符型或枚举类型,每个常量的类型和表达式的类型应相同,每个语句序列可以是零个或若干个语句。case3:case4:printf(“%d”,d1);break;default:⑵执行时,先求表达式的值,然后自上而下依次测试每一个常量,若与常量I相匹配,则从其后的语句序列i开始执行每个语句序列,若没有常量与之匹配,则执行default后面的语句序列——非独立分支结构。若只执行语句系列I,则在语句系列I后加break语句——独立分支结构。switch(表达式){case常量1:语句系列1;break;case常量2:语句系列2;break;……case常量m:语句系列m;break;default:语句系列m+1;}⑶由于每个case语句后的常量只起语句标号的作用,所以它们的值必须互不相同,否则会出现互相矛盾的现象(C语言系统不允许,编译出错)。case1:case1:case3:⑷独立分支时每个case语句和default语句的出现的前后次序发生改变时,不影响运行结果,但在一般情况下,常量出现频率较高的放在前面。case1:case1:default:case2:case2:case3:case3:deault:举例有了if语句,为什么还要switch语句?28开关语句举例•独立分支开关语句举例•非独立分支开关语句举例29独立分支开关语句举例X0≤X102X+110≤X20Y=4120≤X3071-X30≤X400X0或X≥40#includestdio.hmain(){intxscanf(%d,&x);switch(){case0:printf(y=%d\n,x);break;case1:printf(y=%d\n,2*x+1);break;case2:printf(y=20\n);break;case3:printf(y=%d\n,71-x);break;default:printf(y=0\n);}}x/1030非独立分支开关语句举例设有语句:inta=1,b=0;则执行下面语句后输出为()switch(a){case1:switch(b):{case0:printf(“**0**”);break;case1:printf(“**1**”);break;}case2:printf(“**2**”);break;}A.**0**B.**0****2**C.**0****1****2**D.错误B.**0****2**B31例switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}运行结果:score为5时,输出:Verygood!Good!Pass!Fail!dataerror!32•辅助控制语句–break语句•功能:在switch语句和循环语句中,终止并跳出开关体或循环体。•说明:–break只能终止并跳出最近一层的结构–break不能用于循环语句和switch语句之外的任何其它语句之中。33例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=134已知intx,a,b;则下列选项中错误的if语句是()A)if(a=b)x++;B)i
本文标题:C语言程序设计课件第4章语句及程序流程控制
链接地址:https://www.777doc.com/doc-2909043 .html