目录
一、选择结构和条件判断
很多问题是顺序结构程序解决不了的,例如:计算分段函数
x在大于等于0和小于0两种不同的情况时,函数将用不同的表达式来求y的值,这时就需要在计算y的值之前先对x的值进行判断,C语言中用选择语句来实现这一判断。
二、关系运算符和关系表达式
1.关系运算符:在C语言中,比较符(或称比较运算符)称为关系运算符。所谓“关系运算就是“比较运算”,将两个数值进行比较,判断其比较的结果是否符合给定的条件
2.关系表达式:
用关系运算符将两个数值或数值表达式连接起来的式子,称为关系表达式
关系表达式的值是一个逻辑值,即“真”或“假”
在C的逻辑运算中,以“1"代表“真”,以“0”代表“假”
求如下关系表达式的值:
3>5值为:0
3<4>2 值为:0
设x=-2;-3<x<-1值为:0
设x=1;2<x<4 值为:1
算术运算符优先级高于关系运算符3+(4<3)*4 值为:3 3+4<3*4 值为:1
注意:不能用数学里习惯的关系运算符连用表示区间关系!
三、逻辑运算符和逻辑表达式
1.逻辑运算符:
注意:参与逻辑运算的操作数叫逻辑量(逻辑型数据)
但C语言规定逻辑量可以是整型、实型、字符型和指针类型其中,0,0.0,'\0’,NULL代表假,其余逻辑量代表真。
2.逻辑运算表达式:用逻辑运算符将关系表达式或其他逻辑量连接起来的式子就是逻辑表达式
(1)'&&"和“"”是双目运算符,要求有两个运算对象(操作数);"!"是单目运算符只要有一个运算对象
(2)优先次序:!(非)→&&(与)一或),即"!”为三者中最高的;逻辑运算符中的“&&"和“"”低于关系运算符,"!”高于算术运算符
(3)逻辑运算结果不是0就是1,不可能是其他数值。而在逻辑表达式中作为参加逻辑运算的运算对象可以是0(“假”)或任何非0的数值(按“真”对待)
3.逻辑表达式一般用于控制语句中的条件:
例如:
(1)n是小于m的偶数:
n<m&&n%2=0
(2)year是闰年:(能被4整除但不能被100整除,或能被400整除)year %4=0&& year%100!=0lyear%400==0
四、用if语句实现选择结构
1 .if语句的三种形式
①单分支if语句
说明:条件表达式的值为'非0’或'0’,必须用()括住。
若有多条语句(复合语句)时,用{}括住。
(条件表达式)后不要加; 。
例题
#include <stdio.h>
int main()
{float x,y;
scanf(“%f ",&x);
y=2*x;
if(x<0)y=3-x;
printf(“y= %.2f",y);
}
②双分支if语句
if(表达式) 语句1
else 语句2
执行过程:
首先先判断表达式的值
若为非0则执行语句1
若为0则执行语句2
if语句的双分支形式,在语法上视为一条语句。
例 输入两个数,比较其大小,将较大的数输出算法分析:
(1)输入两个数据a,b;
(2)如果a>b 则输出a;否则,输出b.
#include <stdio.h>
int main()
{float a, b;
scanf("%f, %f",&a,&b);
if(a>b)printf (“%f", a );
else printf (“%f", b );
}
③.if语句的嵌套
if语句结构的语句1和语句2又称为if的执行语句。
if的执行语句在语法上是一条语句,可以是任何类型的语句,简单语句、复合语句、空语句、流程控制语句都可以作为if的执行语句。
下面通过一个例子分别介绍用不同的语句作为if的执行语句的情形:
例4 计算分段函数:
方法一:用简单语句
#include<stdio.h>
int main( )
{ float x,y;
scanf(“%f",&x);
if(x<=-10)y=2*x;
if(-10<x&&x<=0)y=2+x;
if(0<x&&x<=10)y=x-2;
if(x>10)y=x/10;
printf(“\ny=%f",y);
}
方法二:用if语句做语句2
#incude<stdio.h>
int main()
{
floatx,y;
scanf(“%f",&x);
if(x<=-10)y=2*x;
else if(x<=0)y=2+x;
else if(x<=10)y=x-2;
else y=x/10;
printf(“\ny=%f",y);
}
这种用if语句作为上一层if语句的语句2的结构称为if语句的多分支选择结构
五、条件运算符和条件表达式
条件运算符:
?和:,它们与三个操作数组成三元运算。
形式为:<表达式1>?<表达式2>:<表达式3>
求值规则:
先求解表达式1的值
若为真(非0)求解表达式2,并把表达式2的值作为整个条件表达式的值
若为假(0),求解表达式3,并把表达式3的值作为整个条件表达式的值
逻辑>条件>赋值优先级:
结合性:自右至左;
六、用switch语句实现多分支选择结构
if语句是根据表达式的值是否为0来判断执行哪一分支的。
某些情况下,要根据表达式的不同值来判断执行哪一分支,如表达式的值为12,3时,分别执行不同的操作。
虽然也可以用多条if语句来完成这一工作,但c语言中提供了一条switch语句,可以更方便的完成。
switch语句(开关分支语句)
标准形式:
一般形式:
说明:
E1,E2....En是常量表达式,且值必须互不相同。
case常量起语句标号的作用,必须用break跳出
case后可包含多个可执行语句,且不必加{}
多个case可共用一组执行语句。
七、选择结构程序综合举例
例 写一个程序,判断某一年是否为闰年。
算法分析:
如果此年号能被400整除则它是闰年;
如果能被4整除,而不能被100整除,则也是闰年;
程序流程如图所示。
#include <stdio.h>
int main()
{int year,leap;
printf("Enter year:");
scanf("%d",&year);
if(year%400==0||year%4==0&&year%100!=0)leap=1;
else
leap=0;
if(leap) printf("%d is a leap year.",year);
else printf("%d is not a leap year.",year);
}