选择结构程序设计
①关系运算符和关系表达式
②逻辑运算符和逻辑表达式
③if语句
⑥switch语句
C语言用关系表达式和逻辑表达式通过if语句实现双分支选择,用switch语句实现多分支选择。
4.1 关系运算符和关系表达式
“关系运算”即“比较运算,是对两个值进行比较,比较的结果是得到真假两种值
关系运算符及其优先次序 C语言提供6种关系运算符 种类:< <= == >= > != 结合方向:自左向右 优先级别:
关系表达式 用关系运算符将两个表达式连接起来的式子
关系表达式的值:是逻辑值“真”或“假”,用1和0表示
4.2 逻辑运算符和逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。
逻辑运算符: C语言提供3种逻辑运算符
逻辑运算符的优先次序
!(非) , &&(与), ||(或)
优先次序:高(2) (11) (12)低 结合方向:从右向左 从左向右 从左向右
注意:C语言中, 运算量: ①0表示“假”,运算结果: 0表示“假”,②非0表示“真”, 1表示
逻辑运算中的注意点:
短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符
复杂逻辑条件的表述
例子:判断某一年year是否为闰年
判别闰年的条件(int year):
①能被4整除:
year%4==0
②能被4整除但不能被100整除:
(year%4==0)&&(year%100!=0)
③能被400整除:
year%400==0
综合起来:
((year%4==0)&&(year%100!=0))||year%400==0
优化语句:
(year%4==0&&year%100!=0)||year%400==0
4.3 if 语句(条件选择语句)
If语句的三种形式 形式一: 格式:if (表达式) 语句
形式二: 格式:
if (表达式)
语句1
else
语句2
形式三:
格式:
if (表达式1) 语句1
else if (表达式2) 语句2
else if (表达式3) 语句3
……
else if (表达式m) 语句m
else 语句n
例:判断输入字符种类
#include<stdio.h>
void main()
{ char c;
printf("Enter a character:");
c=getchar();
if(c<32) printf("The character is a control character\n");
else if(c>='0'&&c<='9') printf("The character is a digit\n");
else if(c>='A'&&c<='Z') printf("The character is a capital letter\n");
else if(c>='a'&&c<='z') printf("The character is a lower letter\n");
else printf("The character is other character\n");
}
例:输入两个实数,按由小到大的次序输出两数
#include <stdio.h>
void main()
{
float a,b,t ;
scanf("%f,%f",&a,&b);
if(a>b)
{t=a;a=b;b=t;}
printf("%5.2f,%5.2f",a,b);
}
例:输入三个数,按由小到大的次序输出
#include <stdio.h>
void main()
{ float a,b,c,t ;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
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”,a,b,c);
}
If 语句的嵌套
注意:if ~ else 配对原则:缺省{ }时,else总是和它上面离它最近的未配对的if 配对。
条件运算符
if语句中,当表达式为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值时,可以用条件运算符处理。
注意:条件运算符是 C 语言中唯一的三目运算符
条件运算符几点说明:
①条件运算符可嵌套 优先级: 13
②结合方向:自右向左
③表达式1?表达式2:表达式3
④类型可以不同,表达式值取表达式2和表达式3中较高的类型
例:输入一个字母,大写转小写,然后输出字母
#include <stdio.h>
void main()
{ char ch;
scanf("%c",&ch);
ch=(ch>=‘A’ && ch<=‘Z’)? (ch+32) : ch;
printf(“%c“,ch);
}
4.4 switch语句(多分支选择语句) 一般形式:
switch几点说明
- C1,C2,…Cn是常量表达式,且值必须互不相同
- 常量表达式起语句标号作用,必须用break跳出
- case后可包含多个可执行语句,且不必加{ }
- switch可嵌套
- 多个case可共用一组执行语句例
- switch嵌套
-
#include <stdio.h> void main( ) { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++;b++; break; case 3: a++;b++; } printf(“\na=%d,b=%d”,a,b); }
例: 判断某一年是否闰年
③使用逻辑表达式
#include <stdio.h>
void main()
{ int year,leap;
scanf(“Enter year:%d”,&year);
if((year%4==0&&year%100!=0)||(year%400==0))
leap=1;
else leap=0;
if(leap) printf(“%d is”,year);
else printf(“%d is not”,year);
printf(“a leap year.\n”);
}
本文笔记来自C程序设计谭浩强PPT,我是热爱学习的呵呵哒!
如果您觉得写得不错,点个赞呀~