C语言程序设计课件模块4_第1页
C语言程序设计课件模块4_第2页
C语言程序设计课件模块4_第3页
C语言程序设计课件模块4_第4页
C语言程序设计课件模块4_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块四选择结构程序设计C语言程序设计教学做一体化本模块介绍C语言的关系运算、逻辑运算以及用作选择的if语句和switch语句。学习本模块应能掌握关系运算和逻辑运算的操作,并能够用if和switch语句编制具有选择结构的程序。选择结构是结构程序设计所采用的三种基本控制结构之一,另外两种是顺序结构和循环结构。在编程序时,有时并不能保证程序一定执行某些指令,而是要根据一定的外部条件来判断哪些指令要执行。在计算机程序中可以根据不同的条件执行不同的代码段,这就是选择结构。C语言程序设计教学做一体化4.1关系运算符与关系表达式学习目标1、掌握C语言中的关系运算符2、掌握关系运算符的优先级3、掌握关系表达式的使用4、理解“==”与“=”的区别C语言程序设计教学做一体化知识链接1、在C语言中有6个二元的关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、!=(不等于)。2、运算规则:两个操作数进行比较,若条件满足,则结果值为1;否则为0。3、结合方向:从左至右。4、优先级(从高到低排列):(1)算术运算符(2)<,<=,>,>=(3)==和!=(4)赋值运算符。C语言程序设计教学做一体化案例4-1区分关系运算符“==”和赋值运算符“=”#include<stdio.h>voidmain(){intx,y,z1,z2;x=2;y=2;z1=(x=y);/*先把y的值赋给x,然后再把x的值赋给z1*/z2=(x==y);/*先判断x与y的值是否相等,再把结果赋给z2*/printf("z1=%d,z2=%d\n",z1,z2);}运行这个程序,结果是:z1=2,z2=1↙C语言程序设计教学做一体化4.1.2关系表达式多种运算符在一个表达式中混合使用。案例程序#include"stdio.h"voidmain(){ intx,y,z,i,j;

clrscr(); /*函数clrscr()功能是清屏*/ x=4,y=3,z=2; i=y>z; /*i的值为1*/ j=x>y>z; /*x>y的值为1,1>z的值为0*/C语言程序设计教学做一体化printf("%d,%d,",i,j);printf("%d,",z>y==3); /*先算z>y的值*/printf("%d,",y+z<x);printf("%d",y+2>=z+1);}运行结果是:1,0,0,0,1↙随堂练习已知a=1,b=2,c=3,d=4,m=1,n=1;求表达式(m=a<b)&&(n=c>d)的值。 C语言程序设计教学做一体化知识链接1、由关系运算符与操作数构成的表达式就是关系表达式。关系表达式的值为“真”或“假”,C语言用整数1表示“真”,整数0表示“假”。2、关系表达式的一般形式为:表达式关系运算符表达式;,其中表达式也可以是关系表达式,所以可以出现嵌套的情况。例如:a>(b>c),a!=(c==d)等也是合法的关系表达式。3、注意:由于实型数据有误差,对于结果为实数的两个运算量x、y,应避免使用期“x==y”来判断相等,否则会得出错误的结论。例如:如下程序段运行后的输出结果是0,而不是1。floatx=99.9;printf(“%d\n”,x+0.1==100.0);正确的处理方法是判断两个运算量的差值的绝对值是否小于很小的数,如判断fabs(x-y)<10e-6是否成立。C语言程序设计教学做一体化4.2逻辑运算符与逻辑表达式学习目标:1、了解C语言中的各种逻辑运算符2、掌握逻辑表达式与关系表达式的混合使用3、掌握逻辑表达式的求值优化C语言程序设计教学做一体化案例4-3逻辑表达式的求值优化#include<stdio.h>main(){ inta=10,b=30; printf("%d",(a==0)&&(a=5)); /*a==0的值为0,不再处理a=5*/ printf("a=%d\n",a); /*a的值还是原来的10*/ printf("%d",(b>=20)||(b=15)); /*b>=20的值为1,不再处理b=15*/ printf("b=%d\n",b); /*b的值还是原来的30*/}运行结果为:0 a=10↙1 b=30↙随堂练习计算2+4==6*(2!=1)的结果,并编程验证是否正确。C语言程序设计教学做一体化*4.3if条件语句学习目标:1、掌握if语句的三种形式2、理解if语句的三种形式的流程图3、掌握两个数进行交换和排序的方法4、掌握判断某数是否是另一个数的倍数的方法5、掌握处理问题时用数字对应星期数的方法6、理解用ASCII码值对输入字符进行分类的方法7、掌握if…else…的嵌套及else与if的配对关系8、掌握百分制与ABCD等级记分制实现转换的方法C语言程序设计教学做一体化4.3.1If语句的简单形式用if语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。if语句有三种不同的形式,还可以进行嵌套。If语句的简单形式格式为:if(表达式)语句;其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。C语言程序设计教学做一体化4.3.1If语句的简单形式从键盘输入两个数x、y,要求从小到大排序并输出。案例程序#include<stdio.h>main(){ floatx,y,t; /*临时变量t帮助实现两数交换*/ scanf(“%f,%f”,&x,&y); if(x>y) {t=x;x=y;y=t;} /*两个数进行交换*/ printf("%6.2f,%6.2f\n",x,y);} 分别输入两组数据:5,3和2,4进行测试,运行结果如图4-1所示:C语言程序设计教学做一体化案例4-5报数游戏。#include<stdio.h>main(){ intnumber=0; printf("Pleaseinputanumber:"); scanf("%d",&number); if(number%3!=0)/*如果输入的数不能被3整除*/ printf("%disanumberednumber.\n",number); /*输出此数*/}分别输入3和4进行测试,C语言程序设计教学做一体化4.3.2If语句的基本形式C语言中的if语句的基本形式是:if(表达式)语句1;

