目录
一、if语句
1.if
if的语法形式如下:
if(表达式)
语句;
表达式为真,语句执行;表达式为假,语句不执行。
在C语言中,0为假,非0为真。
例如:
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
return 0;
}
2.else
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if ( num % 2 == 1)
printf("%d,是奇数\n", num);
else
printf("%d,是偶数\n", num);
return 0;
}
3.分支中包含多条语句
默认在
if
和
else
语句中默认都只控制一条语句,比如:
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
在if和else语句中默认只控制一条语句,所以如果要控制多条语句时就需要用{}括起来,此外为了避免错误,在只有一条语句时我们也可以加上{}
例如:
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("已成年\n");
printf("可以谈恋爱了\n");
}
else
{
printf("未成年\n");
printf("不可以谈恋爱\n");
}
return 0;
}
4.嵌套if
在
if else
语句中,
else
可以与另一个
if
语句连用,构成多重判断。
例如:
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("少年\n");
}
else
{
if (age <= 44)
{
printf("青年\n");
}
else
{
if (age <= 59)
printf("中老年\n");
else
{
if (age <= 90)
printf("老年\n");
else
printf("老寿星\n");
}
}
}
return 0;
}
悬空else问题:
else总是与最接近的if匹配,不是和代码中对齐的if相匹配,在写代码时应注意{}的合理使用,会使我们的代码可读性跟高。
二、switch语句
1.if与Switch对比
除了
if
语句外,C语言还提供了
switch
语句来实现分支结构。
switch
语句是一种特殊形式的
if...else
结构,用于判断条件有多个结果的情况。它把多重
的
else if
改成更易用、可读性更好的形式。
例如:计算除3后的余数
if:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if (n % 3 == 0)
printf("整除\n");
else
{
if (n % 3 == 1)
printf("余数为1\n");
else
printf("余数为2\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n % 3)
{
case 0://case后有空格
printf("整除\n");
break;//一定注意加break
case 1:
printf("余数为1\n");
break;
case 2:
printf("余数为2\n");
break;
default://case和default没有顺序要求,但是default通常放在最后。
printf("?\n");
}
return 0;
}
switch:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n % 3)
{
case 0://case后有空格
printf("整除\n");
break;//一定注意加break
case 1:
printf("余数为1\n");
break;
case 2:
printf("余数为2\n");
break;
default://case和default没有顺序要求,但是default通常放在最后。
printf("?\n");
}
return 0;
}
2.case
注意:
case和后面的数字间必须有空格。
每个case执行完了以后都要加上break结束,否则会继续下一个case中的语句。
switch
语句也是分支效果的,只有在
switch
语句中使用
break
才能在跳出
switch
语
句,如果某一个
case
语句的后边没有
break
语句,代码会继续玩下执行,有可能执行其他
case
语句中的代码,直到遇到
break
语句或者
switch 语句结束。
3.default
在使用
switch
语句的时候,我们经常可能遇到一种情况,比如
switch
后的表达式中的值无法匹
配代码中的
case
语句的时候,这时候要不就不做处理,要不就得在
switch
语句中加入default 子句。
switch
后边的
expression
的结果不是
value1
,也不是
value2
的时候,就会执行
default 子
句。
在
switch
语句中
case 子
句和
default 子
句有要求顺序吗?
default
只能放在最后吗?
其实,在
switch
语句中
case 语句和 default 语句是没有顺序要求的
,只要你的顺序是满⾜实
际需求的就可以。
不过我们
通常是把 default 子句放在最后处理的。