《C程序设计简明教程》-王晓东-电子教案 第4章 选择结构

上传人:E**** 文档编号:89400171 上传时间:2019-05-24 格式:PPT 页数:47 大小:507.50KB
返回 下载 相关 举报
《C程序设计简明教程》-王晓东-电子教案 第4章 选择结构_第1页
第1页 / 共47页
《C程序设计简明教程》-王晓东-电子教案 第4章 选择结构_第2页
第2页 / 共47页
《C程序设计简明教程》-王晓东-电子教案 第4章 选择结构_第3页
第3页 / 共47页
《C程序设计简明教程》-王晓东-电子教案 第4章 选择结构_第4页
第4页 / 共47页
《C程序设计简明教程》-王晓东-电子教案 第4章 选择结构_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《《C程序设计简明教程》-王晓东-电子教案 第4章 选择结构》由会员分享,可在线阅读,更多相关《《C程序设计简明教程》-王晓东-电子教案 第4章 选择结构(47页珍藏版)》请在金锄头文库上搜索。

1、1/47,第四章 选择结构程序设计,2/47,4.1 关系运算符和关系表达式,1、关系运算符,种类:= != 结合方向:自左向右 优先级别:,例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc),关系表达式的值:是逻辑值“真”或“假”,用1和0表示,例 int a=3,b=2,c=1,d,f;float x=2.5,y=3.5 ab (ab)=c b+cb f=abc a=b=c a*=b=c=2 b+=c ab?a:cd?c:d x+a%3*(int)(x+y)%2/4+sizeof(int) a+b,18+(b=4)*3,(a/b,a%b) +a-c+b +

2、a-c+b+ a+=a-=a*=a (loat)(a+c)/2+(int)x%(int)y a%=(b%=3),/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,3/47,例 若a=0; b=0.5; x=0.3; 则 a=x=b的值为,例 5278在C中是允许的, 值为,0,例 a0 结果为 A100 结果为,1,0,0,例 int i=1, j=7,a; a=i+(j%4!=0); 则a=,2,例 注意区分“=”与“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);,4

3、/47,4.2 逻辑运算符和逻辑表达式,逻辑运算符 种类: ! & | 逻辑运算真值表,C语言中,运算量: 0表示“假”, 非0表示“真”, 运算结果: 0表示“假”, 1表示“真”,5/47,优先级:,结合方向:,6/47,例4-1:,int a=5; float b=3.5;,!a,0,!b,0,a&b,1,a|b,1,!a&!b,0,7/47,注意,短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,8/47,问题提出:,计算分段函数:,C语言用来设计条件选择结构程序的选择语句有两种: if语句、switch语句。

4、,9/47,4.3 if语句,if语句(条件选择语句) if语句的三种形式 形式一: 格式:if (expression) statement 执行过程:,expr,statement,非0,=0,形式二: 格式:if (expression) statement1 else statement2 执行过程:,例:if (xy) max=x; else max=y;,例:if (xy) printf(“%d”,x);,10/47,例4-4:从键盘输入两个整数a和b,如果a大于b则交换两数,最后输出两个数。,#include ,输入a,b,ab,交换a、b,输出,结束,真,假,void main

