第四章 选择分支结构程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.3 if语句
4.3.1 if语句三种形式 例:从键盘上输入a,b,c三个数,按从大到小输出。 (难点:交换数据算法)
4.3 if语句
4.3.1 if语句三种形式 #include<stdio.h> void main( ) {int a,b,c,t; printf(“Enter a,b,c:”); scanf(“%d%d%d”,&a,&b,&c); if(a<b) /* t-临时变量 */ {t=a; a=b; b=t;} /* 交换a,b */ if(a<c){t=a;a=c;c=t;} if(b<c){t=b;b=c;c=t;} printf(“\n%d %d %d\n”,a,b,c); }
4.3 if语句
4.3.1 if语句三种形式 注意: 在if和else后面可以是单条语句,也可以是复合语 句,如果使用了复合语句,一定要用花括号括起来, 语句块后面不要“;”号。
4.3 if语句
4.3.1 if语句三种形式
例如:if(a+b>c&&b+c>a&&c+a>b) { s=0.5*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“%f”,area);} else printf(“it is not a triangle”);
4.2
逻辑运算符和逻辑表达式
4.2.2 逻辑表达式
在逻辑表达式的求解中,并不是所有的逻辑 运算符都被执行,只是在必须执行下一个逻辑运 算符才能求出表达式的解时,才执行该运算符。
4.2
逻辑运算符和逻辑表达式
4.2.2 逻辑表达式
例如: a&&b&&c,只有a为真,才需要判别b的值; 只有a、b都为真,才需要判别c的值。只要a为 假,此时整个表达式已经确定为假,就不必判 别b,c;如果a为真,b为假,不判断c。 a||b||c,只要a为真,整个表达式已经确定为真, 就不必判断b和c;只有a为假,才判断b;a、b 都为假才判断c。
逻辑运算的真值表:
a 真 真 假 假 b 真 假 真 假 a&&b 真 假 假 假 a||b 真 真 真 假 a 真 假 !a 假 真
4.2
逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假, 则!a为真。
C语言程序设计
3. 编写程序:用计算机语言写出实现算法的程序。 #include<stdio.h> #include<math.h> void main( ) {float x,y; printf(“Enter x:”); scanf(“%f”,&x); if(x!=0.0) y=sin(x)/x; else y=1; printf(“x=%5.2f\ty=%7.2f\n”,x,y); }
4.2.2 逻辑表达式 例: 若a=4, 则!a值为0(假)。 若a=4,b=5, 则a&&b值为1(真),a||b值为1 (真),!a||b值 为1(真) 4&&0||2值为1(真) ‘c’&&’d’(真)值为1
4.2
逻辑运算符和逻辑表达式
4.2.2 逻辑表达式 例:计算:5>3&&2||8<4-!0 (注意运算符优先级、数值所起作用-是逻辑值,原值)
4.3 if语句
4.3.1 if语句三种形式 2. 分支执行 例:if (a>0) printf(“A is a positive\n”); else printf(“A is not a positive\n”);
A 和B 可以使单一语句,也可以是复合语句。 else 部分不能独立存在,前面一定有;和if 语句。
C语言程序设计
例: 银行存款的例子 设银行定期存款年利率rate 一年 3.8 % 二年 4.50 % 三年 5.22 % 五年及以上 5.76 % 并已知存款期为n年,存款本金为capital元, 编程计算n年后本息之和deposit.
C语言程序设计
例:用C语言实现图示的分段函数。 sin(x) / x x= 0 y= 1 x=0
yes
4.3 if语句
4.3.1 if语句三种形式
例:比较a和b的大小,并将大值赋给max,并打印 出max的值。
编程步骤: 1.确定算法,画出流程图; 2.写出程序; 3.上机编译; 4.测试。
4.3 if语句
4.3.1 if语句三种形式 #include <stdio.h> (注意程序的缩排) void main( ) { float a,b,max; printf("please input a,b:"); scanf("%f%f",&a,&b); if(a>b) {printf("\na>b\n"); max=a;} else {printf("a<=b\n"); max=b;} printf(“\nmax=%f\n",max);}
4.3.1 if语句三种形式
4.3 if语句
else子句不能单独使用,必须是if语句的一部分, 与if配对使用。 (缩排的格式)
例: if(n>6) if(n<12) printf(“n大于6且小雨12\n”); else printf(“n小于等于6\n”);
4.3 if语句
例:以下程序运行后的输出结果是 〖 〗 。 main( ) { int a=1,b=3,c=5; if (c=a+b) printf("yes\n"); else printf("no\n"); }
4.3.1 if语句三种形式 1. 条件执行 if(表达式)语句
if (p) A
4.3 if语句
4.3.1 if语句三种形式 1. if (p) A 例: if(x>y)
printf(“%d”,x);
例: ቤተ መጻሕፍቲ ባይዱf(x>y)
{t=a; a=b; b=t;}
4.3 if语句
4.3.1 if语句三种形式 复合语句:用一对花括号{ }包围起来的一条 和多条语句。 复合语句的形式: { 语句1; 语句2; 语句3; …… }
4.2
逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序 3. 在一个逻辑表达式中如果包含多个逻辑运 算符,则按照以下的优先顺序: (1)!(非),-&&(与),-||(或) 高 低 (2) !(非) 算术运算符 关系运算符 && || 赋值运算符 高
低
4.2
例:
逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
a>b&&x>y 等价于 (a>b)&&(x>y) a= =b||x= =y 等价于 (a= =b)||(x= =y) !a||a>b 等价于 (!a)||(a>b)
4.2
逻辑运算符和逻辑表达式
4.2.2 逻辑表达式 1.逻辑量:当一个量(可以是基本类型的常量或变量) 用作判断的时候,C编译系统认为: 非0 真,0 假 2.逻辑表达式:用逻辑运算符(逻辑与、逻辑或、逻 辑非)将关系表达式或逻辑量连接起来的有意义的表 达式叫逻辑表达式。
4.1 关系运算符和关系表达式
4.1.2 关系表达式
1. 用关系运算符将两个表达式(算术、关系、逻辑、 赋值表达式等)连接起来的有意义的表达式,称为关 系表达式。
如: x!=0; ‘a’==‘A’; a*a+b*b<Y*Y;
说明: 数值量比较,数字的大小 字符量比较,ASCII码比较
4.1 关系运算符和关系表达式
4.1.2 关系表达式
2. 关系表达式的值是一个逻辑值,即“真”或 “假”。 C语言编译系统,真 (1),假(0) .
例:假如a=1,b=-5,c=‘a’,则: c>a+b; a= =b<c; a=b<c; 上述表达式的值是?1,1,1.
4.2
逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序 C语言提供三种逻辑运算符: (1)&& 逻辑与 (2)|| 逻辑或 (3)! 逻辑非
4.2
逻辑运算符和逻辑表达式
4.2.2 逻辑表达式 例: 有以下程序 main( ) { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a<b); printf("%d,%d\n",k,m); } 程序运行后的输出结果是 A)0,0 B)0,1 C)1,0 D)1,1
4.2
4.3 if语句
4.3.1 if语句三种形式 复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式 例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
4.3.1 if语句三种形式 2. 分支执行 if(表达式) 语句1 else 语句2 即 if (p) A else B 当P 为真时(非0)执行A,否则执行B或后续语句。
4.1 关系运算符和关系表达式
4.1.1 关系运算符及其优先次序
例: c>a+b 等价于c>(a+b) ;关系运算符的优先级低于算 术运算符 a>b= =c 等价于(a>b)==c ;“>”优先级高于“= =” a= =b<c 等价于a= =(b<c) ;“<”优先级高于“= =” a=b>c 等价于a=(b>c) ;关系运算符的优先级高于赋值 运算符。
4.2
逻辑运算符和逻辑表达式
4.2.2 逻辑表达式 作业:写出C语言的表达式 1.|x|>2 2.x≤1+a 并y≤b 3.
的定义域
fabs(x)>2 或 x>2||x<-2 x<=1+a&&y<=b (x>=2||x<=1)&&x!=0 或(x-1)*(x-2)>=0&&x!=0
4.3 if语句
4.3 if语句
4.3.1 if语句三种形式
在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);
结构。
4.1 关系运算符和关系表达式
4.1.1 关系运算符及其优先次序
1. 关系运算:是对两个量进行“比较运算”。
2. 关系运算符:
4.1 关系运算符和关系表达式
4.1.1 关系运算符及其优先次序
3.关于优先级别: 前4种关系运算符的优先级别相同,后两种也 相同。前4种高于后两种。 算术运算符、 关系运算符、赋值运算符。 高 低
C语言程序设计
4.输入(编辑)程序, 编译、连接、执行程序 ,输出 结果(测试)
C语言程序设计
选择结构是三种基本结构(顺序、选择、循环)之
一。
选择结构的特点是:程序的流程是由多条支路构成
的,在程序的一次执行过程中,根据不同的情况,只 有一条支路被选择执行,而其它支路上的语句被直接 跳过。
在C语言中,提供了if语句和switch语句来实现选择
4.2
逻辑运算符和逻辑表达式
真(1),假(0)。
4.2.2 逻辑表达式 3.逻辑表达式的值:
4.C语言编译系统在给出逻辑运算结果时,以1代表 “真”,以0代表“假”,但在判断一个量是否为 “真” 时,以0代表“假”,以非0代表“真”(即认为一个 非0 的数值是“真”)。
4.2
逻辑运算符和逻辑表达式
1. 分析问题( 建立数学模型,选择公式 ),确定算法。 ① 输入x; ② 判断x值;
③ 根据x值,计算y值;
④ 输出y值。
显然②③顺序结构不能实现,需用选择结构。
C语言程序设计
2.写出算法描述
C语言程序设计
3. 编写程序:用计算机语言写出实现算法的程序。 #include<stdio.h> #include<math.h> void main( ) {float x,y; printf(“Enter x:”); scanf(“%f”,&x); if(x!=0.0) y=sin(x)/x; else y=1; printf(“x=%5.2f\ty=%7.2f\n”,x,y); }
逻辑运算符和逻辑表达式
4.2.2 逻辑表达式 掌握C语言的关系运算符和逻辑运算符后,可以 用一个逻辑表达式来表示一个复杂的条件。 例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。 (year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。