分支与循环这一章节是C语言学习过程中很重要的一个环节,后面的很多内容都是在熟练掌握分支与循环的前提下学习的,下面我们就来讲一下分支与循环
分支语句
再学习分支语句前要先学会判断语句的相关写法
判断语句的写法
if( )里面的判断语句的写法也是有讲究的,下面我们来看一下如何写
- 判断是否大于(小于):直接用 > (<)号就可以
- 判断是否等于:判断是否等于时要用到==,而不是=(最容易犯的错误)一个等于号代表的是赋值,结果永远为真,而两个等于才是判断是否相等
- 判断是否不等于:用 !=表示判断是否不等于
- 判断条件的与或:&&代表 与,两个条件同时成立结果才为真,||代表 或,两个条件满足一个就为真,两者都满足短路特性(如果判断一条语句就可以得出结果,那另一条语句不会再执行判断)
1.if…else语句
先看下面一行代码
#include<stdio.h>
int main()
{
int a=2,b=3;
if(a>b)
{
printf("%d\n",a);
}
else
{
printf("%d\n",b);
}
return 0;
}
这样的一段代码输出的结果就是 3,从上面的代码很容易可以看出它的格式即
if(条件语句判断)
{
要执行的语句1;
}
else
{
要执行的另一条语句2;
}
如果if中的判断结果为真,那么就执行语句1,并且不会执行语句2;同样,如果为假,执行语句2,并且不会执行语句1。
注意如果if后面要执行的语句1或语句2中只有一行代码那么{ }可以省略不写
悬空else
else是和离它最近的if相匹配的
例如下面一段代码:
#include<stdio.h>
int main()
{
int a=2,b=3;
if(a==1)
if(3==b)
printf("hehe");
else
printf("haha");
return 0;
}
你觉得这段代码的结果是什么呢?没错不输出任何结果。因为第一个if判断结果为假,后面的内容就不再执行了,下面的else是与第二个if相匹配的,由此可以看出{ }以及代码风格的重要性。
2.switch语句
switch语句常用于有多分支的情况,大多数情况下可以与if语句互相转换。
看一下下面代码
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
switch(a)
{
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;
}
我们通过键盘输入一个数字赋值给a,进入switch语句后,通过判断a的值从而找到相对应的case语句。值得注意的是每一条case语句结束后都应当用一个break来表示结束 如果没有break找到相对应的case语句后会把后面的所以语句内容全部执行。
default子句
如果在switch中找不到相对应的case,这时候可以使用default来表示其他,其位置放在哪里都可以。
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
switch(a)
{
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;
default printf("找不到星期几\n");break;
}
return 0;
}
循环语句
1.for循环
首先先看一段代码
#include<stdio.h>
int main()
{
int i;
for(i=1;i<=10;i++)
{
printf("%d ",i);
}
return 0;
}
这段代码的作用是打印1~10之间的数。从上述代码可以看出for循环的基本格式
for(表达式1;表达式2;表达式3)
{
执行语句;
}
表达式1:为初始化部分,用于初始化循环变量
表达式2:为条件判断部分,用于判断循环是否终止(可以省略只写一个;无限循环)
表达式3:为调整部分,用于循环条件的调整
2.while循环
先看下面一段代码
#include<stdio.h>
int main()
{
int i=1;
while(i<=10)
{
printf("%d ",i);
i++;
}
return 0;
}
这也是输出1~10,不同的是这使用的是while循环,可以看出while循环中也存在初始化,条件判断以及调整部分,不同的是他们的位置不同。
while中的break,continue语句
看下面一段代码
#include<stdio.h>
int main()
{
int i=1;
while(i<=10)
{
printf("%d ",i);
i++;
if(i==4)
{
break;
}
}
return 0;
}
这段代码的输出结果为1 2 3,由此可以看出break的作用是跳出结束循环。
再来看下面一段代码:
#include<stdio.h>
int main()
{
int i=1;
while(i<=10)
{
if(i==4)
{
continue;
}
printf("%d ",i);
i++;
}
return 0;
}
这段代码的输出结果是 1 2 3 然后无限循环,原因是continue的作用是跳过本次循环并且本次循环后面的内容不再执行,直接跳转到while的判断,i没有加一,导致i一直是4,所以无限循环。
我们对这个代码稍加修改,改一下i++的位置
#include<stdio.h>
int main()
{
int i=1;
while(i<=10)
{
i++;
if(i==4)
{
continue;
}
printf("%d ",i);
}
return 0;
}
这段代码的结果就变成了2 3 5 6 7 8 9 10 11,可见我们在写代码时一定要注意continue的位置。
3.do…while语句
还是先看代码
#include<stdio.h>
int main()
{
int i=1;
do
{
printf("%d ",i);
i++;
}
while(i<=10);
return 0;
}
这段代码的作用还是输出1~10,与while不同的是do…while语句不管是否条件成立都先执行一次do里面的语句,之后再进行判断是否条件成立,而while则是先判断再执行。
break,continue语句的用法在这三个循环语句中的用法一致
结语
到这里我所介绍的分支与循环语句就结束了,希望可以帮到各位。要想熟练掌握分支与循环语句,仅仅学会简单的基本语句是不能掌握的,最重要的还是要多敲代码多刷题。我想要告诉大家努力终有回报的。