第04章 选择结构程序设计
第四篇选择结构程序设计

以某表达式的值等于0作为条件时可写成对该表达式 取反的形式。
例如,语句:if(x==0) printf(“x=0”);可以简写成:
if(!x) printf(“x=0”);
4.3 if语句
说明: (3)无论是if语句中的语句还是if-else语句中的语
句1、语句2,都可以是任何语句。当它们中的某 一个是有多条语句组成时,必须写成复合语句的 形式。例如,语句:
优先级: 高 算术运算符
< ,<=, >, >=
低
==, !=
赋值运算符
4.2 关系运算与逻辑运算
2.关系表达式
一般形式为:〈表达式〉〈关系运算符〉〈表达式〉
合法的关系表达式:
a>b
a+b<c-d
(a=3)<=(b=5)
‘a’>=‘b’
(a>b)==(b>c)
关系表达式的值:
——逻辑值
“真” “1”表示
else
printf(“n=%d NO\n”,n); }
➢多分支if语句
4.3 if语句
当if-else语句中的语句2是另一条if语句时,就构成了多分支if语句。
语句的一般形式为: 表 达 式
1
if(表达式1) 语句1 真
假 执行过程:
假 表达式2
else if(表达式2) 语句2
真
假
else if(表达式3) 语句3
用N-S流程图表示例4.1的算法 输入weight
成立
weight≤50
不成立
pay=weight*0.35
pay=50*0.35+(weight50)*0.5
实验四选择结构程序设计

实验四选择结构程序设计在程序设计的世界里,选择结构就像是一个智能的决策者,根据不同的条件来决定程序的走向。
这一结构在解决各种实际问题中发挥着至关重要的作用,让程序变得更加灵活和高效。
选择结构,简单来说,就是让程序在运行时能够根据某些条件的判断结果,选择执行不同的代码块。
想象一下,你正在编写一个程序,要根据用户输入的成绩来判断他是否及格。
如果成绩大于等于 60 分,就输出“及格”;否则,输出“不及格”。
这就是一个典型的选择结构应用场景。
在大多数编程语言中,实现选择结构主要有两种方式:if 语句和switch 语句。
先来说说 if 语句。
它的基本形式是“if (条件) {代码块}”。
如果条件为真,就执行花括号里的代码块;如果条件为假,就跳过这个代码块,继续执行后面的代码。
比如说,我们要判断一个数是否为正数,可以这样写:```javaint num = 5;if (num > 0) {Systemoutprintln("这是一个正数");}```除了简单的 if 语句,还有 ifelse 语句。
它的形式是“if (条件) {代码块 1 } else {代码块 2 }”。
如果条件为真,执行代码块 1;如果条件为假,执行代码块 2。
例如,判断一个数是奇数还是偶数:```javaint num = 6;if (num % 2 == 0) {Systemoutprintln("这是一个偶数");} else {Systemoutprintln("这是一个奇数");}```另外,还有 ifelse ifelse 语句,可以处理多个条件的情况。
比如,根据学生的成绩划分等级:```javaint score = 85;if (score >= 90) {Systemoutprintln("优秀");} else if (score >= 80) {Systemoutprintln("良好");} else if (score >= 70) {Systemoutprintln("中等");} else if (score >= 60) {Systemoutprintln("及格");} else {Systemoutprintln("不及格");}```接下来,再讲讲 switch 语句。
d04_选择结构程序设计24页PPT

