目录
一. if语句
1.if else语句
语法形式:
if( 表达式)
语句;
else
语句;
- if语句是条件语句,其中表达式为逻辑表达式或关系表达式。
- 表达式为真时,后面的那个语句执行;为假,则不执行
- (在c语言中,0为假,非0为真)
- 如果只有一种情况的条件下,else语句可以省略
- 当语句为复合语句时,需要加 { }
- 适用条件:可以用在有一种或两种并列情况的条件下,
- 多种并列条件可以用后面的if else if语句
#include<stdio.h>
int main()
{
if(num>0)
printf("是正数\n");
else
printf("⾮正数\n");
return 0;
}
2. if else if 语句
else if 语句的基本形式
if(表达式1 ) 语句1;
else if(表达式2 ) 语句2;
else if(表达式3 ) 语句3;
..............
else if( 表达式n) 语句n;
else 语句n+1;
- if else if 语句 可以用于有多种并列情况的条件。
- 执行过程:从上往下判断表达式的值,
- 如果else前面有一个表达式的条件满足条件时,就执行相应的语句;
- 如果else前面没有一个满足条件的就执行else语句后面的语句
3.if语句的嵌套
在 if else 语句中, if或else 可以与另⼀个 if 语句连⽤,构成多重判断。
基本形式
if( 表达式)
{
if( 表达式)
语句;
else
语句;
}
else
{
if( 表达式)
语句;
else
语句;
}
- 1.1在使用if语句的嵌套的时候,最好加上{ },
- 这样能看起来会更加条理清晰,可读性高。
- 如果不加,那么嵌套的一多,看起来就乱
- 1.2 其中else语句总是与最近的还没配对的if配对
判断奇偶数
代码示范:
#include<stdio.h>
int main()
{
if(num>0)
{
if(num%2 == 0)
printf("偶数\n");
else
printf("奇数\n");
}
else
{
printf("⾮正数\n");
}
return 0;
}
下面讲的关系、逻辑操作符通常是用在if、while等后面括号里,用作判断条件。
4.关系操作符、逻辑操作符
关系操作符
大致有> , = , < , !=(不等于),>= , <= , ==(判断是否等于)
- == 的两个操作数必须有一个常量和一个变量
- 4.1 多个关系操作符不宜连用
- 例如:2<a<3 在c语言是不能这样用
- 要写成2<a && a<3
- 4.2 关系表达式通常返回 0 或 1(即真或假)
逻辑操作符
运算符 | 名称 | 解释 | |
&& | 逻辑与 | 双目运算符,&&为并且的意思(&&两侧表达式都为真,才为真) | |
|| | 逻辑或 | 双目运算符,||为或者的意思(两侧表达式只要有其中一个为真,就为真) | |
! | 逻辑非 | 单目运算符,!为取反的意思(改变表达式的真假) |
短路问题
短路:
- 在c语言中,一条语句通常是从左往右依次执行。一条语句在执行的过程中,一旦发现有一个满足条件的表达式,那么该表达式之后的表达式就不会在执行了,这个现象叫短路。
- (一条语句通常是以分号结尾,但无开始的标志。)
- 例如 int a;
- 但for语句除外,for语句内的三个表达式需用分号分开。
例如
for(i=0;i<10;i++)
printf("i");//此为一个语句
- A. 对于&&来说,一条语句执行到表达式为假时,该表式之后的表达式都将不执行。
- B. 对于||来说,一条语句执行到表达式为真时,该表式之后的表达式都将不执行。
5.条件运算符
条件运算符也叫三目运算符,是if语句的另一种表示形式。
基本形式
表达式1 ? 表达式2 : 表达式3
执行过程:表达式1成立,则执行表达式2,反之执行表达式3。
注意事项:表达式1必须是关系表达式
优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 条件运算符 > 赋值运算符 > 逗号运算符
条件运算符的结合方向是从右向左
二.switch语句
switch语句的基本形式
switch (常量表达式)
{
case 常量表达式: statement
case 常量表达式: statement
default: statement
}
- 其中常量表达式的值可以是整型、字符型、枚举型
- (字符型在使用的时候,会将字符转换为相应ascll码值)
- 执行过程:switch后面那个常量表达式的值,如果能在对应的case 后面找到值相同的表达式,就执行后面的语句;否则,就执行default后面的语句。
- break语句在switch语句的作用:statement的结尾需要包含break语句,有了break语句才能在找到相应的值时,跳出switch语句。否则,在找到相应的值时,他会继续执行下一个case。
- switch语句的省略:如果出下几个case语句后面的statement都相同时,可以只留下一个statement。例如:星期一到五为工作日,星期六和星期天为休息日
代码示范
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}