初识c语言
c语言有三大结构
1.顺序结构
2.选择结构
3.循环结构
分支语句的关键字
if
switch
何为语句?
用“;”隔开的内容叫一条语句
;
这个也算是语句,不过是空语句
分支语句(选择结构)
if语句:
语法结构:
- if(表达式)
语句; - if (表达式)
语句1;
else
语句2; - 多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
下面以代码为例
#include <stdio.h>
int main()
{
int age = 20;
if (age < 18)
printf("未成年\n");
else
printf("成年\n");
}
多分支选择语句:
int main()
{
int age = 20;
if (age < 18)
printf("未成年\n");
else if (18<=age<28)
printf("青年\n");
}
经过运行就能发现,如果输入50打印出来的结果也是“青年",显然不符合我们的预期,这里else if 括号中的表达式出现了错误,不可以以这种形式书写表达式
应该正为:
#include <stdio.h>
int main()
{
int age = 50;
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");
}
此外这段代码还可以写为:
#include <stdio.h>
int main()
{
int age = 50;
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");
}
}
在 if 语句中,若 if 的语句列表不止一个,要使用 {}代码块将所有语句列表括起来,否则会发生编译错误 ,如下所示
#include <stdio.h>
int main()
{
int age = 10;
if (age < 18)
printf("未成年\n");
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");
}
}
应该调整为:
#include <stdio.h>
int main()
{
int age = 10;
if (age < 18)
{
printf("未成年\n");
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");
}
}
悬空else:
先以一段代码为例
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 0)
if (b == 1)
printf("5\n");
else
printf("10\n");
return 0;
}
可以看到,这段代码压根编不出结果,是因为,else 和 上面两行代码的 if 对应发生了错误,而 else 只会选择与其最近的 if 对应。
改进方案:
若想要结果为 10
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 0)
{
if (b == 1)
printf("5\n");
else
printf("10\n");
}
return 0;
}
在第一个 if 后添加一个代码块,结果就是10了
这里有一个良好的书写习惯
如下代码:
#include <stdio.h>
int main()
{
int num = 4;
if (num = 5)
printf("hehe\n");
return 0;
}
可以发现,这里手误,把 num==5
打成了num=5
,产生了一个bug,而且难以检测,导致结果错误。
所以,在以后的代码编写中把num==5
换成5==num
,便不会产生bug
这是一个良好的的编写习惯!!!