第四章 选择结构程序设计
退出
第四章 选择结构程序设计
退出
第四章 选择结构程序设计
退出
求任意数据的平方根
算法设计 (1) 定义实型变量x和y (2) 从键盘输入变量x的值 (3) 如果变量x的值大于等于0
①求变量x的平方根并赋值给变量y ②输出变量y的值
第四章 选择结构程序设计
退出
求任意数据的平方根prg4-1.c
if(x > 0 ) //调用{ 数学库函数sqrt求平方根,包含头文件
void m{
printf("x的平方根是:%10.2lf\n", y);
dproiunbtlfe("x从, 键y;盘输入变量x的/值/定:义"}e)变l;se量x和yprintf("x的平方根是:0\n");
d04_选择结构程序设计
41、俯仰终宇宙,不乐复何如。 42、夏日长抱饥,寒夜无被眠。 43、不戚戚于贫贱,不汲汲于富贵。 44、欲言无予和,挥杯劝孤影。 45、盛年不重来,一日难再晨。及时 当勉励 ,岁月 不待人 。
关系运算符与关系表达式 逻辑运算符与逻辑表达式 if语句 switch语句 结构嵌套程序举例
printf("x的平方根是:%10.2lf\n", y); //输出变量y的值
}
else
//处理不合法的数据
printf("输入的数据有错误\n");
}
第四章 选择结构程序设计
退出
多分支if语句
语法格式
if(表达式1)
语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;
if(表达式) 语句1;
选择结构程序设计

