第4章 C语言选择结构程序设计
- 格式:doc
- 大小:42.50 KB
- 文档页数:7
本文由xjsir2010贡献 ppt文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
第4章 选择结构程序设计 章 第4章 选择结构程序设计 章 4.1 关系运算符及其表达式 4.2 逻辑运算符及其表达式 4.3 条件运算符 4.4 单条件选择if语句 单条件选择 语句 4.5 开关分支 开关分支switch语句 语句 习题4 第4章 选择结构程序设计 章 4.1 关系运算符及其表达式 关系表达式是由关系运算符连接表达式构成的。
1. 关系运算符 1) 关系运算符 关系运算符都是双目运算符,共有如下6种: >,<,>=,<=,==,!= 分别是大于、小于、大于或等于、小于或等于、 等于和不等于。
第4章 选择结构程序设计 章 2) 运算符的优先级和结合性 前4种关系运算符的优先级别相同,后2种也相同,前4 种高于后2种。
关系运算符具有自左至右的结合性。
关系运算符、算术运算符和赋值运算符之间的优先级次序 为:算术运算符优先级最高,关系运算符次之,赋值运算 符最低。
2. 关系表达式 1) 关系表达式 由关系运算符组成的表达式称为关系表达式。
关系运算符两边的运算对象可以是C语言中任意合法 的表达式。
例如,x>y,(x=5)<=y,x==y等。
第4章 选择结构程序设计 章 2) 关系表达式的值 关系表达式的值是整数0(代表结果为逻辑假)或 1(代表结果为逻辑真),在C语言中不存在专门的“逻 辑值”,此处请读者务必清楚。
例如,关系表达式 (x=3)>(y=4)的值为0。
关系表达式常用在条件语句和循环语句中。
3) 举例 一般情况下,关系表达式用在选择结构或循环结 构的关系判断中,并不需要输出关系表达式的值,这 里我们为了了解关系表达式的内部运行机制,在例4-1 中可以看到关系表达式的值只能是0或1。
第4章 选择结构程序设计 章 【例4-1】关系表达式示例。
#include "stdio.h" main( ) { char x='m' , y='n' ; int n ; n=x<y ; printf("%d\n" , n) ; n=x==y-1 ; printf("%d\n" , n) ; n=('y'!='Y')+(5<3)+(y-x==1) ; printf("%d\n" , n) ; } 第4章 选择结构程序设计 章 运行结果: 1 1 2 通过上面的程序可以看出:关系运算的结果为 “真”时,值等于1;结果为“假”时,值等于0。
第4章选择结构程序设计习题(P111)4。
2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。
4.3 写出下面各逻辑表达式的值。
设a=3,b=4,c=5。
(1)a+b〉c&&b==c (2)a||b+c&&b-c (3)!(a〉b)&&!c||1(4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c—1&&b+c/2解:该题在求解过程中注意:一、优先级。
逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低;二、逻辑表达式的求值规则。
(P94)所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)14。
4有3个整数a、b、c,由键盘输入,输出其中最大的数。
分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。
该题不用函数调用实现,但方法类似。
法一:先求前两个数的最值,再用前两个数的最值和第三个数比较即得结果。
法二:先假设第一个数是最值,再依次和第二、第三个数比较得结果。
其中都要用到单分支或双分支选择结构语句。
参考程序如下:法一:main(){ int a,b,c,max;/*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf(”\ninput the value of a,b,c:"); /*提示输入*/scanf(”%d%d%d",&a,&b,&c);/*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/if(a>b) max=a;else max=b;if(max<c) max=c;printf("\nmax=%d\n",max);}法二:main(){int a,b,c,max;printf(”\ninput the value of a,b,c:”);scanf(”%d%d%d",&a,&b,&c);max=a;if(max〈b) max=b;if(max<c) max=c;printf("\nmax=%d\n”,max);}4.6有一个函数:写一段程序,输入x,输出y的值。
第四章选择结构程序设计
本章知识点要求
1. 用if语句实现选择结构
2. 用switch语句实现多分支选择结构
3. 选择结构的嵌套
4.C语言支持两种条件语句:if和switch.此外,条件运算符(?:)在某些情况下可以替换if.
引言:
C语言选择结构程序设计结构的执行过程是通过条件判断来决定程序的下一步;那么,它主要是通过条件表达式和逻辑表达式的值来决定程序的下一步操作;
4.1 if语句
1.不含else子句的if语句
语句格式: If(表达式) 语句;
例如: if(x>y)printf(“%d”,x);
if(x>z) {x++; printf(“%d”,x);}
执行过程是: 先计算出表达式的值,如果表达式的值为
真(非0值),则执行其后的if子语句,执行后再去执行if语句后面的下一条语句;如果表达式的值为假(0值),则不执行if子语句,直接执行if语句后面的下一条语句.
例如: 输入两个实数,输出其中的最大数.
#include <stdio.h>
main()
{
float a,b;
scanf(“%f %f”,&a,&b);
if(a>b)printf(“%5.2f”,a);
if(b>a)printf(“%5.2f”,b);
}
2.含else的if语句
语句格式: If(表达式) 语句1;
Else 语句2;
执行过程是: 先计算出表达式的值,如果表达式的值是真,则执行语句1,执行后再去执行if语句后面的下一条语句;如果表达式的值是假,则跳过语句1而直接执行语句2.
例如: if(x>y)
Printf(“%d”,x);
Else
Printf(“%d”,y);
功能是: 如果x>y则输出x,否则输出y.
4.2 if语句的嵌套
1). 在if语句中嵌套具有else子句的if语句语句格式:
If(表达式1)
If(表达式)语句1;
Else 语句2;
Else
语句3;
2) 在if语句中嵌套不含else子句的if语句
格式:
If(表达式1)
{if(表达式2) 语句1;}
Else
语句2;
3) 在else子句中嵌套if子句
格式: If(表达式1) 语句1;
Else
If(表达式2) 语句2;
Else 语句3;
if语句的配对问题
C语言规定,else 总是与它前面最近的未配对的if语句配对。
例如: 比较两个数的大小关系
void main()
{
int a,b;
scanf(“%d%d”,&a,&b);
if(a!=b)
If(a>b)printf(“A>B\n”);
Else printf(“A<B\n”);
Else printf(“A=B\n”);
}
4.3 条件运算符和条件表达式
如果在条件语句中,只执行单个的赋值语句时,常可使用条件表达式来实现。
不但使程序简洁,也提高了运行效率。
条件运算符为?:,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式为:
表达式1? 表达式2:表达式3
其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。
1) 条件运算符可嵌套
例如:a>b?a:c>d?c:d 应理解为a>b?a:(c>d?c:d) 2) expr1、expr2、expr3类型可不同,表达式值取较高的类型
例x?‘a’:‘b’//x=0,表达式值为…b’; x‡0,表达式值为…a‟
x>y?1:1.5 //x>y ,值为1.0; x<y ,值为1.5
4.4 switch语句和break语句
1. switch语句
C语言还提供了一种用语多分支选择结构的switch语句格式:
Switch(表达式)
{
Case 常量表达式1 : 语句1;
Case 常量表达式2 : 语句2;
……..
Case 常量表达式n : 语句n;
default : 语句n+1;
}
执行过程是:
计算表达式的值,并逐个与后面的常量表达式的值比较,当表达式的值与整个常量表达式的值相等时,则执行它后面的语句,然后不再进行判断,继续执行后面所有case后的语句.如果表达式的值与所有的常量表达式的值都不相等时,则执行default后的语句.(注意语句后有break语句和没有break 语句区别),没有break语句,语句会顺序执行下去。
在使用switch语句时还应注意以下几点:
1) 在case后的各常量表达式的值不能相同,否则会出现
错误。
2) 在case后,允许有多个语句,可以不用{}括起来。
3) 各case和default子句的先后顺序可以变动,而不会影
响程序执行结果。
4) default子句可以省略不用。
2. break语句
该语句只能用在switch语句或循环语句中,作用是跳出
switch语句或跳出本层循环,转去执行后面的程序.
例如:计算器程序。
用户输入运算数和四则运算符,输出计算结果。
main()
{
float a,b;
char c;
printf("input expression: a+(-,*,/)b \n");
scanf("%f%c%f",&a,&c,&b);
switch(c){
case '+': printf("%f\n",a+b);break;
case '-': printf("%f\n",a-b);break;
case '*': printf("%f\n",a*b);break;
case '/': printf("%f\n",a/b);break;
default: printf("input error\n");
}
}
本例可用于四则运算求值。
switch语句用于判断运算符,然后输出运算值。
当输入运算符不是+,-,*,/时给出错误提示。