分支和循环(1)
1.分支语句
(1)if语句
语法形式
if(表达式)
语句
若表达式成立(非0),则执行后面的语句,若为假(0),则跳过该语句不执行
如:
#include <stdio.h>
int main()
{
int a=3;
if(a==2)
{printf("haha");}
return 0;
}
因为表达式不成立,所以语句不会执行,如下图
注意:if语句后的表达式在没有花括号包围的前提下默认执行第一条语句,为了防止错误出现,我们一般在if后用花括号把表达式合在一起
2.else
如果if表达式错误,要把其他的情况再起一个语句,就可以利用else来完成。
注:else后面不需要套表达式,它执行的是除if外的所有情况
if(表达式)
语句
else
语句
3.if的嵌套
在if else语句中,要想构成三个或三个以上的多重判断,可以用else if 来完成
if(表达式)
语句
else if(表达式)
语句
else
语句
如果要更多判断,就再在else if 中嵌套。要注意的是,else if 中表达式范围是默认排除上面的if(或else if)表达式范围来执行,如:
#include <stdio.h>
int main(){
int age=0; //初始化年龄
scanf("%d",&age);
if(age<18)
printf("未成年");
else if(age<=44) //默认在大于等于18岁的范围内框定范围,即18~44岁的范围内输出青年
printf("青年");
else //大于44岁
printf("中年或老年");
return 0;}
注意:如果有多个 if 和 else ,默认 else 和最近的 if 匹配
#include <stdio.h>
int main()
{int a=0;
int b=2;
if(a==1)
if(b==2)
printf("hehe\n");
else
printf("haha\n");
return 0;}
根据上面的提示,else应该和if(b==2)匹配,而这个if else 是嵌套在第一个 if 里面的,所以执行的结果为空
(2)switch语句
switch语句是一种特殊形式的if…else语句,用于判断有多个结果的情况,相对else if的嵌套更好用
switch(整形表达式)
{
case ?:语句
case ?:语句
default:语句
}
根据switch表达式的值,对应不同的case(?),执行对应的语句,如果所有case值都找不到,则执行default。
例:
#include <stdio.h>
int main(){
int n=0;
scanf("%d",&n);
switch(n%3)
{
case 0:
printf("余数为0\n");
break;
case 1:
printf("余数为1\n");
break;
case 2:
printf("余数为2\n");
break;
}
return 0;}
注意:case后面要有空格,且每个case语句后面都要加break才能跳出switch语句。
反例:
原本只打印余数为零,结果下面的全执行了
2.循环语句
(1)for循环
语法形式
for(表达式1;表达式2;表达式3)
{
语句;
}
表达式1:循环变量的初始化
表达式2:循环结束条件的判断
表达式3:每次循环变量值的改变
先执行表达式1(初始化),再进行语句,出语句时进行一次表达式3,再次进入循环时判断是否在表达式2的范围内,如果在,进行下一次循环,如果不在,跳出循环。
#include <stdio.h>
int main(){
int a=0;
for(a=0;a<4;a++)
{
printf("%d ",a);
}
return 0;}
接下来看执行的结果
当循环到a=4时,不满足表达式2,因此跳出循环
(2)while循环
语法形式
while(表达式)
{
表达式;
}
结构与 if 相似,但 if 只执行一次,while 可执行多次
例如:
#include <stdio.h>
int main() {
int a = 0;
while (a<4)
{
printf("hehe\n");
a++;
}
return 0;
}
接下来看执行结果
此时执行了四次循环,如果是if的话只能执行一次
(3)do while循环
语法形式
do
{
语句;
}
while(表达式);
与while不同的是,do while 循环无论表达式真或假,都会先执行一次,而 while 表达式如果为假,直接不执行
例如
#include <stdio.h>
int main() {
int i = 1;
do
{
printf("hehe\n");
} while (i < 1);
return 0;
}
上面的代码已知 i 为1(不小于1),表达式已为假,在 while 中应该什么都不打印,而在 do while 循环中会先执行一次,再判断表达式,我们看执行结果:
最后补充一个 goto 语句
当使用了 goto ,就是忽略下面的语句,直接进入要跳转的地方
#include <stdio.h>
int main()
{
printf("hehe\n");
goto abc;
printf("haha\n");
abc:
printf("嗯\n");
return 0;
}
因为要跳转到abc,所以忽略了printf(“haha\n”);直接跳转到abc:,我们看执行结果