选择结构程序设计1-引言本文档旨在介绍选择结构程序设计的相关内容。
选择结构是编程中的基本概念之一,它用于根据条件的真假来选择性地执行不同的代码块。
本文档将详细讨论选择结构的概念、基本语法和示例。
2-选择结构概述在程序设计中,选择结构用于在特定条件下执行不同的操作。
通过判断条件的真假,程序可以决定执行哪个代码块。
选择结构的基本形式有 if 语句、if-else 语句、if-else if-else 语句和switch 语句。
3-if 语句if 语句是选择结构中最简单的形式。
它只有一个条件和一个代码块。
如果条件为真,代码块将会被执行。
示例代码:```if (条件) {// 执行代码块}4-if-else 语句if-else 语句用于在条件为真和为假时分别执行不同的代码块。
如果条件为真,执行第一个代码块。
如果条件为假,执行第二个代码块。
示例代码:```if (条件) {// 执行代码块1} else {// 执行代码块2}```5-if-else if-else 语句if-else if-else 语句允许在多个条件下执行不同的代码块。
条件按顺序进行判断,只有第一个为真的条件对应的代码块会被执行。
示例代码:if (条件1) {// 执行代码块1} else if (条件2) {// 执行代码块2} else {// 执行代码块3}```6-switch 语句switch 语句用于根据不同的取值执行相应的代码块。
它将一个表达式的值与多个 case 常量进行比较,匹配的 case 对应的代码块将被执行。
示例代码:```switch (表达式) {case 常量1:// 执行代码块1break。
case 常量2:// 执行代码块2break。
default:// 执行默认代码块}```7-附件本文档涉及附件包括示例代码和进一步阅读的参考资料。
8-法律名词及注释本文档所涉及的法律名词及注释如下:●条件:在选择结构中用于判断的逻辑条件。
04 选择结构程序设计

程序输出举例: Enter two numbers: 2 2 (用户从键盘输入2 2)
num1=2 num2=2 result=1
4.2 逻辑运算符及逻辑表达式
逻辑运算符用于支持基本逻辑运算。三 种逻辑运算符及其意义,如表4.2.1所示。
表4.2.1
逻辑运算符 !
&& ||
名称 逻辑非 逻辑与 逻辑或
下面给出程序清单:
#include <stdio.h> main() { int value,choice;
printf("Convert : \n");
/*输出菜单*/
printf(" 1: decimal to hexadecimal\n");
printf(" 2: hexadecimal to decimal\n");
printf("Enter a decimal value: "); scanf("%d", &value); printf("%d in hexadecimal is %x\n", value,value); } else if(choice==2) { printf("Enter a hexadecimal value: "); scanf("%x", &value); printf("%x in decimal is %d\n",
例4.3.3 用双分支if语句重新编写例4.3.1的 程序。
可以利用一个分支处理变量a为正数的情 况,如令x=a。用另一个分支初处理变量a为 负数的情况,如令x=−a。最后输出结果。下 面给出程序:
选择结构程序设计

选择结构程序设计在计算机编程的世界里,选择结构程序设计就像是为程序赋予了思考和决策的能力。
它使程序能够根据不同的条件做出不同的反应,从而实现更加灵活和智能的功能。
想象一下,你正在编写一个程序,要根据用户输入的成绩来判断他是否及格。
如果没有选择结构,程序可能就会变得非常僵化,无法根据不同的成绩情况做出相应的处理。
而有了选择结构,程序就能轻松地应对各种可能的情况。
选择结构最常见的形式就是“ifelse”语句。
它的基本思想很简单:如果某个条件成立,就执行一段特定的代码;如果条件不成立,就执行另外一段代码。
比如说,“if (成绩>= 60){输出‘及格’;} else {输出‘不及格’;}”,这就是一个非常典型的“ifelse”结构的应用。
通过这样的语句,程序能够根据成绩的不同做出准确的判断和相应的输出。
除了简单的“ifelse”,还有一种更复杂但也更强大的选择结构叫做“ifelse ifelse”。
这种结构适用于需要判断多个条件的情况。
假设我们不仅要判断成绩是否及格,还要区分优秀(90 分及以上)、良好(80 89 分)、中等(70 79 分)等不同的等级,就可以使用“ifelse ifelse”结构。
例如:“if (成绩>= 90){输出‘优秀’;} else if (成绩>= 80&&成绩< 90){输出‘良好’;} else if (成绩>= 70 &&成绩< 80){输出‘中等’;} else if (成绩>= 60 &&成绩< 70){输出‘及格’;} else {输出‘不及格’;}” 这样,程序就能更细致地对成绩进行分类和处理。
在实际编程中,选择结构的应用场景非常广泛。
比如在一个购物网站中,程序需要根据用户的会员等级来决定给予不同的折扣。
如果是普通会员,可能没有折扣;如果是银牌会员,享受 5%的折扣;如果是金牌会员,享受 10%的折扣。
通过选择结构,程序能够准确地根据用户的会员等级计算出相应的折扣金额。
选择结构程序设计

选择结构程序设计选择结构程序设计在程序设计中,选择结构是一种非常重要的控制结构。
通过选择结构,我们可以根据程序的运行情况来决定执行不同的代码块。
选择结构能够实现条件判断和分支选择,为程序的灵活性和可扩展性提供了极大的便利。
本文将介绍选择结构的概念、语法和几种常用的选择结构程序设计方法。
选择结构的概念选择结构是指程序根据不同的条件执行不同的代码块。
在选择结构中,通常会使用条件判断来确定程序执行的路径。
根据条件表达式的返回值(真或假),程序会决定执行真值分支(True branch)或者假值分支(False branch)。
选择结构的出现可以使程序更具有灵活性和可扩展性。
选择结构的语法在大多数编程语言中,选择结构通常有两种形式:`if`语句和`switch`语句。
if语句`if`语句是最基本的选择结构语句。
它可以根据某个条件的真假来执行不同的代码块。
`if`语句的语法如下:```markdownif (condition) {// 如果条件为真,执行这里的代码块} else {// 如果条件为假,执行这里的代码块}```其中`condition`是一个条件表达式,它能够返回一个布尔值(真或假)。
如果`condition`为真,程序会执行`if`后面的代码块;如果`condition`为假,程序会执行`else`后面的代码块。
switch语句`switch`语句是另一种常用的选择结构语句。
它可以根据一个表达式的值,选择性地执行多个代码块中的一个。
`switch`语句的语法如下:```markdownswitch (expression) {case value1:// 如果`expression`的值等于`value1`,执行这里的代码块break;case value2:// 如果`expression`的值等于`value2`,执行这里的代码块break;default:// 如果`expression`的值不等于任何一个`case`中的值,执行这里的代码块break;}````expression`是一个表达式,它的值和`case`后面的值进行比较。
选择结构程序设计

4.1 选择结构 4. 1 If…Then语句(单分支结构)
If <表达式> Then 语句块 End If 或 If <表达式> Then <语句> 例:已知两个数x和y,比较它们的 大小,使得x大于y。 If x<y Then t=x : x=y: y=t End If 或 If x<y Then t=x: x=y: y=t
图 1-3-8 过程 两个数交换
x
y
t
4.2 If…Then…Else语句(双分支结构) If <表达式> Then <语句块1> Else <语句块2> End If
双分支选择结构执行过程
If <表达式> Then <语句1> Else <语句2>
例如:输出x,y两个中值较大的一个值。 IF X>Y Then Print X Else Print Y End If 也可以写成如下的单行形式: IF X>Y Then Print X Else
注意:
对于多层IF嵌套结构中,要特别注意IF与Else的配 对关系,一个Else必须与IF配结,配对的原则是:在写 含有多层嵌套的程序时,建议使用缩进对齐方式,这样
容易阅读和维护。
4.4 选择结构的嵌套 在IF语句的Then分支和Else分支中可以完整地嵌套另 一IF语句或Select Case语句,同样Select Case语句每一个 Case分支中都可嵌套另一IF语句或另一Select Case语句。 下面是两种正确的嵌套形式:
(1)IF <条件1> Then ….. if <条件2> Then …… Else ….. End If …. Else …. IF <条件3> Then ….. Else ….. End If ….. End IF (2)IF <条件1> Then ….. Select Case … Case …… IF <条件1> Then …… Else ….. End If …… Case…. ….. End Select …. End IF
C语言程序设计第4章

能够使用if语句和switch语句,进行 选择结构程序设计 会利用多分支结构解决较复杂逻辑 判断问题
目录
CONTENTS
00 案例4 百分制转换等级制 01 4.1 选择结构判定条件的构成 02 4.2单分支和双分支选择结构程序设计 03 4.3 多分支选择结构程序设计
目录
CONTENTS
04 4.4 小结 05 4.5 拓展案例
案例4 百分制转换等级制
问题描述
学生成绩管理系统中需要对老师录入的百分制转换为等 级制。百分制与等级制的对应关系如下:90-100 对应A、 80-89对应B、70-79对应C、60-69对应D、0-59对应E。
问题分析
这是一个需要根据不同条件作出相应选择的程序,根据 描述,我们可以定义float变量fScore用来存放成绩值, 从而根据题目列出下列条件表达式: fScore>=90&&fScore<=100 your grade is A fScore>=80&&fScore<=89 your grade is B fScore>=70&&fScore<=79 your grade is C fScore>=60&&fScore<=69 your grade is D fScore>=0&&fScore<=59 your grade is E
4.4 小结
(1)嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的 应用环境不同,嵌套if-else 语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一种的情形。 (2)一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反 之用嵌套if-else 语句能解决的问题用switch也能解决,在使用时要根据具体 问题灵活运用。 (3)如果多分支选择结构中需要判断的逻辑关系只是是否相等,则最好用 switch语句。switch语句的执行效率高于嵌套if-else语句。
第04章 C程序设计

2.逻辑运算符的运算优先级 (1)逻辑非的优先级最高,逻辑与次之,逻辑或最低, 即: !(非) → &&(与) → ||(或) (2)与其它种类运算符的优先关系 !→ 算术运算 → 关系运算 → &&→ || → 赋值运算 4.2.2 逻辑表达式 1.逻辑表达式的概念 所谓逻辑表达式是指,用逻辑运算符将1个或多个表达 式连接起来,进行逻辑运算的式子。在c语言中,用逻辑表 达式表示多个条件的组合。 例如,(year%4==0)&&(year%100!=0)||(year%400==0)就 是一个判断一个年份是否是闰年的逻辑表达式。
程序运行情况如下: Please input three numbers:11,22,18↙ Three numbers after sorted: 11,18,22
1.if语句的一般格式
if(表达式) {语句组1;} [else {语句组2;} ] (1)if语句中的“表达式”必须用“(”和“)”括起来。 (2)else子句(可选)是if语句的一部分,必须与if配对使用,不 能单独使用。 (3)当if和else下面的语句组,仅由一条语句构成时,也可不使 用复合语句形式(即去掉花括号)。
main() {int year,leap=0; /* leap=0:预置为非闰年*/ printf("Please input the year:"); scanf("%d",&year);
if (year % 4==0) {if (year % 100 != 0) leap=1;} else {if (year%400==0) leap=1; } if (leap) printf("%d is a leap year.\n",year); else printf("%d is not a leap year.\n",year);
c语言程序设计教程第二版课后答案

c语言程序设计教程第二版课后答案【篇一:c语言程序设计(第2版)-- 课后题答案】p> 参考答案第1章进入c语言程序世界二、1.i love china!printf(we are students.\n)2.6项目实训题参考答案1.编写一个c程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *i am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf(********************\n);printf( i am a student!\n);printf(********************\n);}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。
解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf(v=%d,v);}本程序运行结果为:v=3000第2章编制c程序的基础知识一选择题c b a b a c c二操作题,2,-8,23.000000,2.500000,-8.0000002. abc defghwhy is21+35equal 523.34214. aaa项目实训题1.定义一个符号常量m为5和一个变量n值为2,把它们的乘积输出。
#define m 5main(){ int n,c;n=2; c=m*n;printf(%d\n,c);}2.编程求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。
(1)main(){ int a=7;float x=2.5,y=4.7;printf(%f\n,x+a%3*(int)(x+y)%2/4);}(2)main(){ int a=2,b=3;float x=3.5,y=2.5;printf(%f\n,(float)(a+b)/2+(int)x%(int)y);}第三章顺序结构程序设计一选择题a c d c c二操作题1. x=3,a=2,b=32. z=12.7000002 13 3 2 bb cc abc n3. 1 2 1a2 1 2三.编程题编程题解:#include stdio.hmain(){float sj,gz,yfgz;printf(time,salary:);scanf(%f,%f,sj,gz);yfgz=sj*gz*0.9;printf(total salary:%f\n,yfgz);}本程序运行结果为:time,salary:4,3crtotal salary:10.8000002.编写一个程序求出任意一个输入字符的ascii码解:#include stdio.hmain(){char c;printf(input a string:);scanf(%c,c);printf(%c ascii is %d\n,c,c);}本程序运行结果为:input a string:acra ascii is 973、编写一个程序用于水果店售货员算帐:已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付3解:main(){float p,y,x,j,ys,g,fk;printf(apple,pear,banana,orange(weight)=);scanf(%f,%f,%f,%f,p,y,x,j);ys=2.5*p+1.8*y+2*x+1.6*j;printf(fu kuan=);scanf(%f,g);fk=g-ys;printf(result:\n);printf(fukuan=%6.2fyuan\nshoukuan=%6.2fyuan\nzhaohui=%6. 2fyuan\n,g,ys,fk);}本程序运行结果为:apple,pear,banana,orange(weight)=1,2,3,4fu kuan=100result:fukuan=100.00yuanshoukuan= 18.50yuanzhaohui= 81.50yuan项目实训1.假设银行定期存款的年利率rate为2.25%,并已知存款期为n 年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。
04 选择结构程序设计-文本资料PPT课件

例如:if(x>y) printf(“%d”,x);
Y
执行语句
if (Number1>=Number2) Number1= Number2;
2、if(表达式) { 语句1; 语句2; 语句3; }
表达式值为真
N
Y 执行语句1
执行语句2
执行语句3
02.11.2020
15
if (Number1< Number2)
判断闰年的条件可以用一个逻辑表达式表示: (year%4==0 && year%100!=0) || year%400==0
表达式为“真”,闰年条件成立,是闰年,否则非闰年。
02.11.2020
14
4.4 if语句 和 switch语句
4.4.1 if语句
N
1、if(表达式) 语句;
表达式 值为真
}ห้องสมุดไป่ตู้
02.11.2020
02.11.2020
17
main()
{ float weight,pay; printf("Please input the weight:"); scanf("%f",&weight); if (weight>=10) pay=weight*6.5;
else pay=weight*8.5;
printf("You should pay %f yuans\n",pay);
•逻辑表达式的 值 是一个 逻辑量 “真”或“假”。
❖C语言编译系统在给出逻辑运算结果时,以1代表“真”,以0代表“假”, ❖但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”
C语言程序设计教程:选择结构程序设计

4.2 switch语句
(5) case后面的语句块可以是一条语句或多条语句,也可 是空语句,但不需要用大括号括起来。
(6) 当case后面常量表达式与switch后面的表达式均不匹 配时,则执行default后面的语句块,default可以放在程序的 任何位置,不一定要位于最后。
(7) 多个case可以共用一个语句块。 例如: switch(n)
注意:当多分支中有多个表达式同时满足时,只执行第一个与之匹配的语句块。 因此要注意对多分支中条件表达式的书写次序,防止某些值被过滤掉。
15
4.1.1 if语句的三种形式
思考:若将例4.4中程序改为以下两种写法,结果分别会如何?
程序段一如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=90)
4.1.1 if语句的三种形式
程序段二如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=60)
printf("及格!\n "); else if(score>=70)
9
4.1.1 if语句的三种形式
2. 双分支选择结构
双分支结构语法的一般格式为:
if(表达式)
{
语句块1;
}
c语言实验四选择结构程序设计