else语句2;其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。C语言程序设计教学做一体化4.3.2If语句的基本形式#include<stdio.h>main(){ intweek=0; floatspeaker=300,keyboard=80; printf("Pleaseinputweeknumber:"); scanf("%d",&week); /*输入星期数*/ if(week==6||week==7)/*如果是星期六或星期日*/ { speaker=speaker*0.85; /*求音箱的实际价格*/ keyboard=keyboard*0.9; /*求键盘的实际价格*/ } else speaker=speaker*0.9; /*只求音箱的实际价格*/ printf("Thepriceofspeakeris%f,keyboardis%f.\n",speaker,keyboard);}分别输入6和2进行测试,C语言程序设计教学做一体化4.3.3if-else-if阶梯形式当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…elseif(表达式m)语句m;else语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。C语言程序设计教学做一体化案例4-7从键盘上输入一个字符,判断此字符的类别。

#include"stdio.h"main(){charc;printf("inputacharacter:");c=getchar();if(c<32) /*控制字符的ASCII码值0-31*/ printf("Thisisacontrolcharacter\n");elseif(c>='0'&&c<='9') /*判断是否为数字0-9*/ printf("Thisisadigit\n"); elseif(c>='A'&&c<='Z') /*判断是否为大写字母*/ printf("Thisisacapitalletter\n"); elseif(c>='a'&&c<='z') /*判断是否为小写字母*/ printf("Thisisasmallletter\n"); else printf("Thisisanothercharacter\n");}分别输入7、r、Q和Shift键进行测试,C语言程序设计教学做一体化4.3.4if-else的嵌套形式当if语句中的执行语句又是if语句时,则构成了if语句嵌套的情形。在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。例如:

if(表达式1)if(表达式2)

语句1;

