一.什么是语句
C语言中由一个分号‘;’隔开的就是一条语句。比如:
printf("haha\n");
1+2;
再比如:
int main()
{
;
return 0;
}
单独的一个分号,也是语句,称为空语句。
二.if语句
1.语法结构:
1.if(表达式)
语句;
2.if(表达式)
语句1
else
语句2
3.if(表达式1)
语句1
else if(表达式2)
语句2
·······
·······
·······
else
语句3
比如
#include<stdio.h>
int main()
{
int age=18;
if(age<18)
printf("未成年\n");
else if(age>=18 && age<28)
printf("青年\n");
else if(age>=28 && age<50)
printf("壮年\n");
else if(age>=50 && age<90)
printf("老年\n");
else
printf("高寿\n");
}
结果是:
在这里再说明一种情况:
输出青年
如果运行上图的代码会输出“青年”,这是因为C语言不允许这样写判断表达式,表示and用‘&&’;表示or用‘||’。一旦用18<=age<28,电脑会先判断前面那个操作符,再判断后面那个操作符,即18<=age错误则为0,再0<28正确,那么就会输出“青年”,(0为假,非0为真)
当条件成立,要执行多条语句时要用“{}”将所写的语句包括。如:
2.悬空else
#include<stdio.h>
int main()
{
int a=0;
int b=2;
if(a==1)
if(b==2)
printf("hh\n");
else
printf("aa\n");
return 0;
}
当我们写下这样的一段代码,发现else的缩进很奇怪,不知道它是跟哪个if相匹配,我们再来看看输出结果:
结果是没有输出,这是因为else是跟最近的未匹配的if配对,也就是说其实正确缩进是这样的:
a==0,不符合条件表达式,所以后面的就不会执行,输出的也就是空。
三.switch语句
switch语句也是一种分支语句。常用于多分支的情况。
switch(整型表达式)
{
语句项;
}
语句项就是一些case语句,比如:
case 整形常量表达式
语句;
比如:
#include<stdio.h>
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期天\n");
}
return 0;
}
运行后发现,后面的都会输出:
这是因为break没有用到,在switch语句中,无法直接实现分支,搭配break才能实现分支
每个case后面都最好加上break,这样更能避免出错。
case还有一种用法:
像这样当我们输入1~5就会输出“工作日”;输入6~7就会输出“休息日”。
switch语句还需要考虑一点,就比如,如果表达的值与所有的case标签的值都不匹配怎么办?其实也没什么,结构就是所有的语句都被跳过而已。程序并不会终止,也不会报错,因为这种情况在C中并不认为适合错误。但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?你可以在语句列表中增加一条default子句。比如:
像这样,当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。
另外需要注意
1.switch后面必须是整型变量
2.case后面整型常量表达式(整数)
下面举些例子来证明: