0.0 结构
C语言是结构化的程序设计 | ||
顺序结构 | 按顺序往下一步一步走 | |
选择结构-分支语句 | 不按顺序,有的选择 | if |
switch-开关 | ||
循环结构-循环语句 | 循环 | for |
while | ||
do while | ||
go to 语句 |
什么是语句?C语言中由一个分号;隔开的就是一条语句。如下
printf("TIGA_GA");
1+2;
分支语句(选择结构)
选择?顾名思义,即有多个条件可以选择。
if语句的语法结构是什么样的呢?
第一种,当if()括号内的表达式成立时,即为为真时(非0),执行语句;为假时(0)不执行。
if(表达式)
语句;
第二种,当if()括号内的表达式成立时,即为真时(非0),执行语句1;为假时(0),执行语句2。
if(表达式)
语句1;
else
语句2;
第三种,多分支,当if()括号内的表达式1成立时,即为真时(非0),执行语句1;else if()括号内的表达式2成立时,即为真时(非0),执行语句2;都不成立时,即均为假时(0),执行语句3。
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
1.1 单支语句
如果一个人的年龄为10,在C语言中实现判断这个人的年龄如果大于等于18,则显示成年。
int main()
{
int a = 10;
if (a >= 18)
printf("成年\n");
return 0;
}
编译运行显示 | ![]() |
由于10没有达到if表达式中大于等于18的要求,所以语句没有被执行。
1.2 双支语句
如果一个人的年龄为10,在C语言中实现判断这个人的年龄如果大于等于18,则显示成年;小于18,则显示未成年。
int main()
{
int a = 10;
if (a >= 18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
编译运行显示 | ![]() |
如果一个人的年龄为10,在C语言中实现判断这个人的年龄如果大于等于18,则显示成年;小于18,则显示未成年。
1.3 if和else语句后面只能控制一条语句
int main()
{
int a = 20;
if (a >= 18)
printf("成年\n");
else
printf("未成年\n");
printf("不能谈恋爱\n");
return 0;
}
理想运行结果 | 实际运行结果 |
![]() | ![]() |
如果想运行出理想运行结果,只需要添加{}即可,一个{}叫一个代码块
int main()
{
int a = 20;
if (a >= 18)
printf("成年\n");
else
{
printf("未成年\n");
printf("不能谈恋爱\n");
}
return 0;
}
1.4 表达式的正确书写
以下代码运行之后是什么结果
int main()
{
int y = 60;
if (y <= 18)
printf("未成年");
else if (18 <= y < 30)
printf("青年");
return 0;
}
理想状态下,结果应该没有显示,但实际上
结果显示青年,是因为y的初始值是60,60必然是满足else if的前提条件大于等于18的,在满足大于等于18之后,条件成立,为真即1,且1小于30,所以运行结果显示青年。
若想显示理想状态,即将else if中的表达式稍作修改即可,如下:
int main()
{
int y = 60;
if (y <= 18)
printf("未成年");
else if (y>=18,y < 30)
printf("青年");
return 0;
}
1.5 悬空else
代码1
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
代码2
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
代码1和代码2运行结果均无显示,else与离它最近的if所匹配,所以代码1和代码2本质上一样。