else语句2;其中的else究竟是与哪一个if配对呢?为了避免这种二义性,C语言规定:else总是与它前面最近的未配对的if配对。并且在书写时,应通过格式表现出嵌套层次,这样看比较直观,有利于减少因if与else不匹配,或是“{}”不成对而造成的错误,同时也提高了程序的可读性,便于自己和他人阅读。C语言程序设计教学做一体化根据输入的百分制成绩按A、B、C、D四个等级进行成绩输出。#include"stdio.h"voidmain(){intscore;chargrade;printf("pleaseinputscore:");scanf("%d",&score);if(score>=0&&score<=100){ /*条件语句中包含其它条件语句*/ if(score>=85) /*判断条件1:85~100*/grade='A'; elseif(score>=70) /*判断条件2:70~84*/grade='B'; elseif(score>=60) /*判断条件3:60~69*/grade='C'; else /*判断条件4:0~59*/grade='D';printf("gradeis%c\n",grade); /*grade是字符型数据用%c*/ }else printf("dataerror!\n");}分别输入-10、38、65、79和85进行测试,C语言程序设计教学做一体化4.4switch语句学习目标:1、掌握switch语句的一般用法2、掌握switch语句后的break语句作用3、掌握简单运算器的实现方法4、掌握键盘输入数字对应输出星期数英语单词的方法C语言程序设计教学做一体化4.4switch语句C语言还提供了另一种用于多分支选择的switch语句,其一般形式为:

switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;…case常量表达式n:语句n;break;default:语句n+1;}其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,如果此语句后有break语句,则跳出switch语句;如果没有break语句,则不再进行判断,继续执行下一个case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。C语言程序设计教学做一体化4.4switch语句注意:(1)关键字switch后面的表达式的值是整型或字符型。(2)关键字case后面的常量表达式的值也只能是整型或字符型,并且各case分支的常量表达式的值应各不相同。(3)在case后,允许有多个语句,可以不用{}括起来;同时也可以多个case表达式共用同一个语句。(4)break语句用于跳出整个switch语句。如果没有break语句,则执行完一个case分支将执行下一个case分支。(5)各case和default语句的先后顺序可以变动,而不会影响程序执行结果。(6)default语句是可选的。当所有的case常量表达式不能与表达式的值匹配时,执行default语句。在每个switch语句中,default语句最多只能有一个。C语言程序设计教学做一体化基础练习选择题1、已有定义intx=3,y=4;,则x>y&&y的值是

A)true B)0 C)false D)12、设intx=1,y=1;表达式!x||y­–­–的值是

A)0 B)1 C)2 D)–13、若有语句inta=3,b=4;floatc=4.0;则以下表达式值为0的是

A)“a”&&!b B)c==b C)a==3==1 D)a&&!b–c4、以下运算符中优先级最低是

A)&& B)|| C)> D)=C语言程序设计教学做一体化5、关于下面的程序表述正确的是

#include<stdio.h> voidmain() {intx=4,y=-1,z=1;if(x=y+z) printf(“Hello!”);else printf(“Welcome!”):}A)输出Hello!B)输出Welcome!C)有语法错误,不能通过编译D)可能通过编译,便不能通过链接,所以无法运行6、下面程序段求两个数中的较小的数,不正确的是

。A)min=x<y?x:y; B)if(y<=x)min=y;elsemin=x;C)min=x>y?x:y; D)min=x;if(y<=x)min=y;C语言程序设计教学做一体化7、if语句嵌套时,else总是与

配对。A)前面最近的if B)第一个ifC)最外层的if D)前面最近的配对的if8、下列描述正确的是

。A)switch语句中必须使用break语句B)switch语句中case后的表达式可以是任意类型C)switch语句中,可根据需要使用或不使用default语句D)switch语句的条件表达式的值只能是整形9、若有下列语句组,则输出结果是

intx=–1; if(x++<0) printf(“%d”,--x); printf(“%d”,x++);A)–1 B)1C)–1–1 D)–10C语言程序设计教学做一体化10、以下程序运行后的输出结果是

main() {inta=15,b=21,m=0;switch(a%3){ case0:m++;break; case1:m++; switch(b%2) { default:m++; case0:m++;break;}}printf(“%d\n”,m);}A)­1 B)2C)­3 D)4C语言程序设计教学做一体化程序分析1、请判断下面程序的执行结果,并解释该程序的功能。#include"stdio.h"voidmain(){inta=10,b=20,x;x=a;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论