C语言上机报告第2章.ppt

上传人:wuy****n92 文档编号:70101431 上传时间:2023-01-16 格式:PPT 页数:79 大小:550.50KB
返回 下载 相关 举报
C语言上机报告第2章.ppt_第1页
第1页 / 共79页
C语言上机报告第2章.ppt_第2页
第2页 / 共79页
点击查看更多>>
资源描述

《C语言上机报告第2章.ppt》由会员分享,可在线阅读,更多相关《C语言上机报告第2章.ppt(79页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C 语言程序设计基础篇第第 2 2 章章 简单程序设计之一简单程序设计之一 C语言程序设计基础篇2023年1月16日运算符和表达式运算符和表达式顺序结构程序设计顺序结构程序设计 选择结构程序设计选择结构程序设计简单循环结构程序设计简单循环结构程序设计 内容概述C语言程序设计基础篇2023年1月16日教学目标掌握常量与变量的定义和使用方法;掌握常量与变量的定义和使用方法;学会三种结构的简单程序设计;学会三种结构的简单程序设计;从整体上把握和了解从整体上把握和了解C C程序的基本结构,对程序的基本结构,对C C语言程序开发设计有初步的感性认识。语言程序开发设计有初步的感性认识。C语言程序设计基础篇

2、2023年1月16日C语言程序的控制结构语言程序的控制结构顺序结构顺序结构选择结构选择结构循环结构循环结构C语言程序设计基础篇2023年1月16日2.2.1 1 顺序结构程序设计顺序结构程序设计 顺序结构程序设计就是根据问题要求设计顺序结构程序设计就是根据问题要求设计顺序结构程序设计就是根据问题要求设计顺序结构程序设计就是根据问题要求设计的程序,其执行过程是按程序书写的顺序,从的程序,其执行过程是按程序书写的顺序,从的程序,其执行过程是按程序书写的顺序,从的程序,其执行过程是按程序书写的顺序,从上到下,逐条语句顺序地执行,没有跳转,一上到下,逐条语句顺序地执行,没有跳转,一上到下,逐条语句顺序

3、地执行,没有跳转,一上到下,逐条语句顺序地执行,没有跳转,一直到最后一条语句,程序才算执行完毕,退出直到最后一条语句,程序才算执行完毕,退出直到最后一条语句,程序才算执行完毕,退出直到最后一条语句,程序才算执行完毕,退出程序。程序。程序。程序。C语言程序设计基础篇2023年1月16日基本的算术运算符基本的算术运算符运算符运算符运算符运算符 名称名称名称名称举例举例举例举例说明说明说明说明+加法运算符加法运算符加法运算符加法运算符a+3a+3加法加法加法加法-减法运算符减法运算符减法运算符减法运算符c-4c-4减法减法减法减法*乘法运算符乘法运算符乘法运算符乘法运算符a*3a*3乘法乘法乘法乘法

4、/除法运算符除法运算符除法运算符除法运算符c/dc/d除法除法除法除法%模运算符模运算符模运算符模运算符e%4e%4求余数、取模求余数、取模求余数、取模求余数、取模C语言程序设计基础篇2023年1月16日算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性n n表达式表达式是由常量、变量、函数和运算符是由常量、变量、函数和运算符组合起来的式子。组合起来的式子。n n如:如:n na+ba+bn n(a*2)/c(a*2)/cn n(x+r)*8-(a+b)/7(x+r)*8-(a+b)/7C语言程序设计基础篇2023年1月16日运算符的优先级和结合性运算符的优先级和结合性n n

5、优先级优先级优先级优先级 (从高到低从高到低从高到低从高到低)()()*/%*/%+(+(加加加加)(减减减减)n n结合方向结合方向结合方向结合方向+(+(加加加加)(减减减减)*/%)*/%:从左向右:从左向右:从左向右:从左向右n n若在运算量两侧的运算符有相同的优先级,则按它若在运算量两侧的运算符有相同的优先级,则按它若在运算量两侧的运算符有相同的优先级,则按它若在运算量两侧的运算符有相同的优先级,则按它们的结合方向顺序处理。们的结合方向顺序处理。们的结合方向顺序处理。们的结合方向顺序处理。例例例例:a a b/c b/c 1+a d 1+a d e e;C语言程序设计基础篇2023年

6、1月16日两点说明两点说明1.1.两个整数相除,结果也为整数两个整数相除,结果也为整数两个整数相除,结果也为整数两个整数相除,结果也为整数n n直接舍去商的小数部分,而不会直接舍去商的小数部分,而不会直接舍去商的小数部分,而不会直接舍去商的小数部分,而不会“四舍五入四舍五入四舍五入四舍五入”n n如果需要得到精确的运算结果,可以把其中如果需要得到精确的运算结果,可以把其中如果需要得到精确的运算结果,可以把其中如果需要得到精确的运算结果,可以把其中一个操作数转换为浮点数。一个操作数转换为浮点数。一个操作数转换为浮点数。一个操作数转换为浮点数。举例:举例:举例:举例:5/3(=1)5/3(=1)、

7、5.0/3(=1.666665.0/3(=1.66666)2.2.模运算符的两个操作数都必须是整数模运算符的两个操作数都必须是整数模运算符的两个操作数都必须是整数模运算符的两个操作数都必须是整数举例:举例:举例:举例:5%3(=2)5%3(=2)C语言程序设计基础篇2023年1月16日【例例2.1】由键盘输入两个整数给变量由键盘输入两个整数给变量a和和b,输,输出出a和和b的和差积商及余数。的和差积商及余数。定义变量:定义变量:定义变量:定义变量:int a,bint a,b;int sum,difference,product,quotient,remainder;int sum,diffe

8、rence,product,quotient,remainder;算法:算法:算法:算法:sum=a+b;sum=a+b;difference=a-b;difference=a-b;product=a*b;product=a*b;quotient=a/b;quotient=a/b;remainder=a%b;remainder=a%b;C语言程序设计基础篇2023年1月16日#include stdio.h#include stdio.hvoid main()void main()int a,b,sum,difference,product,quotient,int a,b,sum,diffe

9、rence,product,quotient,remainder;remainder;printf(printf(请输入请输入请输入请输入a a和和和和b b的值的值的值的值:);:);scanf(%d%d,&a,&b);scanf(%d%d,&a,&b);sum=a+b;sum=a+b;difference=a-b;difference=a-b;product=a*b;product=a*b;quotient=a/b;quotient=a/b;remainder=a%b;remainder=a%b;printf(printf(和和和和=%d,=%d,差差差差=%d,=%d,积积积积=%d,=

10、%d,商商商商=%d,=%d,余数余数余数余数=%dn,sum,difference,product,quotient,rem=%dn,sum,difference,product,quotient,remainder);ainder);C语言程序设计基础篇2023年1月16日问题分问题分问题分问题分4 4 4 4个步骤来处理:个步骤来处理:个步骤来处理:个步骤来处理:(1 1 1 1)输入两个整数给变量)输入两个整数给变量)输入两个整数给变量)输入两个整数给变量a a a a和和和和b b b b;(2 2 2 2)输出输出输出输出a a a a和和和和b b b b的值;的值;的值;的值;

