分支与循环(二)——循环语句

分支与循环(二)——循环语句

1.while循环

while循环的语法结构:

while(表达式)
     语句n;

首先执行判断表达式,若表达式的值为0,循环直接结束;若表达式的值不为0,则执行循环语句。有细心的宝子肯定已经发现,while循环的语法结构和if分支语句的语法结构长得一样,那他们到底有什么区别呢?让我们具体写个代码来对比一下。

if语句:

int main()
{
	if (1)
		printf("爱学习的都是好宝宝!");
	return 0;
}

在这里插入图片描述

while循环:

int main()
{
	while (1)
		printf("爱学习的都是好宝宝!");
	return 0;
}

在这里插入图片描述

从运行结果可以发现,if只能打印一条,而while语句可以实现循环效果。

举个栗子来深入理解一下吧~

例:输入一个正的整数,逆序打印这个整数的每一位

输入:1234,输出:4 3 2 1

输入:1128,输出:8 2 1 1

题解:

1.将一个整数逆序输出,第一步先将整数的最后一位,也就是整数的最低位输出,我们应该用什么方法呢?在之前的学习中,我们认识了C语言中的几种算术操作符,其中%用于取模运算,得到余数。在这题中我们就可以使用%操作符,将整数n%10,得到的余数就是最低位,例如:1234%10得到的余数是4,1128%10得到的余数是8。

2.第二步输出整数的倒数第二位,我们使用n%100得到的余数如:1234%100得到的余数是34,1128%100得到的余数是28,我们发现,这个结果比我们预想的多了最低位的输出,那我们应该怎么去掉它呢?这里我们使用算术操作符/,使用n=n/10就可以去掉最低位,例如:n=1234/10得到123,n=1128/10得到112 。所以要输出整数的倒数第二位,可以先使用n=n/10去掉最低位,再使用n%10得到整数倒数第二位。例如:

n=1234/10; //n=123
printf("%d",n%10);  

3.以此类推,循环1.2两个步骤,在n=0前,就能得到所有位。

代码如下:

int main()
{
	int i = 0;
	scanf("%d", &i);
	while (i)
	{
		printf("%d ", i % 10);
		i = i / 10;
	}
	return 0;
}

2.for循环

在这里插入图片描述

我们分析上述while循环的执行流程,分为三个步骤:初始化、判断、调整,for循环的执行流程也是一样,但语法形式不同。

for循环语法形式如下:

for(表达式1;表达式2;表达式3)
        语句;

表达式1用于循环变量的初始化,表达式2用于循环结束条件的判断,表达式3用于循环变量的调整。首先执行表达式1的初始化循环变量,接下来执行表达式2的判断部分,如结果==0,则循环结束,如结果!=0,则循环执行,循环语句执行后,执行表达式3循环变量的调整,然后返回表达式2执行判断,判断结果是否为0,决定循环是否继续。

举个简单栗子实践一下吧~

例1:用for循环打印1–10的值

int main()
{
	int i = 0;
	for (i = 1; i<= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

在此处i++与++i效果上没有区别,C语言中不存在++i或i++哪个更高效。

例2:计算1–100所有偶数之和

int main()
{
	int i = 0;
	int sum = 0;
	for (i = 1; i <= 100; i++)
	{
		sum += i;
	}
	printf("%d ", sum);
	return 0;
}
5050

3.do–while循环

对比while和for循环,do-while循环用的较少,语法如下:

do
   语句;
while(表达式);

do-while循环与其他两种循环不一样的是,它是先直接进入循环体,执行循环语句,在执行while后的判断表达式,表达式为真,循环继续下一次,表达式为假,则不再继续循环。

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

int main()
{
	int i = 0;
	scanf("%d", &i);
	int cnt = 0;
	do
	{
		cnt++;
		i = i / 10;
	} while (i);
	printf("%d\n", cnt);
	return 0;
}

4.break与continue语句

break语句的作用是终止循环,break执行时,会直接跳出循环,继续向后执行。

continue语句作用是跳过本次循环中continue后面的代码,继续执行。

我们先拿while循环来举例

break举例:

int main()
{
	int i = 1;
	while (i <= 20)
	{
		if (i % 9 == 0)
			break;
		printf("%d ", i);
		i+=1;
	}
	return 0;
}
1 2 3 4 5 6 7 8

因为9%9结果为0,执行break语句,跳出循环,循环结束。

continue举例:

int main()
{
	int i = 1;
	while (i <= 20)
	{
		if (i % 9 == 0)
			continue;
		printf("%d ", i);
		i += 1;
	}
	return 0;
}

当i=9时,执行continue,直接跳过continue后面的代码,回到循环的判断部分。

由于i+=1在continue之后,执行continue后跳过了这一句,所以i的值一直为9,程序陷入死循环。

用for循环举例

break举例:

int main()
{
	int i = 0;
	for (i = 1; i <= 20; i++)
	{
		if (i % 9 == 0)
				break;
		printf("%d ", i);
	}
	return 0;
}
1 2 3 4 5 6 7 8

for循环中break与while循环中的break一样,只要执行到break,循环就终止。

continue举例:

int main()
{
	int i = 0;
	for (i = 1; i <= 20; i++)
	{
		if (i % 9 == 0)
			continue;
		printf("%d ", i);
	}
	return 0;
}
1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 18 19 20

for循环中continue与while循环中的continue不一样,在for循环中continue的作用是跳过本次循环中continue后面的代码,直接去到循环的调整部分。

do-while中break和continue的用法与在while中的一样,大家可以自己试一下,这里及就不列举啦😊

本期结束,欢迎大家交流指正,别忘了点赞评论收藏哦,下期见~~

  • 45
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值