c语言实验四选择结构程序设计实验四:选择结构程序设计选择结构是C语言中的一种基本控制结构,用于根据条件的真假来选择执行不同的代码块。
本篇文章将介绍C语言中选择结构的概念、语法和常见的应用场景。
一、概述选择结构是一种基于条件判断的控制结构,根据条件的真假来选择执行不同的代码块。
C语言中的选择结构主要有if语句、if-else语句和switch语句。
二、if语句if语句是最简单的选择结构,它的语法格式如下:```cif (条件) {// 条件为真时执行的代码块}```其中,条件是一个表达式,如果条件为真,则执行if语句后面的代码块。
如果条件为假,则跳过if语句后面的代码块。
if语句还可以和else语句一起使用,形成if-else语句。
if-else语句的语法格式如下:```cif (条件) {// 条件为真时执行的代码块} else {// 条件为假时执行的代码块}```如果条件为真,则执行if语句后面的代码块;如果条件为假,则执行else语句后面的代码块。
三、switch语句switch语句用于根据表达式的值选择执行不同的代码块。
它的语法格式如下:```cswitch (表达式) {case 值1:// 表达式的值等于值1时执行的代码块break;case 值2:// 表达式的值等于值2时执行的代码块break;// ...default:// 表达式的值都不等于上述值时执行的代码块break;}```switch语句中的表达式的值会依次与每个case后面的值进行比较,如果相等,则执行对应的代码块。
如果所有的case都不匹配,则执行default后面的代码块。
四、应用场景选择结构在程序设计中有着广泛的应用场景,以下是一些常见的例子:1. 根据用户的输入选择不同的操作:比如在一个菜单程序中,根据用户输入的选项执行相应的操作。
2. 根据条件判断执行不同的计算:比如在一个学生成绩管理系统中,根据不同的分数段给出不同的评价。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.最基本的if语句
4.2 输入正方形的边长,求正方形的周长。 #include<stdio.h> 运行结果: void main( ) 请输入正方形的边长:5↙ { 正方形的周长是:20.000000 float x; printf("请输入正方形的边长:"); scanf("%f",&x); if (x>0) { x=x*4; printf("正方形的周长是:%f\n",x); } }
4.条件运算符
条件运算符要求有3个操作对象,称三目(元)运算符,它是 C语言中唯一的一个三目运算符。条件表达式的一般形式为 表达式1?表达式2:表达式3 说明: (1)条件运算符的执行顺序:先求解表达式1,若为非0(真) 则求解表达式2,此时表达式2的值就作为整个表达式的值。若 表达式1的值为0(假),则求解表达式3,表达式3的值就是整 个表达式的值。 (2)条件运算符优先于赋值运算符,比关系运算符和算术运 算符都低。 (3)条件运算符的结合方向为“自右至左”。 如:a>b?a:c>d?c:d 相当于 a>b?a:(c>d?c:d)
例4.1 关系表达式运算结果的演示。
#include<stdio.h> void main( ) { int a,b,c,d,f; a=3; b=2; c=1; d=a>b; f=a>b>c; printf("22>10的值是:%d\n",22>10); printf("a<A的值是:%d\n",'a'<'A'); printf("11<=7的值是:%d\n",11<=7); printf("d的值是:%d\n",d); printf("f的值是:%d\n",f); }
3. 多分支选择
格式1: if (表达式1) if(表达式2) 语句1 else 语句2 else if(表达式2) 语句3 else 语句4
例4.4:已知高斯平面上的点(x,y),判断该点落在哪个象 运行结果: 限。
请输入点的平面坐标:-100,100↙ #include<stdio.h> 点在第二象限 void main() { double x,y; printf("请输入点的平面坐标:"); scanf("%lf,%lf",&x,&y); if (x>0) if(y>0) printf("点在第一象限\n"); else printf("点在第四象限\n"); else if(y>0) printf("点在第二象限\n"); else printf("点在第三象限\n"); }
在程序中,用选择结构来检查所指定的条件是否满足,并根 据判断的结果决定执行哪种操作(从给定的两组操作中选择 其一)。 如: If (x>0) printf(“%d”,x); else printf(“%d”,-x);
4.1.2 关系运算符和关系表达式
1.关系运算符及其优先次序
关系运算符 含义
> >=
说明:由于用了1和0代表真和假,而1和0又都是数值, 所以在 C 程序中还允许把关系运算的结果(即1和0) 看做和其它数值型数据一样,可以参加数值运算或把 它赋值给数值型变量。
4.1.3 逻辑运算符和逻辑表达式
有时候需要判断的条件不是一个简单的条件,而是 一个复合的条件,如: 是中国公民,且在18岁以上才有选举权。这就要求 同时满足两个条件:中国公民;大于18岁。 5门课都及格,才能升级。这就要求同时满足5个条 件。 70岁以上的老人或10岁以下的儿童,入公园免票。 这就要求对入园者检查两个条件,看是否满足其一。
2.逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来的式 子就是逻辑表达式。逻辑表达式的结果是逻辑值。 C语言编译系统在表示逻辑运算结果时,以数值1代 表“真”,以0代表“假”,但在判断一个量是否为 “真”时,以0代表“假”,以非0代表“真”。即 将一个非零的数值认作为“真”。 例如: (1)若a=4,则!a的值为0 (2)若a=4,b=5,则a&&b的值为1 (3)若a=4,b=5,则a||b的值为1 (4)4&&0||2的值为1
2.if else语句
if else语句的一般形式: if (表达式) 语句1; else 语句2;
2.if else语句
例如:
if (x>y) max=x; else max=y; 说明: (1)if语句和else语句属于同一个if语句。else子句不能作为语 句单独使用,它必须是if语句的一部分,与if配对使用。 (2)当语句1和语句2为单条语句时,必须用分号作为结束符, 这是由于分号是C语句中不可缺少的部分,这个分号是if语句中 的内嵌语句所要求的。如果无此分号,则出现语法错误。 (3)在if和else后面可以只含一个内嵌的操作语句(如上例),也 可以有多个操作语句,此时用花括号“{}”将几个语句括起来成 为一个复合语句。
a&&b 真 假 假 假
a||b 真 真 真 假
1.逻辑运算符及其优先次序
说明: (1)三者的优先级由高到低为: !(非)→&&(与) → ||(或) (2)多种运算符同时出现时,优先级由低到高为赋值 运算符→||(或)→&&(与)→关系运算符→算术运 算符→!(非)。如:(12+3<30)&&(a==b) 也可以写成 :12+3<30&&a==b。 (3)“!”是“单目运算”,即只要求有一个运算对象 (操作数),而“&&”和“||”是双目运算符,它们要 求有两个运算对象。
如果你在家,我去拜访你; (需要判断你是否在家) 如果考试不及格,要补考; (需要判断是否及格) 如果遇到红灯,要停车等待;(需要判断是否红灯)
如果a>b,输出a
(需要判断a是否大于b)
4.1.1 条件判断的含义
条件判断的结果是一个逻辑值:“是”或“否”, 在计算机语言中用“真”和“假”来表示“是”和 “否”。如果,判断 “a>b” 条件是否满足。当a>b 时,就称条件“a>b” 为 “真” ,如果a≤b,则不满 足“a>b”条件,就称此时条件“a>b”为假。
2.if else语句
例4.3 完善例4.2。输入正方形的边长,求正方形的周长。
#include<stdio.h> 运行结果: void main() 请输入正方形的边长:5↙ { float x; 正方形的周长是:20.000000 printf("请输入正方形的边长:"); 请输入正方形的边长:-8↙ scanf(“%f”,&x); 数据输入错误! if(x>0) { x=x*4; printf("正方形的周长是:%f\n",x); } else printf("数据输入错误!\n"); }
4.2 用if语句实现选择结构
1.最基本的if语句
If语句的一般形式: if (表达式) 语句
例如: if (x>y) printf("%d",x);
真 语句
表达 式
假
1.最基本的if语句
说明: (1)if后面的括号中的“表达式”指定判断条 件,可以是关系表达式(x>y)、逻辑表达 式( x && y )。注意表达式必须用圆括号 括起来。 (2)如果语句由一条以上语句组成,必须 用花括号把这一组语句括起来构成复合语 句。
4.条件运算符
(4)条件表达式不能代替一般的if 语句,只有在if语句中内嵌 的语句为赋值语句(且两个分支都给同一变量赋值)时才能代 替if语句。 (5)条件表达式中,表达式1的类型可以与表达式2和表达式3 的类型不同。
1.逻辑运算符及其优先次序
C语言提供了三种逻辑运算符: (1)&& :逻辑“与”(相当于其他语言中的AN D) (2)|| :逻辑“或” (相当于其他语言中的OR) (3)! :逻辑“非” (相当于其他语言中的NOT)
逻辑运算的真值表
a 真 真 假 假
b 真 假 真 假
!a 假 假 真 真
!b 假 真 假 真
2. 关系表达式
关系表达式是用关系运算符将两个比较的对象连接起来的 式子。这里比较的对象可以是最简单的常数、变量,还可 以是一个表达式(算术表达式、关系表达式、逻辑表达式 、赋值表达式或字符表达式)。 如:a+b>b+c 对象为算术表达式 (a=3)>(b=5) 对象为赋值表达式 ‟a‟<„z‟ 对象为字符表达式 (a>b)>(b<c) 对象为关系表达式 表达式的结果是逻辑值“真”或“假”,C 语言中没有逻 辑型数据,而用数值“1”和“0”分别代表“真”和“假” 。例如:关系表达式“2==3”的结果为“假”,即表达式的 值为0。又如:表达式“’a‟<‟b‟” 的结果为“真”,即表 达式的值为1。
4.条件运算符
若 if 语句中,在表达式为“真”和“假”时,且都只执行一个 赋值语句给同一个变量赋值时,可以用简单的条件运算符 来处理。 例如,若有以下if语句: if(a>b) max=a; else max=b; 可以用下面的条件运算符来处理: max = (a>b)?a:b 其中“ (a>b)?a:b”是一个“条件表达式”
3. 多分支选择
格式2: if(表达式1) 语句1 else if(表达式2) 语句2 ┆ else if(表达式n) 语句n else 语句n+1