《3章--程序控制结构---选择结构.ppt》由会员分享,可在线阅读,更多相关《3章--程序控制结构---选择结构.ppt(83页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1回顾1.1.1.1.在计算机中对数据进行描述:在计算机中对数据进行描述:在计算机中对数据进行描述:在计算机中对数据进行描述:I.I.I.I.数据的基本类型:整型、字符型、浮点类型;数据的基本类型:整型、字符型、浮点类型;数据的基本类型:整型、字符型、浮点类型;数据的基本类型:整型、字符型、浮点类型;II.II.II.II.数据在在内存中的存储形式、取值范围和能够数据在在内存中的存储形式、取值范围和能够数据在在内存中的存储形式、取值范围和能够数据在在内存中的存储形式、取值范围和能够对它进行的操作;对它进行的操作;对它进行的操作;对它进行的操作;III.III.III.III.扩展基本类型:扩展
2、基本类型:扩展基本类型:扩展基本类型:shortshortshortshort、longlonglonglong、unsigned unsigned unsigned unsigned 2.2.2.2.常量:各种整型常量的形式、字符常量、转义字符、常量:各种整型常量的形式、字符常量、转义字符、常量:各种整型常量的形式、字符常量、转义字符、常量:各种整型常量的形式、字符常量、转义字符、符号常量;符号常量;符号常量;符号常量;3.3.3.3.变量:定义格式;变量:定义格式;变量:定义格式;变量:定义格式;4.4.4.4.运算符:运算符:运算符:运算符:1.1.1.1.算术运算符:算术运算符:算术运
3、算符:算术运算符:/、%、+、-;优先级;优先级;优先级;优先级;2.2.2.2.赋值运算符:赋值运算符:赋值运算符:赋值运算符:=,与数学中的等号相区别;,与数学中的等号相区别;,与数学中的等号相区别;,与数学中的等号相区别;2要求:1.1.1.1.深刻理解在计算机中各类型数据在内存中的存储形式、深刻理解在计算机中各类型数据在内存中的存储形式、深刻理解在计算机中各类型数据在内存中的存储形式、深刻理解在计算机中各类型数据在内存中的存储形式、取值范围和能够对它进行的操作;取值范围和能够对它进行的操作;取值范围和能够对它进行的操作;取值范围和能够对它进行的操作;2.2.2.2.深刻理解各基本类型作
4、了深刻理解各基本类型作了深刻理解各基本类型作了深刻理解各基本类型作了 shortshortshortshort、longlonglonglong、unsigned unsigned unsigned unsigned 扩展扩展扩展扩展之后与原类型之间的区别;之后与原类型之间的区别;之后与原类型之间的区别;之后与原类型之间的区别;3.3.3.3.深刻理解各种整型常量的形式,字符常量、转义字符深刻理解各种整型常量的形式,字符常量、转义字符深刻理解各种整型常量的形式,字符常量、转义字符深刻理解各种整型常量的形式,字符常量、转义字符和符号常量的意义和作用。和符号常量的意义和作用。和符号常量的意义和作用
5、。和符号常量的意义和作用。4.4.4.4.熟练掌握每一种变量的定义格式;熟练掌握每一种变量的定义格式;熟练掌握每一种变量的定义格式;熟练掌握每一种变量的定义格式;5.5.5.5.深刻理解每一个算术运算符的功能、使用格式、计算深刻理解每一个算术运算符的功能、使用格式、计算深刻理解每一个算术运算符的功能、使用格式、计算深刻理解每一个算术运算符的功能、使用格式、计算结果,尤其是结果,尤其是结果,尤其是结果,尤其是 /、%、+、-;6.6.6.6.深刻理解赋值运算符(深刻理解赋值运算符(深刻理解赋值运算符(深刻理解赋值运算符(=)的意义、注意与数学中的等)的意义、注意与数学中的等)的意义、注意与数学中
6、的等)的意义、注意与数学中的等号相区别;复合赋值运算符的执行过程和执行结果。号相区别;复合赋值运算符的执行过程和执行结果。号相区别;复合赋值运算符的执行过程和执行结果。号相区别;复合赋值运算符的执行过程和执行结果。练练习习34一、选择题:一、选择题:1.1.以下叙述中正确的是:以下叙述中正确的是:(a)C程序由主函数组成程序由主函数组成(b)C程序由函数组成程序由函数组成(c)C程序由函数和过程组成程序由函数和过程组成(d)C程序由子函数组成程序由子函数组成52.2.以下不能正确表示算式以下不能正确表示算式以下不能正确表示算式以下不能正确表示算式 的是:的是:的是:的是:(a)(a*b)/c*
7、d(b)a*b/(c*d)(a)(a*b)/c*d(b)a*b/(c*d)(c)a/c*b/d(d)a*b/c/d(c)a/c*b/d(d)a*b/c/d解答:解答:1)1)cc语言中表达式的计算是按算符的优先级来进行语言中表达式的计算是按算符的优先级来进行语言中表达式的计算是按算符的优先级来进行语言中表达式的计算是按算符的优先级来进行的。的。的。的。abcd63.3.以下的变量定义中合法以下的变量定义中合法以下的变量定义中合法以下的变量定义中合法 的是:的是:的是:的是:(a)float3_four=3.4;(a)float3_four=3.4;(b)int_abc_=22;(b)int_a
8、bc_=22;(c)doublea=1+4e2.0;(c)doublea=1+4e2.0;(d)shortdo=15;(d)shortdo=15;74.C4.C语言中运算对象必须是整型的运算符是:语言中运算对象必须是整型的运算符是:语言中运算对象必须是整型的运算符是:语言中运算对象必须是整型的运算符是:(a)%=(b)/(a)%=(b)/(c)=(d)*(c)=(d)*“必须是整型必须是整型必须是整型必须是整型”:确切地说应该是不能是确切地说应该是不能是确切地说应该是不能是确切地说应该是不能是floatfloat型型型型85.若有若有intk=11;则表达式;则表达式(k+*1/3)的值是:的
9、值是:(a)0(b)3(a)0(b)3(c)11(d)12(c)11(d)12执行过表达式后执行过表达式后执行过表达式后执行过表达式后k k的值是:的值是:的值是:的值是:1212二、填空:二、填空:9101.一个一个C程序必须有一个程序必须有一个_函数一个函数一个C程序必定从程序必定从_函数开始执行。函数开始执行。主主112.C语言中的标识符可分为语言中的标识符可分为_、_和和预定义标识符预定义标识符三类。三类。关键字用户标识符预定义标识符:系统定义的、用于贬义预处理命令中的标识符。预定义标识符:系统定义的、用于贬义预处理命令中的标识符。预定义标识符:系统定义的、用于贬义预处理命令中的标识符
10、。预定义标识符:系统定义的、用于贬义预处理命令中的标识符。如:include、define等123.C语言程序中的数据,在计算机内存储器中语言程序中的数据,在计算机内存储器中最小的存储单位称为最小的存储单位称为_,其中只能存,其中只能存放放_进制数。进制数。位二132.5数据的输出和输入数据的输出和输入14输出和输入输出和输入输出输出计算机向外部输出设备计算机向外部输出设备(显示器显示器,打印机打印机等等)输出数据输出数据输入输入从输入设备从输入设备(键盘键盘,鼠标鼠标,扫描仪等扫描仪等)向计算向计算机输入数据机输入数据C C语言本身不提供输入输出语句语言本身不提供输入输出语句,输入和输出操输
11、入和输出操作是由作是由C C函数库中的函数来实现的函数库中的函数来实现的在使用系统库函数时在使用系统库函数时,要用预编译命令要用预编译命令“#include#include”包含有关的头文件包含有关的头文件#include/#include/标准输入输出库函数标准输入输出库函数15 格式输出函数格式输出函数printfprintfprintfprintf函数一般格式:函数一般格式:printf(printf(格式控制,输出表列格式控制,输出表列)格式控制格式控制是由双引号括起来的字符串,它包含三种信息:是由双引号括起来的字符串,它包含三种信息:格式说明格式说明:由:由“%”和格式字符组成,如和
12、格式字符组成,如%d%d,%f%f等。它等。它的作用是将输出的数据按照指定的格式输出。的作用是将输出的数据按照指定的格式输出。普通字符普通字符:需要原样输出的字符。:需要原样输出的字符。转义字符转义字符:用于控制输出。:用于控制输出。输出表列输出表列是一些要输出的数据。是一些要输出的数据。普通字符普通字符 输出表列输出表列 printf(printf(“sum=%dnsum=%dn”,sum);sum);格式说明格式说明 转义字符转义字符 printf(%d,%dn,a,b);printf(%d,%dn,a,b);16格式说明项格式说明项:由:由“%”与格式字符组成,其作用是将数据转换为与格式
13、字符组成,其作用是将数据转换为指定的格式输出,按不同类型的数据有以下不同的格式字符:指定的格式输出,按不同类型的数据有以下不同的格式字符:%d%d、%ld%ld,按整型数据的实际长度输出。,按整型数据的实际长度输出。%md%md、%mld%mld,m m为指定的输出字段的宽度,如数据的位数小于为指定的输出字段的宽度,如数据的位数小于m m,则左端补空;若数据位数大于,则左端补空;若数据位数大于m m,则按实际长度输出。,则按实际长度输出。%c%c:用于输出一个字符。:用于输出一个字符。%f%f:用于以小数形式输出实数(包括单、双精度);:用于以小数形式输出实数(包括单、双精度);%m.nf%m
14、.nf、%m.nlf%m.nlf,指定输出的数据共占,指定输出的数据共占 m m 位,其中包括位,其中包括 n n 位位小数,如数据的位数小于小数,如数据的位数小于m m,则左端补空;若数据位数大于,则左端补空;若数据位数大于m m,按,按实际长度输出。小数位数被截断时按四舍五入输出。实际长度输出。小数位数被截断时按四舍五入输出。格式输出函数格式输出函数printfprintf17int a=-1,b=25,c=125;int a=-1,b=25,c=125;long x=356142;long x=356142;printf(%d,%5dn,a,b);printf(%d,%5dn,a,b);
15、printf(%5d,%2dn,c,c);printf(%5d,%2dn,c,c);printf(%ld,%dn,x,x);printf(%ld,%dn,x,x);输出结果为:输出结果为:例例2.5.12.5.1:18格式输入函数格式输入函数scanfscanf scanfscanf函数一般格式:函数一般格式:scanf(scanf(格式控制,地址表列格式控制,地址表列)scanfscanf函数的功能是按照指定的格式输入数据,可以函数的功能是按照指定的格式输入数据,可以输入任意类型的多个数据。输入任意类型的多个数据。格式控制格式控制与与printfprintf函数含义相同,它由若干个格式函数含
16、义相同,它由若干个格式说明构成,其作用是控制转换输入数据的类型。说明构成,其作用是控制转换输入数据的类型。地址表列地址表列由若干个由若干个地址地址构成,它们可以是变量的地构成,它们可以是变量的地址,也可以是字符串的首地址。址,也可以是字符串的首地址。19标准格式标准格式输入函数的功能:输入函数的功能:scanf scanf 函数可以从标准输入设备输入任意类函数可以从标准输入设备输入任意类型的多个数据(一般为键盘),存入指定型的多个数据(一般为键盘),存入指定的变量单元中。的变量单元中。例:例:scanfscanf(“%d%d,%f%f”,&a a,&b b););意味着从键盘读入两个数据,分别
17、存入变量意味着从键盘读入两个数据,分别存入变量意味着从键盘读入两个数据,分别存入变量意味着从键盘读入两个数据,分别存入变量a a a a和和和和b b b b中。中。中。中。%d%d%d%d:按十进制整数格式读入;:按十进制整数格式读入;:按十进制整数格式读入;:按十进制整数格式读入;%f%f%f%f:按十进制整数格式读入;:按十进制整数格式读入;:按十进制整数格式读入;:按十进制整数格式读入;20格式格式输入函数输入函数 scanf scanf scanf scanf 中格式控制串的格式应与地址表列中变量的中格式控制串的格式应与地址表列中变量的中格式控制串的格式应与地址表列中变量的中格式控制
18、串的格式应与地址表列中变量的顺序相一致;顺序相一致;顺序相一致;顺序相一致;scanf scanf scanf scanf 中格式控制串的格式应与输入数据的格式相中格式控制串的格式应与输入数据的格式相中格式控制串的格式应与输入数据的格式相中格式控制串的格式应与输入数据的格式相一致;一致;一致;一致;当语句格式如下时:当语句格式如下时:当语句格式如下时:当语句格式如下时:scanfscanfscanfscanf(“%d%d%d%d,%f%f%f%f”,&a a a a,&b b b b););););输入数据的格式应为:输入数据的格式应为:输入数据的格式应为:输入数据的格式应为:12121212
19、,3.143.143.143.14 如果语句写成:如果语句写成:如果语句写成:如果语句写成:scanfscanfscanfscanf(“%d%f%d%f%d%f%d%f”,&a&a&a&a,&b&b&b&b););););输入数据的格式应为:输入数据的格式应为:输入数据的格式应为:输入数据的格式应为:12 3.1412 3.1412 3.1412 3.14思考:如何分隔数据思考:如何分隔数据?用隐含的分隔符用隐含的分隔符:在输入数据中用空格或换行符分隔数据。在输入数据中用空格或换行符分隔数据。scanf(%d%d%d,&a,&b,&c);scanf(%d%d%d,&a,&b,&c);输入数据输
20、入数据 3 4 53 4 5 或输入或输入 3 3 4 5 4 5 则则a=3,b=4,c=5a=3,b=4,c=5使用显示分隔符使用显示分隔符:在格式说明符中还可以有其它字符,在输在格式说明符中还可以有其它字符,在输入字符时应输入与这些字符相同的字符。入字符时应输入与这些字符相同的字符。scanf(%d,%d,%d,&a,&b,&c);scanf(%d,%d,%d,&a,&b,&c);输入数据输入数据 3,4,53,4,5 则则 a=3,b=4,c=5a=3,b=4,c=5 21222.6数学函数数学函数23数学函数数学函数使用使用数学库中的函数时,应该首先用预处理命令数学库中的函数时,应该
21、首先用预处理命令#include#include 指明要用到的数学函数的描述所在的头文件。指明要用到的数学函数的描述所在的头文件。调用调用数学函数时,要给出函数名,后面是一对圆括号,括数学函数时,要给出函数名,后面是一对圆括号,括号内是使用函数所需的参数,参数可以是常量、变量或表号内是使用函数所需的参数,参数可以是常量、变量或表达式。达式。例例2.6.12.6.1:计算并打印:计算并打印2 2的的3 3次方的语句可以写成:次方的语句可以写成::printf(printf(“%7.2f%7.2f”,pow(2.0,3.0);,pow(2.0,3.0);调用的数学函数调用的数学函数powpow需要
22、两个参数,这两个参数都是需要两个参数,这两个参数都是 double double型的,返回值也是型的,返回值也是doubledouble型的型的 语句执行结果为:打印语句执行结果为:打印 8.008.00。24常用数学函数常用数学函数函函 数数 名名功功 能能举举 例例fabs(x)fabs(x)计算计算x x的绝对值的绝对值fabs(-3.5)fabs(-3.5)等于等于3.53.5sqrt(x)sqrt(x)计算计算x x的非负平方根的非负平方根sqrt(16.0)sqrt(16.0)等于等于4.04.0exp(x)exp(x)计算指数函数计算指数函数e ex xexp(1.0)exp(1
23、.0)等于等于2.718282.71828log(x)log(x)计算计算x x的自然对数的自然对数ln xln xlog(2.718282)log(2.718282)等于等于1.01.0log10(x)log10(x)计算以计算以1010为底的对数函数为底的对数函数loglog1010 x xLog10(10.0)Log10(10.0)等于等于1.01.0powpow(x,yx,y)计算计算x xy ypow(2.0,3.0)pow(2.0,3.0)等于等于8.08.0sin(x)sin(x)正弦函数正弦函数sin(0.0)sin(0.0)等于等于0.00.0cos(x)cos(x)余弦函数
24、余弦函数cos(0.0)cos(0.0)等于等于1.01.025第第3章章 程序控制结构程序控制结构26教学目标教学目标学习三种结构的程序设计方法学习三种结构的程序设计方法学习三种结构的程序设计方法学习三种结构的程序设计方法n n顺序结构程序设计顺序结构程序设计顺序结构程序设计顺序结构程序设计n n选择结构程序设计选择结构程序设计选择结构程序设计选择结构程序设计n n循环结构程序设计循环结构程序设计循环结构程序设计循环结构程序设计掌握每一种语句的格式、功能、执行过程和执行结掌握每一种语句的格式、功能、执行过程和执行结掌握每一种语句的格式、功能、执行过程和执行结掌握每一种语句的格式、功能、执行过
25、程和执行结果,并学习如何将这些语句组织成程序果,并学习如何将这些语句组织成程序果,并学习如何将这些语句组织成程序果,并学习如何将这些语句组织成程序学习逻辑问题的解题思路,及递推、迭代的方法学习逻辑问题的解题思路,及递推、迭代的方法学习逻辑问题的解题思路,及递推、迭代的方法学习逻辑问题的解题思路,及递推、迭代的方法27三种控制结构三种控制结构顺序结构顺序结构选择结构选择结构循环结构循环结构ABBAPyesyesnonononoPAyesyes28顺序结构程序设计顺序结构程序设计实现顺序结构的语句实现顺序结构的语句顺序结构的程序中的语句是按照从上到下顺序结构的程序中的语句是按照从上到下的顺序逐行排
26、列的;的顺序逐行排列的;程序的执行顺序是按语句的排列顺序进行程序的执行顺序是按语句的排列顺序进行的。的。完成顺序程序设计的语句包括:完成顺序程序设计的语句包括:赋值语句赋值语句赋值语句赋值语句复合语句复合语句复合语句复合语句函数调用语句函数调用语句函数调用语句函数调用语句2930由一组语句组成,并放在一对花括号由一组语句组成,并放在一对花括号由一组语句组成,并放在一对花括号由一组语句组成,并放在一对花括号“”中间中间中间中间 语句格式:语句格式:语句格式:语句格式:第第第第1 1条语句;条语句;条语句;条语句;第第第第n n条语句;条语句;条语句;条语句;复合语句复合语句复合语句复合语句 整个
27、整个整个整个 main main main main 程序就是一个大的复合语句。程序就是一个大的复合语句。程序就是一个大的复合语句。程序就是一个大的复合语句。复合语句是一个整体,在语法结构上与一复合语句是一个整体,在语法结构上与一复合语句是一个整体,在语法结构上与一复合语句是一个整体,在语法结构上与一个单一语句相同。个单一语句相同。个单一语句相同。个单一语句相同。函数调用语句函数调用语句C C 程序中,需要使用很多复杂的功能,例如程序中,需要使用很多复杂的功能,例如:输入数据、输出数据、数学公式的使用输入数据、输出数据、数学公式的使用(sin(x)sin(x)、cos(x)cos(x)、e e
28、x x 等)。等)。这些功能的使用是通过这些功能的使用是通过函数调用函数调用来实现的。来实现的。系统把一些独立的功能编制成标准函数,提系统把一些独立的功能编制成标准函数,提供给使用者调用的格式。供给使用者调用的格式。两个最常用的标准函数:两个最常用的标准函数:格式输出函数格式输出函数 格式输入函数格式输入函数3132例:设例:设例:设例:设19901990年我国工业产值是年我国工业产值是年我国工业产值是年我国工业产值是100100,如果每年以,如果每年以,如果每年以,如果每年以7.4%7.4%的速度增长,求的速度增长,求的速度增长,求的速度增长,求2020年后我国的工业产值是多少?年后我国的工
29、业产值是多少?年后我国的工业产值是多少?年后我国的工业产值是多少?1.1.1.1.分析:分析:计算产值的公式是:计算产值的公式是:计算产值的公式是:计算产值的公式是:2.2.2.2.安排计算步骤安排计算步骤3.3.3.3.写出完整的程序写出完整的程序p p1 1=p=p0 0(1+r1+r)n n其中:其中:其中:其中:p p1 1为为为为n n年后的产值,年后的产值,年后的产值,年后的产值,p p0 0为初始值,为初始值,为初始值,为初始值,r r为增长率,为增长率,为增长率,为增长率,nn为年数。为年数。为年数。为年数。332.解决问题的步骤:解决问题的步骤:1)1)1)1)定义变量定义变
30、量定义变量定义变量:2)2)输入:输入:输入:输入:p0p0,n n,r r;3)3)计算计算计算计算 p1p1;4)4)输出输出输出输出 p1p1;floatp1,p0,r;p p1 1=p=p0 0(1+r1+r)n n其中:其中:其中:其中:p p1 1为为为为n n年后的产值,年后的产值,年后的产值,年后的产值,p p0 0为初为初为初为初始值,始值,始值,始值,r r为增长率,为增长率,为增长率,为增长率,nn为年数。为年数。为年数。为年数。intn;343.写出完整程序写出完整程序:/*/*功能:计算工业产值功能:计算工业产值功能:计算工业产值功能:计算工业产值*/#include
31、#include#include#includevoidmainvoidmain()()()()intn;intn;floatp0,p1,r;floatp0,p1,r;scanfscanf(%d,%f,%f,&n,&p0,&r%d,%f,%f,&n,&p0,&r);p1=p0*powp1=p0*pow(1+r,n1+r,n);printfprintf(p1=%10.4fn,p1p1=%10.4fn,p1);p p1 1=p=p0 0(1+r1+r)n n35选择结构程序设计选择结构程序设计36如果小明一分钟跳绳多于如果小明一分钟跳绳多于6060,那么,那么他的体育成绩为他的体育成绩为A,A,否
32、则为否则为B B引例:引例:声明变量:声明变量:float total;float total;char score;char score;total60score=A;score=B;结束结束YN步骤图解:步骤图解:需要选择需要选择结构描述结构描述37选择结构需要解决的两个问题选择结构需要解决的两个问题2.2.控制结构的控制结构的结构描述结构描述条件表示描述方法条件表示描述方法逻辑表达式逻辑表达式关系表达式关系表达式1.1.控制选择结构执行方向的控制选择结构执行方向的条件表示条件表示if语句语句switch语句语句实现选择结构的语句实现选择结构的语句38关系表达式概念:关系表达式概念:用关系
33、运算符将两个表达式用关系运算符将两个表达式用关系运算符将两个表达式用关系运算符将两个表达式(可以是算术表(可以是算术表(可以是算术表(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式)达式、关系表达式、赋值表达式或逻辑表达式)达式、关系表达式、赋值表达式或逻辑表达式)达式、关系表达式、赋值表达式或逻辑表达式)连接起来的式子,称为关系表达式。连接起来的式子,称为关系表达式。连接起来的式子,称为关系表达式。连接起来的式子,称为关系表达式。关系运算符:关系运算符:一、关系运算符和关系表达式一、关系运算符和关系表达式=!=!=高高高高低低低低优先级优先级优先级优先级关系运算符的优先级低于算数运算符
34、关系运算符的优先级低于算数运算符!39关系表达式的值为逻辑值关系表达式的值为逻辑值关系表达式的值为逻辑值关系表达式的值为逻辑值“真真真真”或或或或“假假假假”,以以以以1 1 1 1代表代表代表代表“真真真真”,以,以,以,以0 0 0 0代表代表代表代表“假假假假”。例例例例:关系表达式关系表达式关系表达式关系表达式“8=48=48=48=4”的值为的值为的值为的值为“假假假假”,表达式的,表达式的,表达式的,表达式的 值为值为值为值为0 0 0 0。关系表达式关系表达式关系表达式关系表达式“50505050”的值为的值为的值为的值为“真真真真”,表达式的,表达式的,表达式的,表达式的 值为
35、值为值为值为1 1 1 1。关系表达式关系表达式40例例3.13.1:a a b b!=!=c c 等价于等价于 (abab)!=c!=c c c a a-b b 等价于等价于 c(a-b)c(a-b)a a=b b c c 等价于等价于 a=a=(bcbc)例例3.23.2:int a=0,b=1,c=2;:int a=0,b=1,c=2;a a=c c 值为?值为?a a=c c=EPSINON)设法转换成设法转换成“=”或或“=”不要混淆!不要混淆!42逻辑表达式概念:逻辑表达式概念:逻辑表达式概念:逻辑表达式概念:由由由由逻逻逻逻辑辑辑辑运运运运算算算算符符符符和和和和运运运运算算算算
36、量量量量所所所所构构构构成成成成的的的的式式式式子子子子,其其其其中中中中运运运运算算算算量量量量主主主主要要要要有有有有关关关关系系系系表表表表达达达达式式式式和和和和逻逻逻逻辑辑辑辑量量量量两两两两种种种种,也也也也可可可可以以以以是是是是C C C C中任意合法表达式。中任意合法表达式。中任意合法表达式。中任意合法表达式。逻辑运算符逻辑运算符逻辑运算符逻辑运算符二、逻辑运算符和逻辑表达式二、逻辑运算符和逻辑表达式|(逻辑或)(逻辑或)(逻辑或)(逻辑或)&(逻辑与)(逻辑与)(逻辑与)(逻辑与)!(逻辑非)(逻辑非)(逻辑非)(逻辑非)高高高高低低低低优先级优先级优先级优先级结合性结合性
37、结合性结合性从左从左向右向右43真真 真真 假假 假假 真真 真真真真 假假 假假 真真 假假 真真假假 真真 真真 假假 假假 真真假假 假假 真真 真真 假假 假假ab!a!ba&ba|b逻辑运算的真值表逻辑运算的真值表44注:注:注:注:1 1 1 1、C C C C语言编译系统语言编译系统语言编译系统语言编译系统以数值以数值以数值以数值1 1 1 1代表代表代表代表“真真真真”,以,以,以,以0 0 0 0 代表代表代表代表“假假假假”;2 2 2 2、若逻辑运算符左右连接的不是逻辑量或、若逻辑运算符左右连接的不是逻辑量或、若逻辑运算符左右连接的不是逻辑量或、若逻辑运算符左右连接的不是
38、逻辑量或 关系表达式时,关系表达式时,关系表达式时,关系表达式时,C C C C语言编译系统以语言编译系统以语言编译系统以语言编译系统以其值非其值非其值非其值非 0 0 0 0代表代表代表代表“真真真真”,以,以,以,以0 0 0 0代表代表代表代表“假假假假”。例例例例3.43.43.43.4:若若若若x=-10,x=-10,x=-10,x=-10,则则则则 !x!x!x!x的值为的值为的值为的值为0 0 0 0。若若若若a=3,b=2,a=3,b=2,a=3,b=2,a=3,b=2,则则则则a&ba&ba&ba&b的值为的值为的值为的值为1 1 1 1。5&0|85&0|85&0|85&0
39、|8的值为的值为的值为的值为1 1 1 1。45逻辑运算符的特点逻辑运算符的特点特点:特点:特点:特点:在逻辑表达式的求解中并不是所有的运算符都在逻辑表达式的求解中并不是所有的运算符都在逻辑表达式的求解中并不是所有的运算符都在逻辑表达式的求解中并不是所有的运算符都被执行,只是在必须执行下一个逻辑运算符才能求被执行,只是在必须执行下一个逻辑运算符才能求被执行,只是在必须执行下一个逻辑运算符才能求被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行下一个运算符。出表达式的解时,才执行下一个运算符。出表达式的解时,才执行下一个运算符。出表达式的解时,才执行下一个运算符。例例例例3.5:
40、3.5:3.5:3.5:a&b&ca&b&ca&b&ca&b&c 只有只有只有只有a a a a的值为逻辑真时,才计算的值为逻辑真时,才计算的值为逻辑真时,才计算的值为逻辑真时,才计算b b b b的值;的值;的值;的值;也只有也只有也只有也只有a a a a与与与与b b b b的值都为逻辑真时,才计算的值都为逻辑真时,才计算的值都为逻辑真时,才计算的值都为逻辑真时,才计算c c c c的值;的值;的值;的值;例例例例3.6:3.6:3.6:3.6:a|b|ca|b|ca|b|ca|b|c 只有只有只有只有a a a a的值为逻辑假时,才计算的值为逻辑假时,才计算的值为逻辑假时,才计算的值为
41、逻辑假时,才计算b b b b的值;的值;的值;的值;也只有也只有也只有也只有a a a a与与与与b b b b的值都为逻辑假时,才计算的值都为逻辑假时,才计算的值都为逻辑假时,才计算的值都为逻辑假时,才计算c c c c的值;的值;的值;的值;46例例例例3.7:3.7:3.7:3.7:#include#include#include#include void main()void main()void main()void main()int x,a=0,b=1,c=2;int x,a=0,b=1,c=2;int x,a=0,b=1,c=2;int x,a=0,b=1,c=2;x=a&b
42、&c;x=a&b&c;x=a&b&c;x=a&b&c;printf(“x=%d,a=%d,b=%d,c=%dn”,x,a,b,c);printf(“x=%d,a=%d,b=%d,c=%dn”,x,a,b,c);printf(“x=%d,a=%d,b=%d,c=%dn”,x,a,b,c);printf(“x=%d,a=%d,b=%d,c=%dn”,x,a,b,c);二、逻辑运算符和逻辑表达式二、逻辑运算符和逻辑表达式x=0,a=0,b=1,c=2等效于等效于等效于等效于(a+)&(b+)&(c+)(a+)&(b+)&(c+)(a+)&(b+)&(c+)(a+)&(b+)&(c+)思考:思考:思考
43、:思考:x=a+&b+&c+;x=a+&b+&c+;x=a+&b+&c+;x=a+&b+&c+;x=0,a=1,b=1,c=247!(非)!(非)!(非)!(非)算术运算符算术运算符算术运算符算术运算符关系运算符关系运算符关系运算符关系运算符&|赋值运算符赋值运算符赋值运算符赋值运算符各种运算符优先级:各种运算符优先级:高高高高低低低低例例例例3.83.83.83.8:1.1.1.1.xy&mnxy&mn等效于等效于等效于等效于(xyxy)&(mnmc!a&bc 等效于等效于等效于等效于(!a!a)&(bcbc)4.4.4.4.53&4|83)&4)|(8bab的值为的值为0(m=ab)0(m
44、=ab)值为值为00 表达式表达式(m=ab)&(n=cd)(m=ab)&(n=cd)的值为的值为0 0 运算就此结束,不再进行运算就此结束,不再进行(n=cd)(n=cd)的运算的运算结果:结果:m m为为0 0,n n为为1 1例例3.10:3.10:假设假设a=5a=5、b=10b=10、c=15c=15、d=20d=20,求逻辑表达式的结,求逻辑表达式的结果果 !a|(ab)+1&cb)+1&cb)+1&cb)+1&cb)+1&cb)+1&c10)+1&c10)+1&cd 0|0+1&cd 0|1&cd 0|0+1&cd 0|1&cd 0|1&1520 0|1&1 0|1 1 0|1&
45、15b)&(n=cd)(m=ab)&(n=cd)后后m m和和n n的值各为多少?的值各为多少?!(非)!(非)!(非)!(非)算术运算符算术运算符算术运算符算术运算符关系运算符关系运算符关系运算符关系运算符&|赋值运算符赋值运算符赋值运算符赋值运算符49选择结构选择结构 if if 语句语句 ifif语句、语句、if-elseif-else语句、语句、elseelseifif语句语句 switchswitch语句语句(多分支语句)(多分支语句)选择结构通过选择结构通过条件控制语句条件控制语句来实现,选择来实现,选择结构包括:结构包括:if-elseif-else结构和结构和switch-ca
46、seswitch-case结构结构50ifelse ifelse ifelse ifelse ifififif(表达式(表达式(表达式(表达式1 1 1 1)语句)语句)语句)语句1 1 1 1;else ifelse ifelse ifelse if(表达式(表达式(表达式(表达式2 2 2 2)语句)语句)语句)语句2 2 2 2;else ifelse ifelse ifelse if(表达式(表达式(表达式(表达式m m m m)语句)语句)语句)语句m m m m;else else else else 语句语句语句语句 n;n;n;n;ifififif(表达式)语句(表达式)语句(
47、表达式)语句(表达式)语句1 1 1 1;else else else else 语句语句语句语句2 2 2 2;elseifelseifelseifelseif if if if if ifififif(表达式)语句;(表达式)语句;(表达式)语句;(表达式)语句;if if 语句语句 51if if 语句:语句:ifififif(表达式表达式表达式表达式)语句语句语句语句;根据给定的条件进行判断,以决定执行某个分支根据给定的条件进行判断,以决定执行某个分支根据给定的条件进行判断,以决定执行某个分支根据给定的条件进行判断,以决定执行某个分支程序段。程序段。程序段。程序段。表达式表达式表达式表
48、达式一般为逻辑表达式或关系表达式;也可以一般为逻辑表达式或关系表达式;也可以一般为逻辑表达式或关系表达式;也可以一般为逻辑表达式或关系表达式;也可以为其它表达式或变量,这时表达式值为非为其它表达式或变量,这时表达式值为非为其它表达式或变量,这时表达式值为非为其它表达式或变量,这时表达式值为非0 0 0 0值时表示值时表示值时表示值时表示“真真真真”。语句语句语句语句可以是单条语句,也可以是复合语句(语句可以是单条语句,也可以是复合语句(语句可以是单条语句,也可以是复合语句(语句可以是单条语句,也可以是复合语句(语句块)组成;还可以是块)组成;还可以是块)组成;还可以是块)组成;还可以是ifif
49、ifif语句,称语句,称语句,称语句,称ifififif语句嵌套语句嵌套语句嵌套语句嵌套复合语句复合语句52if if 形式:形式:ifififif(表达式)语句;(表达式)语句;(表达式)语句;(表达式)语句;1.1.计算表达式的值;计算表达式的值;计算表达式的值;计算表达式的值;2.2.如果表达式的值非如果表达式的值非如果表达式的值非如果表达式的值非零,则执行语句;零,则执行语句;零,则执行语句;零,则执行语句;3.3.如果表达式的值为如果表达式的值为如果表达式的值为如果表达式的值为零,则执行零,则执行零,则执行零,则执行ifififif语句语句语句语句后的一条语句。后的一条语句。后的一条
50、语句。后的一条语句。执行流程:执行流程:53例例3.11:输出成绩高于输出成绩高于输出成绩高于输出成绩高于 90 90 分的学生成绩和学号分的学生成绩和学号分的学生成绩和学号分的学生成绩和学号格式:格式:格式:格式:ifififif(score 90score 90score 90score 90)printfprintfprintfprintf(“%s%dn%s%dn%s%dn%s%dn”,NoNoNoNo,scorescorescorescore););););执行过程:执行过程:执行过程:执行过程:1.1.1.1.计算表达式计算表达式计算表达式计算表达式 score 90score 90