11、(3 3 3 3)交换)交换)交换)交换a a a a和和和和b b b b的值;的值;的值;的值;(4 4 4 4)输出)输出)输出)输出a a a a和和和和b b b b的值。的值。的值。的值。【例例2.22.2】由由键键盘盘输输入入两两个个整整数数给给变变量量a a和和b b,然然后后输输出出a a和和b b。在在交交换换a a和和b b的的值值后后,再再输输出出a a和和b b,验验证证两两个个变变量中的数值是否正确地进行了交换。量中的数值是否正确地进行了交换。C语言程序设计基础篇2023年1月16日#include void main()int a,b,t;printf(Enter

12、 a and b:n);scanf(%d%d,&a,&b);/*/*输入两个整型变量输入两个整型变量a a和和b*/b*/printf(a=%d,b=%dn,a,b);/*/*输出输出a a和和b b的值的值*/*/t=a;/*/*交换交换a a和和b b的值的值*/*/a=b;b=t;printf(a=%d,b=%dn,a,b);/*/*输出输出a a和和b b的值的值*/*/C语言程序设计基础篇2023年1月16日关系运算符和关系表达式关系运算符和关系表达式n n关系运算:比较运算,比较两个操作数,关系运算:比较运算,比较两个操作数,看是否满足给定的关系。看是否满足给定的关系。n n如如如

