分支与循环语句
分支语句:
- if
- switch
循环语句 :
- while
- for
- do while
go to语句
C语言中的语句——由一个;隔开的就是一条语句
C语言中的三种结构——顺序结构;选择结构;循环结构
分支语句(选择结构)
如果你加入内卷,可能会取得成功
如果你完全躺平,一定不会有好结果
像这样的就是选择,C语言如何实现:
if语句
语法结构:
- if(表达式)
语句;
- if(表达式)
语句1;
else
语句2;
//多分支
- if(表达式)
语句1;
else if(表达式)
语句2;
else
语句3;
注:表达式是判断条件真假的,C语言中0表示假,非0表示真
if语句实现
示例代码:
#include<stdio.h>
int main()
{
int a;
printf("你要加入内卷吗,请选择:>0\1 \n");
scanf("%d\n",&a);
if(a==1)
printf("取得成功\n");
else
print("不会成功\n");
return 0;
}
类比剩下两种语法
如果条件成立,要执行多条语句,应使用{ }放代码块
#include<stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
悬空else
代码见:
#include<stdio.h>
int main()
{
int a = 0,b = 2;
if(a == 1)
if(b == 2)
printf("haha\n");
else
printf("heihei\n");
return 0;
}
这段代码的运行结果是什么都不打印;
程序进行到a==1时,判断为假所以不会再继续下面语句直接到return 0;
那么不懂得铁铁们就要问了,为什么呢,不是还有else呢么;
告诉各位铁铁这个没有明确清楚的代码形式时,else总是与离它最近的if相匹配;
所以大家写代码时要注意自己的代码风格;
swith语句
语法结构
switch(常量表达式)
{
语句项;
}
语句项指的是一些case语句如下:
case常量表达式:
语句;
switch通常用于多分支的情况,因为使用if....else if...else if...else 的形式太麻烦,所以就有了另一种语法形式——switch语句
比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期七
#include<stdio.h>
int main()
{
int day=0;
scanf("%d\n",&day);
switch(day)
{
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期七\n");
}
return 0;
}
这种形式的代码如果输入1的话,电脑会把星期从一到七全部打印出来;
从case1进去后就顺着执行剩下的情况不会跳出;
就像如过输入3,电脑会从case3进去然后一直运行到程序最后;
为了解决这种情况就出现了break;
纠正:
#include<stdio.h>
int main()
{
int day=0;
scanf("%d\n",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期七\n");
break;
}
return 0;
}
像这样如果把case比作入口那break就像是出口直接跳到程序最后;
switch语句中,没有办法直接实现分支,需要搭配break才能实现真正的分支
根据需要灵活使用break
1~5输出工作日,6、7输出周末
#include<stdio.h>
int main()
{
int day=0;
scanf("%d\n",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
break语句的实际效果是把语句列表划分为不同的部分
编程的好习惯
default子句
如果表达式的值与所有的case标签的值都不匹配怎么办?
其实也没什么,就是所有的语句都被跳过而已,程序也不会终止,也不会报错,因为这种情况C中并不认为适合错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时怎么办呢?
可以在语句列表中增加一条default子句——default;写在任何一个case可以出现的位置,当switch表达式的值并不匹配所有的case情况时,这个default子句后面的语句就会执行。所以每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表中的任何位置,而且语句流就会像贯穿一个case标签一样贯穿default子句
在每个switch语句中都放一条default子句是个好习惯,甚至可以在后边再加一个break语句
循环语句 (循环结构)
while循环
上面已经介绍了if语句
当条件成立的情况下,if语句后的语句执行,否则不执行。但这个语句只会执行一次。
但生活中很多的实际例子是:同一件事情我们需要完成很多次就像学习。
C语言为了解决这个引入了while语句,可以实现循环
语法结构
while(表达式)
循环语句;
表达式也是判断条件真假的,条件为真则进入循环
while语句执行流程:
基本语法理解
在屏幕打印1~10的数字
#include<stdio.h>
int main()
{
int i = 0;
while(i<=10)
{
printf("%d ",i);
i++;
}
return 0;
}
帮助我们理解while语句的基本语法
while语句中的break与continue
break:
//代码示例
#include<stdio.h>
int main()
{
int i = 0;
while(i<=10)
{
if(i == 5)
break;
printf("%d ",i);
i++;
}
return 0;
}
屏幕打印:1 2 3 4
注:break在while循环中的作用:
在循环中只要遇到break,就停止后期所有的循环,直接终止循环,while中的break是永久终止循环的。
continue:
//代码示例
#include<stdio.h>
int main()
{
int i = 0;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ",i);
i++;
}
return 0;
}
这里屏幕输出的是:1 2 3 4 死循环
#include<stdio.h>
int main()
{
int i = 0;
while(i<=10)
{
i++;
if(i == 5)
continue;
printf("%d ",i);
}
return 0;
}
这里屏幕输出的是:1 2 3 4 6 7 8 9 10
注:continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下次循环的入口判断
看一个代码:
#include<stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
putchar(ch);
return 0;
}
getchar()——从键盘上获取字符等价于scanf("%c",&ch);
putchar()——把获取字符打印在屏幕上
for循环
语法结构:
for(表达式1;表达式2;表达式3)
循环语句;
表达式1——循环变量初始化;
表达式2——条件判断部分,用于判断循环合何时终止;
表达式3——调整部分,循环条件的调整;
for循环打印1~10数字
#include<stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化部分*/;i<=10/*判断部分*/;i++/*调整部分*/)
for(i = 1 ; i <= 10 ; i++ )
printf("%d ",i);
return 0;
}
for循环的流程执行图:
对比for循环与while循环,可看出for循环风格更胜一筹,同时for循环的使用次数也是最高的
for循环中的break与continue与在while循环中的意义是一样的
for语句的循环控制变量
建议:
- 不可在for循环体内修改循环变量,防止for循环失去控制
- 建议for语句的循环控制变量的取值采取前开后闭区间的写法
eg:
int i = 0;
//前开后闭写法
for(i = 0; i<10 ; i++)
{}
//两边都是闭区间
for(i = 0; i <= 9 ; i++)
{}
do...while循环
do语句语法:
do
循环语句;
while(表达式);
do...while循环语句执行流程:
do语句的特点
循环至少执行一次,使用的场景有限,所以不是经常使用
#include<stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n",i);
}while(i<10);
return 0;
}
break和continue具体分析
害~隔了挺长时间才更一个原因是在等时机,还有一个原因是期末考试复习紧张,一下这么多内容希望这个系列能对大家有帮助,一起加油!!!