分支语句与循环语句
一、分支语句(选择语句)
1.if-else 语句:
~ if-else的故事很长,待我慢慢道来哈~
1)基本语法结构:
> if(表达式)
> 语句1;
> else
> 语句2;
其中,表达式起到判断作用,若表达式为真,则执行语句1;若表达式为假,则执行语句2;(C语言中 0表示假,非0表示真)
2)多分支结构:
> if(表达式1)
> 语句1;
> else if(表达式2)
> 语句2;
> ...
> else if(表达式n-1)
> 语句n-1;
> else
> 语句n;
-
以上两种语法十分简单,一个判断,一个语句,但大多数情况下,我们并不是一对一的,而是一对多,一个判断,要执行很多语句,那该怎么办呢?嘻嘻,莫慌,我来告诉你!
引入代码块,也就是 ‘{}’ 大括号咯,将多条语句框起来,便可以实现一判断,多语句执行咯。合理的利用 ‘{}’ 也可以使我们的代码颜值加分哦!
-
为了梦想,加大难度!!!
3)嵌套if语句:
if(表达式1)
{
if(表达式2)
语句1;
else
语句2;
}
else//这里面的else跟那个if匹配呢?
{
if(表达式3)
语句3;
else
语句4;
}
注: else与if的匹配准则:else与最靠近它的并且没有与别的else匹配过的if相匹配。
嵌套的语法很容易出现错误,所以一定要注意代码习惯的养成,让自己的代码逻辑清晰。好吧,if-else暂时结束喽,so让我们一起去学习分支同伴Switch吧!
2.switch语句:
Switch语句也是分支语句,常常用于多分支的情况。话不多说,先看格式。
1)基本语法结构
switch(表达式){
case 常量表达式1: 语句1; break;
case 常量表达式2: 语句2; break;
...
case 常量表达式n-1: 语句n-1; break;
case 常量表达式n: 语句n; break;
default: 语句n+1; break;
}
如上面基本语法结构表示,首先求解表达式,如果所得的结果与下列常量表达式结果相同,则执行该常量表达式后面的语句;但若求解表达式与下面的所有常量表达式都不想同,那么便跳转并执行default后面的语句。最后通过break来跳出Switch语句。嘻嘻,想必大家一看就会了吧~
好,接下来让我们来变形一下下吧。
2)Switch变形:
switch(表达式){
case 常量表达式1:
case 常量表达式2:
语句 1;
break;
case 常量表达式3:
case 常量表达式4:
语句 2;
break;
default:
语句 3;
break;
}
如果我们想要表达式的多个结果都可以输出同一个语句,上面表达式便可以实现。比如 我想说age = 15,16,17,都表示未成年便可以通过这个变形实现。
Switch语句的分支效果是通过break来实现的,所以要合理运用break哈。
补充下:Switch表达式中只能是整形和枚举类型哦
二、循环语句:
1、while语句:
1)基本语法:
while (表达式)
{
循环语句;
}
举个栗子吧
- 来求个1~n项的和吧
#include<stdio.h>
int main()
{
int i = 1;
int sum = 0;
int n = 0;
scanf("%d",&n);
while(i<=n)
{
sum += i ;
i++;
}
printf("%d",sum);
return 0;
}
~~while的英语意思是当…时。在c中,也可以这样理解,当表达式正确时,则执行下方语句。
2)循环中的break、continue语句:
- break用法:
#include<stdio.h>
int main()
{
int i = 1;
int sum = 0;
int n = 0;
scanf("%d",&n);
while(i<=n)
{
sum += i ;
break;//位置1
i++;
}
printf("%d",sum);
return 0;
}
若在位置1处插入一个break,发现运行结果为1;不难推理出while只循环了一次,或者说是只执行了break前面的语句。所以break的作用便是跳出一层循环。
- continue的用法:
#include<stdio.h>
int main()
{
int i = 1;
int sum = 0;
int n = 0;
scanf("%d",&n);
while(i<=n)
{
sum += i ;
continue;//位置1
i++;
}
printf("%d",sum);
return 0;
}
若把break换成continue会发生什么呢?我们运行看下;
这里我们就发现只能输入一个5,无法输出结果。为什么呢,那是因为 continue执行后,后方的语句不再执行,直接跳到while循环的判断语句处。 而栗子中,i永远小于n,则该循环是死循环,无法跳出。
好吧,while语句就浅浅讲到这里吧。
2、for语句:
1)基本语法:
for(语句1;表达式;语句2)
{
循环体语句;
}
我们就用for语句来完成上面那个栗子吧
#include<stdio.h>
int main()
{
int i = 0;
int sum = 0;
int n = 0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum += i ;
}
printf("%d",sum);
return 0;
}
这样就可以表达上述的while语句的栗子了,大家看看,是不是更加清楚了。for的基本语法相当于表达式部分就相当于于while里的表达式,其判断真假的作用那个;i++也相当于while中最后一个执行的语句,所以for的执行方式,就很明显了吧。(注意for后括号中以 ‘ ;’ 连接。)
当然break,continue在for语句也可以使用,这里就不过多赘述
3、do-while语句:
1)基本用法:
do{
循环体
}while(表达式);
在do-while中,就是先执行后判断是否循环,与while相反。同样我们也用do-while来完成上面栗子。
#include<stdio.h>
int main()
{
int i = 1;
int sum = 0;
int n = 0;
scanf("%d",&n);
do {
sum += i ;
i++;
}while(i<=n);
printf("%d",sum);
return 0;
}
基本与while相同,我也就不多说了。
4、goto语句:
~goto 语句可是很有意思,如它英文,go to 真是来去自由啊,简直是C语言中的飞雷神!一起来了解它的用法吧。
//飞雷神,先标记;
flag://(标记)
//发动飞雷神,也就是运行goto;
goto flag;
//这样执行又回到了flag处,实现循环。
当然,我 “飞雷神” 不止如此,在多层循环中,有意想不到的效果,比如:
for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
...
error
if(disaster)
//处理错误情况。
如果在嵌套很深的循环中,break只能一层,一层的往外,而goto,则是一步到位,相当方便。
迟到忆点点的CSDN,萌新初上道,望佬多指教。