13、如:a3a3 为一比较运算,为一比较运算,为一比较运算,为一比较运算,若若若若a=5a=5,a3 a3 成立,结果为成立,结果为成立,结果为成立,结果为“真真真真”;否则,若否则,若否则,若否则,若a=1a=1,a3 a3 不成立,结果为假。不成立,结果为假。不成立,结果为假。不成立,结果为假。n n在在在在C C语言中,用非零值表示真,零表示假。语言中,用非零值表示真,零表示假。语言中,用非零值表示真,零表示假。语言中,用非零值表示真,零表示假。n n表达式表达式表达式表达式:a3a3 称为关系表达式。称为关系表达式。称为关系表达式。称为关系表达式。2.2 选择结构程序设计选择结构程序设计C

14、语言程序设计基础篇2023年1月16日C语言提供了六种关系运算符语言提供了六种关系运算符1.1.:小于小于,53,352.2.=:小于等于,小于等于,5=3,3:大于,大于,53,354.4.=:大于等于,大于等于,5=3,3=55.5.=:等于,等于,5=36.6.!=:不等于,不等于,5!=3C语言程序设计基础篇2023年1月16日关系运算符的优先次序关系运算符的优先次序n n关系运算符优先级低于算术运算符。关系运算符优先级低于算术运算符。n nca+bca+b c (a+b)c (a+b)n na+b=2*ca+b=2*c (a+b)=(2*c)(a+b)=(2*c)C语言程序设计基础篇

15、2023年1月16日关系表达式关系表达式n n关系表达式关系表达式关系表达式关系表达式:用关系运算符将两个表达式连接用关系运算符将两个表达式连接用关系运算符将两个表达式连接用关系运算符将两个表达式连接起来的式子。起来的式子。起来的式子。起来的式子。n n如如如如:ababa+bb+ca+bb+cn n关系表达式的值为关系表达式的值为关系表达式的值为关系表达式的值为1 1或或或或0 0n n1 1表示结果为真,也就是关系成立。表示结果为真,也就是关系成立。表示结果为真,也就是关系成立。表示结果为真,也就是关系成立。n n0 0表示结果为假,也就是关系不成立。表示结果为假,也就是关系不成立。表示结

16、果为假,也就是关系不成立。表示结果为假,也就是关系不成立。C语言程序设计基础篇2023年1月16日例例 关系运算符关系运算符#include#include int main()int main()int a,b,c;int a,b,c;a=5;b=3;c=4;a=5;b=3;c=4;printf(printf(ab:%dnab:%dn,ab);ab);printf(printf(a+bb+c:%dna+bb+c:%dn,a+bb+c);a+bb+c);printf(printf(ab)(bb)(bb)(bb)(bb:1a+bb+c:1(ab)(bc):0C语言程序设计基础篇2023年1月16

17、日!:逻辑非,一元运算符:逻辑非,一元运算符运算规则:运算规则:取反,真取反,真 假,假假,假 真真&:逻辑与:逻辑与。又称逻辑乘。又称逻辑乘。运算规则:运算规则:两个操作数均为真,结果为真。两个操作数均为真,结果为真。|:逻辑或:逻辑或 。又称逻辑加。又称逻辑加。运算规则:运算规则:只要两个操作数有一个为真,结果为真。只要两个操作数有一个为真,结果为真。2.2.2 2.2.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式逻辑运算符逻辑运算符C语言程序设计基础篇2023年1月16日用逻辑运算符将表达式连接起来的式子。其值是一用逻辑运算符将表达式连接起来的式子。其值是一个逻辑量个逻辑量“真真”或

18、或“假假”。优先级优先级结合性结合性!:自右向左!:自右向左&、|:自左向右:自左向右!(非)!(非)算术运算符算术运算符关系运算符关系运算符&和和|赋值运算符赋值运算符高高低低逻辑表达式逻辑表达式注意注意:逻辑表达式的逻辑表达式的C C语言编译系统在给出逻辑结果时,语言编译系统在给出逻辑结果时,以数值以数值1 1代表代表“真真”,以,以0 0代表代表“假假”;但是在判断一个;但是在判断一个量是否为量是否为“真真”时,以非时,以非0 0代表代表“真真”,以,以0 0代表代表“假假”。C语言程序设计基础篇2023年1月16日课堂练习课堂练习4 4:若若x=3,y=7x=3,y=7求逻辑表达式求逻

