嗨害嗨,我又来了欧,C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,今天要带大家认识的就是 选择结构。话不多说让我们开始吧!
选择结构
单分支语句:if
if 语句
if ( 表达式 )
{
语句
}
我们可以把if语句看做如果,如果表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏,在c语言里0表示真,非0表示假
多分支语句:if...else、 if...else if...else 、switch
if...else 语句
if(表达式){
语句1
}
else{
语句2
}
如果if表达式为假(非0),那就执行else的语句,我们举个小栗子:如果我不是女生,那就是男生、如果我大于等于18岁,就是成年人了,否则就是未成年人
if(age>=18)
printf("成年\n");
else
printf("未成年\n");
tips::if和else都默认控制一条语句,如果我们要if语句同时控制2条语句,怎么办呢?那就要使⽤ {} 将代码括起来,else 后也可以跟上⼤括号。如下:
if(age>=18)
{
printf("成年\n");
printf("成年可以恋爱了\n")
}
else
{
printf("未成年\n");
printf("未成年不能谈恋爱哦\n");
}
如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
if...else if...else语句:
在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断,那就让我们通过一个判断分数的 小栗子来了解一下
if(score>=0 && score<60)
printf("不及格");
else if(score>=60 && scorescore<=100)
printf("及格");
else
printf("您输入的成绩有误");
switch 语句
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构,switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式,格式如下:
switch(a)
{
case 1:
printf("我是1");
break;
case 2:
printf("我是2");
break;
default:
printf("输入错误");
break;
}
上⾯代码中,根据表达式 a 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,就执⾏ default 分⽀。
注:
- switch 后的 a 必须是整型表达式
- case 后的值,必须是整形常量表达式
switch语句中的case和default的顺序问题:
在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实
际需求的就可以。不过我们通常是把 default放最后处理的
循环结构
1.while 语句
格式:
while(循环控制表达式)
{
语句;
}
语句n;
满足循环控制表达式的时候会执行while控制的语句,不满足循环控制表达式时,执行语句n。
注:
注意规避死循环,一定要设置循环出口
循环条件往往要赋初值
eg.
#include <stdio.h>
main()
{
int choice=1;//赋初值
while(choice!=0)//"!="为“不等于”,注意没有分号
{
printf("还在循环中\n");//“\n”表示换行
scanf("%d",&choice);
}
printf("已跳出循环\n");
}
当输入的choice值为0时,会跳出循环,否则将一直都在while循环体内。
2.do- while语句
格式:
do
{
语句;
}while(循环控制表达式);//注意有分号!
语句n;
与while循环类似,区别是会先执行一遍循环体内容。
注:
- while()后有分号!
- 其余需要注意的点与while循环相同
- 不管条件是否成立,至少都会执行一次
3.for语句
格式:
for(表达式1;表达式2;表达式3)
{
语句;
}
语句n;
表达式1:赋初值
表达式2:循环控制表达式
表达式3:控制循环变量表达式
下面先来举个例子
#include<stdio.h>
main()
{
int i;
for(i=1;i<=10;i++)
{
printf("%d",i);
}
}
通过i值的输出,我们可以看到循环执行了10次
tips:
- 循环变量(此处i为循环变量)需要定义
- for的括号内必有两个分号(即三条表达式),但是可以是空语句,
类似for(;;)并不会报错
4.辅助控制语句
(break 和 continue)
break | 跳出循环体,执行循环体外语句 |
continue | 跳过本次循环,进入下次循环 |
用例子进行阐明:
for语句(break)
#include<stdio.h>
main()
{
int i;
for(i=1;i<=10;i++)
{
printf("%d\n",i);
break;
}
}
for语句(continue)
#include<stdio.h>
main()
{
int i;
for(i=1;i<=10;i++)
{
printf("%d\n",i);
continue;
}
}
while语句(break)
#include<stdio.h>
main()
{
int i=1;
while(i<=10)
{
printf("%d\n",i);
i++;
break;
}
}
while语句(continue)
#include<stdio.h>
main()
{
int i=1;
while(i<=10)
{
printf("%d\n",i);
i++;
continue;
printf("标志符\n");
}
}
可以看到执行while语句(break)中,循环只执行了一次便退出循环;
执行while语句(continue)中,循环执行了10次,但是printf("标志符\n");未被执行,说明continue之后的语句被跳过,直接进入了下一个循环
tips:
break 和 continue 语句非常重要,通常与循环体一起出现,并且很有意思。