目录
所学知识
分支语句
if语句
if与else的使用
if是可以单独使用的,以年龄为例子。如图所示:
双if的使用ps:双if是每一个if都会进行判断,依次对if进行判断,互相之间不会影响;
我们来看看if与else的搭配使用:
#include<stdio.h>
int main()
{
int age=20;
if(age>=18)
printf("成年了\n");
else//表示小于18的情况
printf("未成年\n");
return 0;
}
else的意思是另外一方面、其他。表达的是相反的情况。
我们再来说说当语句要执行多条代码时的情况,以打印数字为例:
#include<stdio.h>
int main()
{
int i = 1;
while (i < 10)
{
i++;
if (i == 5)//if要执行printf与break
{
printf("%d ", i);
break;//跳出循环
}
}
return 0;
语句只执行一条代码,可以不用加代码块,如果要执行多条语句,则要加上代码块。而且执行代码与语句之间,遵循就近原则。
if与else if的使用
if与else if的区别:if可以只要满足条件就执行,但是else if会发现即使第一个执行了,第二个满足条件依然不会执行。如图所示:
switch语句
做选择可以使用if语句,但是如果选择太多,if语句使用起来就会很繁琐,这个时候就需要一个能将代码简化的语句,也就是switch语句
#include<stdio.h>
int main()
{
int day;
scanf("%d",&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就打印星期一呢? 让我们试试
很显然结果并不是我们想要的,他把其他情况也一起打印来了了,这时好就要用我们的 break语句了。break语句:当switch语句运行时遇到break关键字时会跳出,意思就是当语句运行到break时就不再运行了,接下来剩下的case语句也不会再执行,switch语句结束。此时的打印结果,就是我们想要的到的。
大多数情况下这么输入1-7是没错的,但是万一输入了其他数字该怎么办?
这种时候就要用我们的default语句。
default的作用就是当表达式的值和常量值全部对比过之后,如果没有匹配的就会输出default后的语句。default语句的ps:default可以随意放置。
另外情况之间是没有顺序区分的。输出结果,如图所示:
接下来我如果要表示星期一到星期五都是工作日,星期六到星期天是休息日,要这么表达呢?
#include<stdio.h>
int main()
{
int day;
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;
}
return 0;
}
是这样吗?这样也可以,但是太繁琐了,有重复的情况。稍微简化一下,如下图所示
#include<stdio.h>
int main()
{
int day;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
我们把重复的情况删除了,这下变得更简洁了。
循环语句
while语句
while语句的语法与使用
首先我们先来看看while语句,为了解了语法结构,下面我写一个简单的小程序,通过while循环来打印1-10数字。运行代码如下:
#include<stdio.h>
int main()
{
int i = 1;//循环变量
while (i < 10)//判断条件
{
printf("%d ", i);
i++;//循环体
}
return 0;
}
输出结果如图:
其中i++是我们循环的关键,如果没有i++循环会变成死循环,如图:
为什么会出现死循环呢?原因是i++表示的是每循环一次就对循环变量增加1。i++可以写成i=i+1或i=+1。当然了i++并不是一成不变的,我们也可以每循环一次就对循环变量进行加减乘除,如;i=+2,i=*2。
break在while语句中的使用
break的使用:我们知道break语句是当程序运行到break语句后会结束循环。下面我还是以上面代码结合if语句为例,加入break语句。
#include<stdio.h>
int main()
{
int i = 1;
while (i < 10)
{
if(i==5)
{
break;
}
printf("%d ", i);
i++;
}
return 0;
}
这段程序的意思是,当我循环到第五次时,就跳出循环,并且打印1-4的数字结果如图:
为什么是1-4?不是1-5呢?我们说过break语句后会结束该次循环,第五次的printf被跳过去了,整个循环结束。
contiune在while语句中的使用
continue的使用:continue是用于终止本次循环的,本次循环中continue后边的代码不会再执行,进行下一次循环。
#include<stdio.h>
int main()
{
int i = 1;
while (i < 10)
{
if(i==5)
{
continue;
}
printf("%d ", i);
i++;
}
return 0;
}
最后的结果是什么呢,是1-4,还是12346789?,下面我们来揭晓答案
没想到吧,两个都不是,而是1+4的死循环,但是,为什么会出现死循环呢?前面我们说到continue是用于终止本次循环的,本次循环中continue后边的代码不会再执行,进行下一次循环。在我们的列子中当i为5时,执行continue,不仅跳过printf,还跳过了i++,导致我们的循环变量i一直是5,continue一直执行。
那我们应该怎么解决这种情况呢?其实很简单把i++往前调就行了,也可以是使用我们我们后面要说的for循环。
把i++调到前面,结果如图:
我们在来看看for循环,这就很好避免了i++被跳过去出现死循环的情况,结果如图:
for语句
for语句的语法与使用
for(表达式1; 表达式2; 表达式3)
{
循环语句;
}
表达式1为初始化部分,用于初始化循环变量的。
表达式2为条件判断部分,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整。
我们还是以打印1-10为例子
break在for语句中的使用
break语句在while循环和for循环中的效果是一样的,都是终止其所在循环语句。
continue在for语句中的使用
continue语句在for循环中的代码以及与运行结果:
do……while循环
do while循环与while循环的语法类似,不同的是do while循环至少会执行一次循环体内的内容。因此使用场景有限,不是经常被使用。下面是在屏幕上输出1-10数字,使用do while循环的代码
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
do…… while循环中的break语句
break语句:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (i==5)
break;//就进原则
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
do ……while循环中的continue语句
continue语句:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (i==5)
continue;//就进原则
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
总结
本篇博客依次介绍了if语句,switch语句、while循环、for循环以及do while循环,他们之间是可以嵌套使用的,是C语言语法中很重要的一环,希望看完了本篇博客可以让你有些许收获。