19、辑表达式!(1x)|29-y!(1x)|29-y的值的值.括号括号括号括号()()()()优先级最高,先计算优先级最高,先计算优先级最高,先计算优先级最高,先计算1x1x1x1x,值:,值:,值:,值:1 1 1 1;!优先级高于其它算符,计算优先级高于其它算符,计算优先级高于其它算符,计算优先级高于其它算符,计算!,值:,值:,值:,值:0 0 0 0-优先级高于其余算符,计算优先级高于其余算符,计算优先级高于其余算符,计算优先级高于其余算符,计算9-y9-y9-y9-y,值:,值:,值:,值:2 2 2 2 运算优先级高于逻辑或运算优先级高于逻辑或运算优先级高于逻辑或运算优先级高于逻辑或|

20、,|,|,|,计算计算计算计算2,2,2,2,值:值:值:值:0 0 0 0|最后运算,最后运算,最后运算,最后运算,|,值:,值:,值:,值:0 0 0 0所以,表达式所以,表达式所以,表达式所以,表达式!(1x)|29-y!(1x)|29-y!(1x)|29-y!(1x)|29-y的值是的值是的值是的值是0 0 0 0。C语言程序设计基础篇2023年1月16日逻辑运算符特点逻辑运算符特点逻辑运算符特点逻辑运算符特点(开关性开关性开关性开关性)在逻辑表达式的求解中,并不是所有的逻辑运算符都在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出被执行,只是

21、在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例如表达式的解时,才执行该运算符。例如:(1 1)a&b&ca&b&c求解方法求解方法:只有:只有a a为真(非为真(非0 0),才需要判断),才需要判断b b的值,只的值,只有有a a和和b b都为真,才需要判断都为真,才需要判断c c的值。只要的值。只要a a为假,就不为假,就不必判断必判断b b和和c c,运算立即中止。,运算立即中止。例如例如:若若 a=0;b=1;c=2;执行执行 d=a+&b+&-c;之后之后,a,b,c,d,a,b,c,d的值各是什么的值各是什么?运算结果运算结果运算结果运算结果:d=0,a=1,b=

22、1,c=2C语言程序设计基础篇2023年1月16日(2)a|b|c求解方法:求解方法:只要只要a a为真(非为真(非0 0),就不必判断就不必判断b b和和c c;只有只有a a 为假,才判断为假,才判断b b;a a和和b b都为假,才判断都为假,才判断c c。例如例如:若若 a=0;b=1;c=2;执行执行 d=a+|b+|-c;后后a,b,c,d的值各是什么的值各是什么?运算结果运算结果运算结果运算结果:d=1,a=1,b=2,c=2 d=1,a=1,b=2,c=2 C语言程序设计基础篇2023年1月16日设设a=5a=5、b=3b=3、c=2c=2、d=1d=1、x=1x=1、y=1y

23、=1,求表达式,求表达式(x=ab)&(y=cd)(x=ab)&(y=cd)的值及变量的值及变量x x和和y y的值。的值。分析:求表达式分析:求表达式(x=ab)&(y=cd)(x=ab)&(y=cd)的值,首先计算的值,首先计算表达式表达式(x=ab)(x=ab)的值,因为的值,因为abab为假,变量为假,变量x x的值为的值为0 0,表,表达式达式(x=ab)(x=ab)的值为假。对于运算符的值为假。对于运算符&,当其左边的运算,当其左边的运算对象为对象为0 0时,右边的表达式时,右边的表达式(y=cd)(y=cd)不被执行,所示整个不被执行,所示整个表达式的值为表达式的值为0 0,y

24、y的值不变。的值不变。C语言程序设计基础篇2023年1月16日2.2.3 if2.2.3 if分支结构分支结构 用用用用ifififif语句语句语句语句可以构成分支结构。它根据给定的条件可以构成分支结构。它根据给定的条件可以构成分支结构。它根据给定的条件可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。进行判断,以决定执行某个分支程序段。进行判断,以决定执行某个分支程序段。进行判断,以决定执行某个分支程序段。if if语句有三种基本形式:语句有三种基本形式:语句有三种基本形式:语句有三种基本形式:if ifif-elseif-elseif-else-ifif-else-if

25、C语言程序设计基础篇2023年1月16日第一种形式为基本形式,形式为:第一种形式为基本形式,形式为:其语义是:其语义是:其语义是:其语义是:如果表达式的值为真,则如果表达式的值为真,则如果表达式的值为真,则如果表达式的值为真,则执行其后的语句,否则不执行其后的语句,否则不执行其后的语句,否则不执行其后的语句,否则不执行该语句。其过程可表执行该语句。其过程可表执行该语句。其过程可表执行该语句。其过程可表示为右图。示为右图。示为右图。示为右图。if(if(if(if(表达式表达式表达式表达式)语句语句语句语句C语言程序设计基础篇2023年1月16日【例例2.32.3】由键盘输入两个不同的整数给变量

26、由键盘输入两个不同的整数给变量a a和和b b,然后输出然后输出a a和和b b中较大的数。中较大的数。#include#include int main()int main()int a,b,max;int a,b,max;printf(Input two numbers:);printf(Input two numbers:);scanf(%d%d,&a,&b);scanf(%d%d,&a,&b);max=a;max=a;if(maxb)max=b;if(maxb)max=b;printf(max=%dn,max);printf(max=%dn,max);return(0);return(

27、0);运行结果为运行结果为:Input two numbers:5 12max=12C语言程序设计基础篇2023年1月16日第二种形式为第二种形式为:if-else:if-elseif(if(if(if(表达式表达式表达式表达式)语句语句语句语句1 1 1 1;else else else else 语句语句语句语句2 2 2 2;其语义是:其语义是:如果表达式的值为真,则执行语句如果表达式的值为真,则执行语句1 1,否则执行语句,否则执行语句2 2。其执行过程可表示为下图。其执行过程可表示为下图。C语言程序设计基础篇2023年1月16日【例例】用用if-elseif-else语句改写例语句改

28、写例2.32.3#include#include int main()int main()int a,b;int a,b;printf(Input two numbers:);printf(Input two numbers:);scanf(%d%d,&a,&b);scanf(%d%d,&a,&b);if(ab)if(ab)printf(max=%dn,a);printf(max=%dn,a);elseelseprintf(max=%dn,b);printf(max=%dn,b);return(0);return(0);运行结果为运行结果为:Input two numbers:5 12max=

29、12C语言程序设计基础篇2023年1月16日复杂条件下的复杂条件下的ifif条件结构条件结构【例例例例2.42.42.42.4】从键盘输入一个年份,判断是否闰年。从键盘输入一个年份,判断是否闰年。从键盘输入一个年份,判断是否闰年。从键盘输入一个年份,判断是否闰年。什么是闰年?什么是闰年?复合条件可表示为:复合条件可表示为:(year%4=0)&(year%100!=0)|(year%400=0)算算法法:闰闰年年是是指指能能被被4整整除除而而不不能能被被100整整除除,或能被或能被400整除的年份。整除的年份。C语言程序设计基础篇2023年1月16日void main()void main()

30、int year;int year;printf(printf(请输入年份:请输入年份:请输入年份:请输入年份:););scanf(%d,&year);scanf(%d,&year);if(year%4=0)&(year%100!=0)|(yif(year%4=0)&(year%100!=0)|(year%400=0)ear%400=0)printf(%d printf(%d年是闰年年是闰年年是闰年年是闰年n,year);n,year);else printf(%d else printf(%d年不是闰年年不是闰年年不是闰年年不是闰年n,year);n,year);C语言程序设计基础篇2023

31、年1月16日第三种形式为第三种形式为:if-else-if:if-else-if前两种形式的前两种形式的前两种形式的前两种形式的ifififif语句一般都用语句一般都用语句一般都用语句一般都用于两个分支的情况。当有于两个分支的情况。当有于两个分支的情况。当有于两个分支的情况。当有多个分支选择时,可采用多个分支选择时,可采用多个分支选择时,可采用多个分支选择时,可采用if-else-ifif-else-ifif-else-ifif-else-if语句。语句。语句。语句。其语义是:依次判断表达其语义是:依次判断表达其语义是:依次判断表达其语义是:依次判断表达式的值,当出现某个值为式的值,当出现某个

32、值为式的值,当出现某个值为式的值,当出现某个值为真时,则执行其对应的语真时,则执行其对应的语真时,则执行其对应的语真时,则执行其对应的语句。然后跳到整个句。然后跳到整个句。然后跳到整个句。然后跳到整个ifififif语句语句语句语句之外继续执行程序。之外继续执行程序。之外继续执行程序。之外继续执行程序。如果如果如果如果所有的表达式均为假,则所有的表达式均为假,则所有的表达式均为假,则所有的表达式均为假,则执行语句执行语句执行语句执行语句n n n n。然后继续执行。然后继续执行。然后继续执行。然后继续执行后续程序。后续程序。后续程序。后续程序。if(if(表达式表达式1)1)语句语句1 1;e

33、lse if(else if(表达式表达式2)2)语句语句2 2;else if(else if(表达式表达式3)3)语句语句3 3;else if(else if(表达式表达式m)m)语句语句m m;else else 语句语句n n;一般形式为:一般形式为:C语言程序设计基础篇2023年1月16日C语言程序设计基础篇2023年1月16日【例例2.42.4】个人年收入低于个人年收入低于5 5万元,可免个人所得税;万元,可免个人所得税;年收入在年收入在5 5万万1010万元之间,超过万元之间,超过5 5万元的部分交万元的部分交5%5%的的个人所得税;年收入在个人所得税;年收入在1010万元以上

34、则交总收入的万元以上则交总收入的7%7%的的个人所得税。请编写一个程序,根据个人年收入计算个人所得税。请编写一个程序,根据个人年收入计算个人所得税(精确到元)。个人所得税(精确到元)。个个人人年年收收入入和和个个人人所所得得税税分分别别用用整整型型变变量量x x、y y保保存存。根根据据题题意意,个个人人所所得得税税与与个个人人年年收收入入的的关关系系可可用用一一个个分分段段函数表示:函数表示:C语言程序设计基础篇2023年1月16日#includestdio.hincludestdio.hvoid main()void main()int x,y;int x,y;printf(printf(

35、请输入个人年收入:请输入个人年收入:请输入个人年收入:请输入个人年收入:););scanf(%d,&x);scanf(%d,&x);/*/*输入个人年收入输入个人年收入输入个人年收入输入个人年收入*/*/if(x=50 000)if(x=50 000)/*/*个人年收入低于个人年收入低于个人年收入低于个人年收入低于5 5万元万元万元万元*/*/y=0;y=0;else if(x=100 000)else if(x89)if(score89)/*90/*90100100分,积点分,积点分,积点分,积点5*/5*/grade=5;grade=5;else if(score79)else if(sc

36、ore79)/*80/*808989分,积点分,积点分,积点分,积点4*/4*/grade=4;grade=4;else if(score69)else if(score69)/*70/*707979分,积点分,积点分,积点分,积点3*/3*/grade=3;grade=3;else if(score59)else if(score59)/*60/*606969分,积点分,积点分,积点分,积点2*/2*/grade=2;grade=2;else else /*59/*590 0分,积点分,积点分,积点分,积点0*/0*/grade=0;grade=0;printf(printf(成绩成绩成绩成

37、绩%d d的对应积点是的对应积点是的对应积点是的对应积点是%dn,score,grade);dn,score,grade);C语言程序设计基础篇2023年1月16日在使用在使用ifif语句中还应注意以下问题语句中还应注意以下问题在三种形式的在三种形式的在三种形式的在三种形式的ifififif语句中,在语句中,在语句中,在语句中,在ifififif关键字之后均为表达式。关键字之后均为表达式。关键字之后均为表达式。关键字之后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以该表达式通常是逻辑表达式或关系表达式,但也可以该表达式通常是逻辑表达式或关系表达式,但也可以该表达式通常是逻辑表达式或

38、关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个是其它表达式,如赋值表达式等,甚至也可以是一个是其它表达式,如赋值表达式等,甚至也可以是一个是其它表达式,如赋值表达式等,甚至也可以是一个变量。变量。变量。变量。例如:例如:if(a=5)语句;语句;if(b)语句;语句;都是允许的。都是允许的。只要表达式的值为非只要表达式的值为非0,即为,即为“真真”。C语言程序设计基础篇2023年1月16日在在在在ifififif语句的三种形式中,所有的语句应为单个语句,语句的三种形式中,所有的语句应为单个语句,语句的三种形式中,所有的语句应为单个语句,语句的三种形式中,所有的语句应为单个语

39、句,如果要想在满足条件时执行一组如果要想在满足条件时执行一组如果要想在满足条件时执行一组如果要想在满足条件时执行一组(多个多个多个多个)语句,则必语句,则必语句,则必语句,则必须把这一组语句用须把这一组语句用须把这一组语句用须把这一组语句用括起来组成一个复合语句。但括起来组成一个复合语句。但括起来组成一个复合语句。但括起来组成一个复合语句。但要注意的是在要注意的是在要注意的是在要注意的是在 之后不能再加分号。之后不能再加分号。之后不能再加分号。之后不能再加分号。if(xy)x=x+5;y=y+10;else x=10;y=5;例如:例如:在在if语语句句中中,条条件件判判断断表表达达式式必必须

40、须用用括括号号括括起起来来,在语句之后必须加分号。在语句之后必须加分号。例如:例如:if if(b b)语句语句;C语言程序设计基础篇2023年1月16日当当当当ifififif语句中的执行语句又是语句中的执行语句又是语句中的执行语句又是语句中的执行语句又是ifififif语句时,则构成了语句时,则构成了语句时,则构成了语句时,则构成了if if if if 语句嵌套的情形。语句嵌套的情形。语句嵌套的情形。语句嵌套的情形。其一般形式可表示如下:其一般形式可表示如下:其一般形式可表示如下:其一般形式可表示如下:if(if(if(if(表达式表达式表达式表达式)if if if if语句;语句;语

41、句;语句;或者为或者为或者为或者为 if(if(if(if(表达式表达式表达式表达式)if if if if语句;语句;语句;语句;else else else else if if if if语句;语句;语句;语句;在嵌套内的在嵌套内的在嵌套内的在嵌套内的ifififif语句可能又是语句可能又是语句可能又是语句可能又是if-elseif-elseif-elseif-else型的,这将会型的,这将会型的,这将会型的,这将会出现多个出现多个出现多个出现多个ifififif和多个和多个和多个和多个elseelseelseelse重叠的情况,这时要特别注重叠的情况,这时要特别注重叠的情况,这时要特别

42、注重叠的情况,这时要特别注意意意意ifififif和和和和elseelseelseelse的配对问题。的配对问题。的配对问题。的配对问题。C语言程序设计基础篇2023年1月16日例如:例如:例如:例如:if(if(if(if(表达式表达式表达式表达式1)1)1)1)if(if(if(if(表达式表达式表达式表达式2)2)2)2)语句语句语句语句1 1 1 1;elseelseelseelse 语句语句语句语句2 2 2 2;其中的其中的其中的其中的elseelse究竟是与哪一个究竟是与哪一个究竟是与哪一个究竟是与哪一个if if配对呢配对呢配对呢配对呢?应该理解为:应该理解为:if(if(表达

43、式表达式1)1)if(if(表达式表达式2)2)语句语句1 1;elseelse 语句语句2 2;还是应理解为:还是应理解为:if(if(表达式表达式1)1)if(if(表达式表达式2)2)语句语句1 1;elseelse 语句语句2 2;为了避免这种二义性,语言规为了避免这种二义性,语言规定,定,else else 总是与它前面最近的总是与它前面最近的ifif配对,配对,因此对上述例子应按前因此对上述例子应按前一种情况理解。一种情况理解。C语言程序设计基础篇2023年1月16日if-else-ifif-else-ifif-else-ifif-else-if解决多分支问题解决多分支问题解决多分

44、支问题解决多分支问题 -程序冗长而且可读性差程序冗长而且可读性差程序冗长而且可读性差程序冗长而且可读性差 解决办法:解决办法:解决办法:解决办法:-switch-switch开关语句开关语句开关语句开关语句2.2.4 switch多分支结构多分支结构C语言程序设计基础篇2023年1月16日1、switch语句形式:语句形式:switch (表达式)表达式)case 常量常量1:1:语句语句1 1;case 常量常量2:2:语句语句2 2;case 常量常量3:3:语句语句3 3;.case 常量常量n:n:语句语句n n;default:语句语句n+1n+1;根据表达式的不同值,根据表达式的不

45、同值,根据表达式的不同值,根据表达式的不同值,选择不同的程序分支,选择不同的程序分支,选择不同的程序分支,选择不同的程序分支,又称开关语句又称开关语句又称开关语句又称开关语句。常量表达式的值必须常量表达式的值必须互不相同,否则执行互不相同,否则执行时将出现矛盾,即同时将出现矛盾,即同一个开关值,将对应一个开关值,将对应多种执行方案。多种执行方案。千万不千万不能接能接(;)号号C语言程序设计基础篇2023年1月16日2 2、语句执行流程:、语句执行流程:指语句的最指语句的最后一条是否后一条是否为为breakbreak简单语句或简单语句或复合语句复合语句casecase语句出语句出现的次序并现的次

46、序并不影响执行不影响执行结果。结果。breakbreakbreakbreak有有breakbreak有有计算表达式计算表达式常量常量1 1常量常量2 2常量常量n n=语句语句1 1=语句语句2 2语句语句n n其它其它=语句语句n+1n+1值值C语言程序设计基础篇2023年1月16日void main()void main()int n;int n;printf(printf(请输入成绩请输入成绩请输入成绩请输入成绩:););scanf(%d,&n);scanf(%d,&n);switch switch(int)(n/10)(int)(n/10)case 10:case 10:printf(

47、printf(成绩成绩成绩成绩%d d的等级为优秀的等级为优秀的等级为优秀的等级为优秀 n,n);n,n);case 9:case 9:printf(printf(成绩成绩成绩成绩%d d的等级为优秀的等级为优秀的等级为优秀的等级为优秀 n,n);n,n);case 8:case 8:printf(printf(成绩成绩成绩成绩%d d的等级为良好的等级为良好的等级为良好的等级为良好 n,n);n,n);case 7:case 7:printf(printf(成绩成绩成绩成绩%d d的等级为中等的等级为中等的等级为中等的等级为中等 n,n);n,n);case 6:case 6:printf(

48、printf(成绩成绩成绩成绩%d d的等级为及格的等级为及格的等级为及格的等级为及格 n,n);n,n);default:default:printf(printf(成绩成绩成绩成绩%d d的等级为不及格的等级为不及格的等级为不及格的等级为不及格 n,n);n,n);出错啦!?出错啦!?【例【例2.72.7】改写例改写例2.6,用,用switch语句实现对学生成绩进行等语句实现对学生成绩进行等级评定。级评定。C语言程序设计基础篇2023年1月16日 在在在在“switchswitchswitchswitch”语句中,语句中,语句中,语句中,“case case case case 常量表达常

49、量表达常量表达常量表达式式式式”只相当于一个语句标号,表达式的值和某只相当于一个语句标号,表达式的值和某只相当于一个语句标号,表达式的值和某只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但标号相等则转向该标号执行,但标号相等则转向该标号执行,但标号相等则转向该标号执行,但不能在执行完不能在执行完不能在执行完不能在执行完该标号的语句后自动跳出整个该标号的语句后自动跳出整个该标号的语句后自动跳出整个该标号的语句后自动跳出整个switch switch switch switch 语句语句语句语句,因此会继续执行所有后面语句的情况。因此会继续执行所有后面语句的情况。因此会继续执行所有

50、后面语句的情况。因此会继续执行所有后面语句的情况。为此,语言提供了一种为此,语言提供了一种为此,语言提供了一种为此,语言提供了一种breakbreakbreakbreak语句,其语句,其语句,其语句,其功能是可以跳出它所在的功能是可以跳出它所在的功能是可以跳出它所在的功能是可以跳出它所在的switchswitchswitchswitch语句。语句。语句。语句。C语言程序设计基础篇2023年1月16日将上面的例将上面的例2.72.7修改如下:修改如下:void main()void main()int n;int n;printf(printf(请输入成绩请输入成绩请输入成绩请输入成绩:););

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