今天呢,来介绍一下c语言的分支和循环语言。
c语言有以下5种语句:
表达式语句
函数调用语句
控制语句
复合语句
空语句
今天介绍一下其中的控制语句,控制语句是指由 条件判断、转向语句、循环执行几种语句组合而成的。
目录
一、条件判断
(1)即由if else或者switch语句组合而成的语句
比较基础的就是if+一个else的语句,如:
我们可以看到if后面接了一个括号,而括号里面的内容表示条件符合就执行if后面的语句;
而如果条件是不满足if后面条件的任意条件,语句都会直接跳过if执行else后面的内容。
(2)如果在一个if或者else分支里面执行两个操作,这个时候我们就要使用{}将两个语句集合成一个整体,表示我需要执行这两个并列的语句,如:
——————————错误的示范:
如果我们把这个{}都去掉的话,就会发现下面这种情况:
你会发现它直接报错了,虽然有的情况下,多条语句不会产生任何错误,但是我还是非常建议多条语句尽量使用大括号,这样可以增强代码的逻辑性,也更能够看懂代码。
(3)如果要执行多条不同条件的代码呢
这里举一个例子,即我想输入1—7任意一个数字,电脑输出“今天是星期x”。这个时候我们就需要用到else If穿插在if 和else中间,比如:
#include <stdio.h>
int main ()
{
int day=0;
scanf ("%d",&day);
if (day==1)
{
printf ("今天是星期一\n");
}
else if (day==2)
{
printf ("今天是星期二\n");
}
else if (day==3)
{
printf ("今天是星期三\n");
}
else if (day==4)
{
printf ("今天是星期四\n");
}
else if (day==5)
{
printf ("今天是星期五\n");
}
else if (day==6)
{
printf ("今天是星期六\n");
}
else if (day==7)
{
printf ("今天是星期日\n");
}
else
{
printf ("输入错误\n");
}
return 0;
}
(4)同样的,上面的语句我们还可以使用另外一种语句————Switch case语句 ,可以改写成下面的样子:
#include <stdio.h>
int main ()
{
int day=0;
scanf ("%d",&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;
default:
printf ("输入错误\n");
break;
}
return 0;
}
switch case语句的基本语法就是
switch (定量或者变量)
{
case 整数常量或者整数常量的表达式1:
操作1;
break;
case 整数常量或者整数常量的表达式2:
操作2;
break;
...
default:
操作:
break;
}
那么语句当中的break是什么呢?它就是接下来要讲的转向语句。但是转向语句要在循环体里面执行,所以在这之前我打算先讲一下循环语句
二、循环语句
循环语句分为while 、do while、for循环
(1)首先先介绍一个while循环
while循环的主体结构其实很简单,就是while(循环条件){循环体}
循环条件应该是一个表达式,如果表达式为真就会表示1,否则就是0;比如2==2是真的,其实它表示的结果就是1,而2==3表示为加=假,输出0;所以我们也可以使用while(1)来表示循环的持续进行。
那么怎么使用一个while循环呢?
没错,就是这样(有点抽象)
while的条件语句里面是一个scanf时就可以持续输入,怎么结束呢?
while ( scanf ("%d",&day)!=EOF)
改成这样输入之后不想输入时输入ctrl+z+回车就好了。
(2)然后就是do while语句了
do while语句的主体结构就是do {循环体}while(循环条件);
和while循环不同的就是do while语句一进来不管三七二十一直接执行一次循环体,然后再进行判断,这样不管符不符合条件都会执行一次循环结构。(在你做一个小游戏的菜单界面要一开始就打印一个游戏开始界面菜单的时候用do while 循环真心好用)
使用do while语句例子:
(3)然后就是比较常用的for循环了,for循环通常使用一个变量循序增加表示次数
真心好用,比如我想要打印1到100就可以使用for循环
for循环的主体结构就是 for(变量初始化;循环条件;每次循环后做的事情){循环体}
我现在想要打印1到20的数字就可以这样使用:
ok,至此,已经讲完了三大循环,接下来就是如break这样的转向语句了
三、转向语句
最常用的转向语句就是break,continue,goto,当然还有return的语句,但是在平常使用中只有返回函数值和main函数里面用return 0表示结束,基本用的不太多,这里主要介绍三个转向语句:
(1)break语句算用到的最多的转向语句了,由于它能够直接跳出循环以及与switch语句高度适配的特性,break至此遥遥领先。
break在switch中的作用不可忽视比如一个正常的switch语句都会有很多个break,正常的执行一个switch语句应该是这样的:
#include <stdio.h>
int main ()
{
int day=0;
scanf ("%d",&day);
switch(day)
{
case 1:
printf("今天是星期一\n");
break;
case 2:
printf("今天是星期二\n");
break;
case 3:
printf("今天是星期三\n");
break;
case 4:
printf("今天是星期四\n");
printf ("今天是疯狂星期四,快去吃KFC吧!\n");
break;
case 5:
printf("今天是星期五\n");
break;
case 6:
printf("今天是星期六\n");
break;
case 7:
printf("今天是星期日\n");
break;
default:
printf("输入错误,请重新输入:\n");
break;
}
return 0;
}
此时我们可以正常吃kfc
但是如果把break全部去掉就会变成这样:
我们输入的是3,众所周知,星期三不是疯狂星期四,但是它却告诉今天是疯狂星期四,很显然,这是不对的,kfc只有在星期四吃才最划算
所以我们根据输出结果可以知道,其实在case和case之间是一个并列关系,它们和default之间也是并列的,相当于if和if之间的关系,但是加了break会使得它们之间变成if和else if之间的选择关系,这样可以更好地执行程序并顺利的吃上KFC
(2)continue也是一个好用的转向语句,continue在英文中的意思就是“继续”,它的作用就是休息此次循环后再次进行下一次循环。
那么continue和break有什么区别呢?打个比方吧,丁真喜欢抽瑞克5,他天天抽,突然有一天,医生告诉他说吸烟有害健康,他开始决定戒烟,于是他把瑞克5扔了以表决心,再也不抽烟了,对于抽烟这个循环来说,这个戒烟就是break;但是现在丁真还没有戒烟,他去吃了一顿饭,吃饭的时候他暂时没有抽烟,吃完饭回来之后他继续抽烟,那么对于抽烟这个循环来说,丁真吃饭这个动作就相当于continue,因为他吃完饭回来之后还是继续抽烟,所以抽烟这个循环没有停止,所以还要继续.
那么我们使用for循环表示一下这个continue:
不难看出,代码并没有打印我们的“加油特种兵”和“HERE”,所以goto相当于一个时空机器,可以穿越到你想要的地方,当然,后面的out你可以换成任何东西,全看你自己的了。