第四章 选择分支结构程序设计

合集下载

C语言第四章.选择结构程序设计

C语言第四章.选择结构程序设计

case 常量表达式n: 语句n; default : 语句n+1; }
语句的执行过程:
先计算表达式的值,并逐个与其后的常量表达式值相 比较; 当表达式的值与某个常量表达式的值相等时,即执行
其后的语句;
然后不再进行判断,继续执行后面所有case后的语句;
如表达式的值与所有case后的常量表达式均不相同时,
a+b>c && x+y<b 等价于 ((a+b)>c) && ((x+y)<b)
2)逻辑运算的值: 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”
来表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&&
条件运算符和条件表达式
条件表达式通常用于赋值语句之中。 例如条件语句:
if(a>b) max=a;
else max=b; 可用条件表达式写为 max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a 赋予max, 否则把b 赋予max。
注意以下几点:
条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。 因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
注意:
(3) 在if 语句的三种形式中,所有的语句应为单个语句,
如果要想在满足条件时执行一组(多个)语句,则必须
把这一组语句用{ } 括起来组成一个复合语句。 例如:交换两个变量 if (a>b) { t= a; a=b; b=t; }

湖南省C语言(上)教案:第四章分支结构程序设计(高教版).doc

湖南省C语言(上)教案:第四章分支结构程序设计(高教版).doc

第四章分支结构程序设计分支程序设计章节练习题四、选择题1.若x=0,y=3,z=3,以下表达式值为0的是A. !xB.x<y? 1:0C. x%2&&y==zD. y=x||z/32.以下运算符中优先级最低的运算符为 ,优先级最高的为。

A. &&B. !C. !=D. ||E. ?:F. ==3.若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的结果为。

A. 4B. 3C. 2D. 14.若w,x,z均为int型变量,则执行以下语句后的输出为。

w=3;z=7;x=10;printf("%d\n",x>10?x+100:x-10);printf("%d\n",w++||z++);printf("%d\n",!w>z);printf("%d\n",w&&z);A. 0B. 1C. 0D. 01 1 1 11 1 0 01 1 1 05.分析以下程序, 下列说法正确的是。

main(){ int x=5,a=0,b=3;if(x=a+b) printf("* * * *\n");else printf("# # # #\n");}A. 有语法错,不能通过编译B. 通过编译,但不能连接C. 输出* * * *D. 输出# # # #6.分析以下程序, 下列说法正确的是。

main(){ int x=0,a=0,b=0;if(x=a+b) printf("* * * *\n");else printf("# # # #\n");}A. 有语法错,不能通过编译B. 通过编译,但不能连接C. 输出* * * *D. 输出# # # #7.分析以下程序, 下列说法正确的是。

C语言-第4章 选择结构程序设计

C语言-第4章 选择结构程序设计

第4章选择结构程序设计注:选择结构的考点,最重要的有两个,一个是逻辑表达式的值,另一个是分支界限。

弄明白这两个知识点,就能够以不变应万变了。

一、单项选择题1. 在C语言中,能代表逻辑值"真"的是。

A) true B)大于0的数C)非0整数D)非0的数2. 表示关系x<=y<=z的c语言表达式为。

A) (x<=y)&&(y<=z) B) (x<=y)AND(y<=z) C) (x<=y<=z) D) (x<=y)&(y<=z)3. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是。

A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=04、判断char型变量c1是否为大写字母的表达式为。

A)’A’<=c1<=’Z’ B)(c1>=’A’) & (c1<=’Z’)C)(’A’<=c1)AND (‘Z’>=c1) D)(c1>=’A’)&& (c1<=’’Z’)5. 有定义char c; c=getchar(); 判断字符变量c为大写字母的正确表达式为。

A) ‘A’=<c<=’Z’ B)c>=‘A’&& c<=’Z C)A=<c<=Z D) c>=A && c<=Z6. 设有语句“int a=4;b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是。

A)1B)0 C)-1 D)出错7. 设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是。

第4章 选择结构程序设计《C语言程序设计(第三版)》-电子教案

第4章 选择结构程序设计《C语言程序设计(第三版)》-电子教案

【注意】
switch后跟的"表达式"允许为任何类型的表达式,其 后跟的"表达式"允许为任何类型的表达式, 后跟的 数据类型和case后面的常量表达式的数据类型一致. 后面的常量表达式的数据类型一致. 数据类型和 后面的常量表达式的数据类型一致 每一个case后的各常量表达式的值不允许重复,否则 后的各常量表达式的值不允许重复, 每一个 后的各常量表达式的值不允许重复 会报错. 会报错. 每一个case后允许有多条语句 可以不用花括号" 后允许有多条语句, 每一个case后允许有多条语句,可以不用花括号"{}" 括起来. 括起来. case和default子句出现的先后顺序可以变动,不会影 子句出现的先后顺序可以变动, 和 子句出现的先后顺序可以变动 响程序的执行结果. 子句也可以省略不用. 响程序的执行结果.default子句也可以省略不用. 子句也可以省略不用 多个case可以共用一组执行语句.例如: 可以共用一组执行语句. 多个 可以共用一组执行语句 例如: … case 'A': case 'B': case 'C':printf("Pass\n");break;
3<5 || ++b
【例4-2】测试短路现象 】
#include <stdio.h> void main() { int a,b; a=b=0; a || ++b; printf("%d,%d\n",a,b); a=b=1; a || ++b; printf("%d,%d\n",a,b); a=b=0; a && ++b; printf("%d,%d\n",a,b); a=b=1; a && ++b; printf("%d,%d\n",a,b); }

