分支与循环2(初识c语言)

switch中的break

在前一篇的分支与循环1中,我们提到了这么一个代码:

#include <stdio.h>
int main()
{
int a=0;
scanf("%d",&a)
switch(a%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数为1\n");
break;
case 2:
printf("余数为2\n");
break;
}
return 0;
}
 

 之前没有提到过break这个语句却在这里出现了,我们今天就一起来探寻它在switch语句中的作用吧。

在这个代码中,不知各位是否想过,如果删掉break,代码运行起来会出现什么情况咧,让我们来看看

#include <stdio.h>
int main()
{
int a=0;
scanf("%d",&a)
switch(a%3)
{
case 0:
printf("整除,余数是0\n");
case 1:
printf("余数是1\n");
case 2:
printf("余数是2\n");
}
return 0;
}
 

 

这个时候我们发现,当删去break之后,后面的内容都被打印出来了,从这里其实很明显就能看出,break其实有跳出语句的作用 。因为switch语句的效果也是分支的,只有在switch语句中运用break,才能在某一个分支语句结束时顺利跳出,如果case后面没有break,那么语句就会一直执行下去。所以说想要真正的实现分支效果,那break就在这里起到及其重要的作用。当然,case语句不一定非要和break一起用,具体情况具体分析。

例如,输入一个数字,打印对应的星期几

#include <stdio.h>
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期天");
break;
}
return 0;
}

那如果我要转变条件,变成12345打印工作日,67打印休息日呢?

#include <stdio.h>
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
}
return 0;
}

在这个代码中,就体现了case其实不一定 要和break搭配,需要看输出效果。比如case1 2 3 4和case 6都没有用到break,所以还是那句话,具体情况具体分析。

Switch语句中的default

当我们使用switch语句的时候,时常会发现有的结果case里没有,咋的办呢,那这个时候default语句就排上用场了。框架:

switch(  )
{
case 1:
case 2:
default:
}

default就是在遇到Switch后面的整式计算出来的结果不在case中的时候,就去执行它的。

比如在前面的代码中,当输入的不是一周七天中的任意一天的时候,就会执行default语句:

#include <stdio.h>
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
default:
printf("输入错误");
break;
}
return 0;
}

switch语句中的case 和default顺序

其实在switch语句中的case和default的顺序是没有要求的,不过我们通常把default放在语句的末尾。

while循环

while循环的if语句的对比:

//代码1
#include <stdio.h>
int main()
{
if(1)
printf("");
return  0;
}



//代码2
#include <stdio.h>
int main()
{
while(1)
printf("");
return 0;
}

 他们的结构差不多,但是while具有循环效果。

while语句的执行流程

首先上来就是判断while循环是否会执行,如果表达式的值为0,循环直接结束,如果表达式的值非0,循环开始,在语句执行完之后继续判断,直到条件不符合则退出循环。

while循环的实践

在荧幕上打印1-10的值

#include <stdio.h>
int main()
{
int a=1
while(a<=10)
{
printf("%d",a);
a++;
}
return 0;
}

 正序输入一个整数,然后倒序打印他的每一位

#include <stdio.h>
int main()
{
	int a = 0;
	scanf_s("%d", &a);
	while (a)
	{
		printf("%d", a%10);
		a = a / 10;//先打印再更新
	}
	return 0;
}

for循环

for循环的基本形式如下:

for(变量初始化;循环结束条件;计算式)
{
语句;
}

for循环的执行流程

首先,先对变量进行初始化,然后对循环结束条件进行判断,如果循环结束条件为真(即!=0),则循环开始,如果循环条件为假(=0),则结束循环。当判断为真时,执行括号中的计算式和语句,调整循环变量,然后再去判定一次循环结束条件的真假,往复循环,直到达到循环结束条件,就跳出循环。

在整个循环过程中,变量初始化只执行一次,剩下的就是循环结束条件和计算式在每一次循环的时候都要执行一遍。

for循环的实践

在屏幕上打印 1-10的数字

#include <stdio.h>
int main()
{
int a=0;
for(a=1;a<=10;a++)
{
printf("%d",a);
}
return 0;
}

 

 while循环和for循环的比对

由上面这两个比对图我们可以发现,while循环的for循环的差别其实不大,while循环是把条件都分开来写,而for循环是把条件都合起来写,当代码较多的时候,用for循环能对代码起到优化,使分散的初始化、判断、调整更集中。

do--while循环

do--while循环在循环语句中使用的比较少,与while循环不同的是do--while循环是先执行一次循环再来判断条件的,具体实现形式如下:

do
{
语句;
}
while(判断条件);

因为do--while循环的特性,决定了这个循环至少执行一次,执行完一次之后才再去判断条件的真假,根据判断的结果再考虑是否需要继续循环。

do--while循环的实践

在屏幕上打印1-10的值

#include <stdio.h>
int main()
{
int a=0;
do
{
a++;
printf("%d ",a);
}
while(a<10);
return 0;
}

 

 例二,输入一个整数,判断它是几位数

#include <stdio.h>
int main()
{
int a=0;
int count=0;
scanf_s("%d",&a);
do
{
count++;
}
while(a);//这里直接放a其实是相当于判断a是否为真(非0)
printf("%d",count);
return 0;
}

 

****************到这里已经把上一章的后续讲完啦************************

这里是云鹤九霄

小生不才,如果观众老爷们不嫌弃的话,留下一个赞可好~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值