目录
if语句
1.单分支语句
语法结构:
if(表达式)
语句;
例如:
#include <stdio.h>
int main()
{
int a = 1;
if (a == 1)
printf("genius\n");
return 0;
}
if语句一次只能控制一条语句,若想要控制多条语句,需要加{}操作符。{}表示一个代码块。
例如:(若不加{},则只会执行printf("genius\n");)
int main()
{
int a = 1;
if (a == 1)
{
printf("genius\n");
printf("为真\n");
}
return 0;
}
2.双分支语句
语法结构:
if(表达式)
语句1;
else
语句2;
例如:(在C语言中,0表示假,非0(1、2、3......n)表示真)
int main()
{
int a = 0;
scanf("%d", &a);
if (a == 0)
{
return 0;
}
else
{
return 1;
}
}
例如:
int main()
//代码1
{
int a = 0;
scanf("%d", &a);
if (0==a)
{
return 0;
}
return 1;
}
//代码2
{
int a = 0;
scanf("%d", &a);
if (0 == a)
{
return 0;
}
else
{
return 1;
}
}
代码1与代码2相比,虽然两者表达意思相同,显然代码2更美观,更利于理解。判断是最好将数值放前面,如if(0==a),这样在编写代码时,更利于编译器的检错提示,避免将判断写为赋值。(现在的编译器非常灵敏)。
例如将这里的==改为=,它会提示表达式的左端必须为可修改的左值(即变量),如果将数值放在右端,编译器会理解为赋值,则不会出现警告。这样的写法有助于我们养成良好的代码风格,良好的代码风格会是我们的一个加分项!!
3.多分支语句
语法结构:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
int main()
{
int a = 0;//初始化
scanf("%d", &a);
if (a > 0)
{
printf("%d大于0",a);
}
else if (a < 0)
{
printf("%d小于0", a);
}
else
{
printf("%d等于0", a);
}
return 0;
}
4.if语句的嵌套
if语句内部语序单分支、双分支、多分支的嵌套
int main()
{
int a = 0;
scanf("%d", &a);
if (0!=a)
{
if (a % 2 == 0)
printf("偶数\n");
else
printf("奇数\n");
}
else
printf("结束\n");
return 0;
}
5.悬空else
else的匹配:else是和它离的最近的if匹配
int main()
{
int a = 0;
int b = 2;
if (1 == a)
if (2 == b)
printf("0\n");
else
printf("1\n");
return 0;
}
因此这段代码既不会输出1也不会输出0。如果将这段代码复制到vs编译器中(vs2019非常灵敏),编译器会自动调整代码,如下图所示:
可以看到else是与if(2==b)匹配的。(这里的a!=1,因此不会进入if循环,既不输出1,也不输出0),这个例子也说明我们需要拥有良好的代码风格。
switch语句
switch语句也是一种分支语句,常常用于多分支的情况。
switch语句语法结构:
switch(表达式)
{
case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
case 常量表达式3:语句3;break;
.
.
.
case 常量表达式n:语句n;break;
(default:语句n+1;)
}
1.switch语法结构注意点
switch(表达式)—这里的的表达式只能是整型或整型表达式(可以是变量,但必须是整型)。例如下列代码都是正确表示方式
int a = 2;//整型
//short a=2;
//long a=2;
//long long a=2;
switch(2)//整型常量
//switch(a) //整型常量
//switch (a+a)//整型常量表达式
int a = 0;//整型
scanf("%d", &a);
switch (a)//整型变量
int a = 0;//整型
scanf("%d", &a);
switch (a+a)//整型变量表达式
还有一种比较特别的情况,例如:
原因:字符型存储的是ASCII码值,所以返回的也是一个整型,本质上还是整型变量,因此也可以执行。但是浮点数(单精度float、双精度double...)不是整型,因此不能执行。
2.break语句
break是结束标志, break语句的作用是用来跳过后面的case语句,结束switch语句,真正起到分支作用。
(这里也说明了case是switch语句的入口,当a==5时,是从case 5进入的)
break语句在switch语句中是可选的,即case后面可以不加break,根据实际要求加或不加。例如:
int main()
{
int a = 0;
scanf("%d", &a);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
即:输入1、2、3、4、5,则输出weekday;输入6、7,则输出weekend.
3.default语句
有时候,分支语句中情况比较多,而有些情况不需要考虑时,就需要用到default语句。例如:没有default语句时,输入表达式以外的值,则程序不会输出。