C语言 第4章 选择结构程序设计

C语言 第4章 选择结构程序设计

#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 , 和 对换 是 、 中的小者 { t=a; a=b; b=t; } a是a、b中的小者 if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
if (disc<0) 8<0为假 为假 printf(“has not real roots\n”); else 的值变为-1 的值变为 { p=-b/(2.0*a); p的值变为 的值变为0.71 的值变为 q=sqrt(disc)/(2.0*a); q的值变为 x1=p+q; x1的值变为 的值变为-0.29 的值变为 x2=p-q; x2的值变为 的值变为-1.71 的值变为 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; }
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
C语言有两种选择语句: 语言有两种选择语句: 语言有两种选择语句 (1)if语句,实现两个分支的选择结构 语句, 语句 (2)switch语句,实现多分支的选择结构 语句, 语句

C语言程序设计-第四章简单计算器小程序-分支程序设计

C语言程序设计-第四章简单计算器小程序-分支程序设计

P1 逻辑运算符 P2

逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】

四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。

2、掌握选择结构的程序设计。

3、掌握分支结构的嵌套。

二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。

自变量x与函数值均采用双精度类型。

(2)自变量x值从键盘输入,且输入前要有提示信息。

(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。

记录结果。

(5)源程序以sy4_1.c存盘。

2、编程,将一个百分制成绩转换成等级制成绩。

具体要求如下:(1)百分制与等级制的对应关系如下:(3)用键盘输入百分制成绩,输入前要有提示信息。

(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。

(5)输出结果中应包含百分制成绩和成绩等级。

(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。

记录结果。

(7)源程序以sy4_2.c存盘。

三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。

2、掌握三种常用的循环语句的格式和功能。

3、初步掌握循环结构的编程方法。

二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。

要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。

2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。

第四章 结构化程序设计的三种结构

第四章 结构化程序设计的三种结构

第四章结构化程序设计的三种结构4.1 顺序结构程序设计一、结构化程序设计的程序结构顺序结构、分支结构/选择结构、循环结构二、C语言语句1、9种控制语句2、表达式语句3、特殊语句三、格式化输出--printf()函数printf()函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。

printf()函数的一般格式printf("格式字符串" [,输出项表]);1、"格式字符串"也称"转换控制字符串",可以包含三种字符(1)格式指示符。

格式指示符的一般形式如下:%[标志][宽度][.精度][F|N|h|L][类型]常用的标志字符如表3-1所示,常用的宽度指示符如表3-2所示,常用的精度指示符如表3-3所示,长度修饰符如表3-4所示,类型转换字符如表3-5所示。

(2)转义字符'\n'就是转义字符,输出时产生一个"换行"操作。

转义字符通常起控制作用(3)普通字符──除格式指示符和转义字符之外的其它字符。

格式字符串中的普通字符,原样输出。

例如printf("radius=%f\n", radius);语句中的"radius="是普通字符。

2.输出项表输出项表是可选的。

如果要输出的数据不止1个,相邻2个之间用逗号分开。

下面的printf()函数都是合法的:(1)printf("I am a student.\n");(2)printf("%d",3+2);(3)printf("a=%f b=%5d\n", a, a+3);必须强调:"格式字符串"中的格式指示符,必须与"输出项表"中、输出项的数据类型一致,否则会引起输出错误3、格式指示符输出不同类型的数据,要使用不同的类型转换字符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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或后续语句。
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.逻辑表达式:用逻辑运算符(逻辑与、逻辑或、逻 辑非)将关系表达式或逻辑量连接起来的有意义的表 达式叫逻辑表达式。
逻辑运算的真值表:
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为真。
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.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.2
逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序 3. 在一个逻辑表达式中如果包含多个逻辑运 算符,则按照以下的优先顺序: (1)!(非),-&&(与),-||(或) 高 低 (2) !(非) 算术运算符 关系运算符 && || 赋值运算符 高

4.2
例:
逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
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.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语句三种形式 2. 分支执行 例:if (a>0) printf(“A is a positive\n”); else printf(“A is not a positive\n”);

A 和B 可以使单一语句,也可以是复合语句。 else 部分不能独立存在,前面一定有;和if 语句。
C语言程序设计
4.输入(编辑)程序, 编译、连接、执行程序 ,输出 结果(测试)
C语言程序设计
选择结构是三种基是由多条支路构成
的,在程序的一次执行过程中,根据不同的情况,只 有一条支路被选择执行,而其它支路上的语句被直接 跳过。
在C语言中,提供了if语句和switch语句来实现选择
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
逻辑运算符和逻辑表达式
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.2.2 逻辑表达式 掌握C语言的关系运算符和逻辑运算符后,可以 用一个逻辑表达式来表示一个复杂的条件。 例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。 (year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
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.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"); }
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
结构。
4.1 关系运算符和关系表达式
4.1.1 关系运算符及其优先次序
1. 关系运算:是对两个量进行“比较运算”。
2. 关系运算符:
4.1 关系运算符和关系表达式
4.1.1 关系运算符及其优先次序
3.关于优先级别: 前4种关系运算符的优先级别相同,后两种也 相同。前4种高于后两种。 算术运算符、 关系运算符、赋值运算符。 高 低
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.3 if语句
4.3.1 if语句三种形式 注意: 在if和else后面可以是单条语句,也可以是复合语 句,如果使用了复合语句,一定要用花括号括起来, 语句块后面不要“;”号。
相关文档
最新文档