5、() int a,b,t; scanf(“%d,%d“,if(ab) t=a;a=b;b=t;,printf(“a=%d,b=%dn“,a,b); ,11/47,注意:,(1)if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号将需要执行的多个语句括起,形成一个复合语句。,(2)if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。,12/47,例4-5 输入两个整数,输出其中较大的数。,#include #include ,void main() int x,y,max; scanf(“%d,%d“,i

6、f(xy) max=x; else max=y;,printf(“max=%dn“,max); ,输入x,y,xy,max=x,输出最大值,结束,真,假,max=y,13/47,注意,if和else语句之间只能有一个语句,当ifelse之间的语句不只一句时,应用一对将语句括起。,if(ab) a+;b+; else a=0;b=10;,14/47,形式三: 格式:,if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . else statementn ,执行过程:,例:if (salar

7、y1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0;,15/47,例4-6:计算分段函数。,16/47,#include ,void main() float x,y; printf(“enter x:“); scanf(“ %f “,else if (x=1) y=x+5; else if (x10) y=2*x; else y=3/(x-10);,printf(“x=%.2f,y=%.2fn“,x

8、,y); ,计算分段函数程序,if(x=10) printf(“not define x.n“);,17/47,例4-7 输入10个字符,统计其中英文字母、空格或回车、数字和其他字符的个数。,输入c,c=英文,打印,c=数字,c= 或c=n,1,1,1,0,0,0,停,letter+,digit+,blank+,other+,letter=digit=blank=other=0;i=1,i=10,i+,1,0,18/47,#include void main( ) int blank, digit, i, letter, other; char ch; blank=digit=letter=o

9、ther=0; printf(“input 10 characters: “); for(i=1;i=a ,input 10 characters: Reold 123? letter=5, blank=1, digit=3, other=1,程序中涉及: 字符类型 字符输入输出 逻辑运算符,19/47,说明: if后面的表达式类型任意,语句可以是复合语句 if(x) if(x!=0) if(!x) if(x=0),如:if(a=b,例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”, ,Compile Error!,20/47,#inc

10、lude main() int x,y; printf(“Enter an integer:“); scanf(“%d“, ,例 求一个数的绝对值,运行:Enter an integer:-12 integer:-12-absolute value :12,21/47,#include main() int a,b; printf(“Enter integer a:“); scanf(“%d“, ,例 输入两个数并判断两数相等否,运行:Enter integer a:12 Enter integer b:12 a=b,运行:Enter integer a:12 Enter integer b:

11、9 a!=b,22/47,#include main() char c; printf(“Enter a character:“); c=getchar(); if(c=0 ,例 判断输入字符种类,运行:Enter a character: The character is a control character,运行:Enter a character:8 The character is a digit,运行: Enter a character: D The character is a capital letter,运行: Enter a character: h The charac

12、ter is a lower letter,运行: Enter a character:F1 The character is other character,23/47,if语句嵌套: 一般形式:,24/47,例 输入两数并判断其大小关系,#include main() int x,y; printf(“Enter integer x,y:“); scanf(“%d,%d“, ,运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y,25/47,if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对,26

13、/47,例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,实现if else 正确配对方法:加 ,27/47,例 考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(ab) if(b!=15) if(!v1) x=1; else if(v2) x=10; x=-1; printf(“%d”,x); ,结果:-1,28/47,例 判别p(x,y)点是否

14、落在阴影部分,分析 1.p(x,y)落在矩形之内 2.去掉p(x,y)落在圆内,解 (-2x & x2) & (-2y & y2 ),1,2,-2 -1,1,2,-1,-2,y,x,x*x+y*y=1,&,main() float x,y; printf(“input x,y”); scanf(“%f,%f”, ,29/47,条件运算符与表达式 一般形式: expr1 ? expr2 : expr3 执行过程 功能:相当于条件语句,但不能取代一般if语句,例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);,例 (a=b)?Y:N (x%2=1)?1:0 (x=0

15、)?x:-x (c=a & c=z)?c-a+A:c,条件运算符可嵌套 如 x0?1:(x0?-1:0) 优先级: 13,结合方向:自右向左 如 ab?a:cd?c:d ab?a:(cd?c:d) expr1、expr2、expr3类型可不同,表达式值取较高的类型,例 x?a:b /x=0,表达式值为b; x0,表达式值为a xy?1:1.5 /xy ,值为1.0; xy ,值为1.5,30/47,4.4 switch语句,一般形式:,switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; ,执行过程:,31/47,例4-7:假设用0、1、26分别表示星期日、星期一星期六。现输入一个数字,输出对应的星期几的英文单词。如果输入3,输出“Wednesday”。,#include “stdio.h“ void main() int n; scanf(“%d“, ,程序运行情

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号