C语言(循环)

循环中的while,for,do-while

while循环

语法形式和与if的区别

        上一篇文章我们谈到了if语句:

if(表达式)
    语句

        而whlie语句:

while(表达式)
    语句//如果有多条语句需要用{}括起来

        就是说如果if后面的表达式为真那么就会执行后面的语句,while后面的表达式为真的话也会执行语句,当执行完语句后会返回再一次判断表达式的真假。它们的区别是while语句是可以进行循环的操作的。

int main
{
    while(1)
    {
        printf("肉末茄子报吃\n");
    }
    return 0;
}

        也就是说如果while后面的表达式一直为真(==1)就会一直执行语句“肉末茄子报吃”

练习

        下面如果我想在屏幕上打印数字1~10就可以用while:


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

​

for循环

语法形式
for(表达式1;表达式2;表达式3)
    语句//如果有多条语句可以用{}括起来

表达式1:⽤于循环变量的初始化 

表达式2:⽤于循环结束条件的判断

表达式3:⽤于循环变量的调整

        在for语句中最先执行表达式1,之后是表达式2。如果表达式2为假(==0)则循环结束,如果表达式2为真(==1) 就执行下面的语句,执行完后,再执行表达式3(调整循环变量)之后判断表达式2的真假决定是否再进行下一次循环。

        在整个过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循 环。

练习

        还是打印1~10的数字,用for循环就应该这样操作:

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

	return 0;
}

对比while与for

        由于for循环的初始化,判断,调整相对与while来说较为集中,便于维护所以在形式上for要优于while。

do-while循环

语法形式
do
    语句
while(表达式);

        for和while是先判断再进循环,而do-while是先进入循环体执行语句后再进行判断,表达式为真(==1)则进行下一次循环,为假则结束循环。(注意分号)

        do-while循环的一个特殊的点是它至少要执行一次循环语句。

练习

        那么还是打印数字1~10。

int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i += 1;
	} while (i<=10);

	return 0;
}

break和continue

while循环中的break和continue
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 4)
			break;//当i等于4时,执行break,跳出循环
		printf("%d ", i);
		i++;
	}
	return 0;
}

        代码的执行结果是在屏幕上打印1 2 3 

下面是continue

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 4)
			continue;//当i等于4时执行continue跳过continue后面的语句直接进入下一次循环。
                    //由于跳过了i的自加,i一直为4,程序进入死循环。
		printf("%d ", i);
		i++;
	}
	return 0;
}

        虽然这个代码的运行结果也是1 2 3 但是程序一直没有跳出循环,大家可以自行比较这两段代码的运行结果的差异。

for循环中的break和continue
int main()
{
	
	for (int i = 1; i <= 10; i++)
	{
		if (i == 4)
			break;
		printf("肉末茄子报吃\n");
	}
	return 0;
}//结果是打印三次“肉末茄子报吃”

int main()
{

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

        而换成continue的打印结果是 1 2 3 5 6 7 8 9 10 ,因为这里直接跳过了printf语句,直接到了自加环节。

        do-while中的break和continue和while循环中的几乎一模一样所以就不过多叙述。

循环的嵌套

这里有一个题目:

找出100~200之间的素数,并打印在屏幕上。

思路:

1. 要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。

2. 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤ 循环解决。

3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

请自行思考,答案将在下一篇文章中给出。

goto语句

goto语句语句可以实现在同⼀个函数内跳转到设置好的标号处。

例如:

int main()
{
	printf("haha\n");
	goto next;
	printf("hehe\n");
next:
	printf("跳过了hehe的打印\n");

}

要注意的是如果在一个函数中大量的使用goto语句会让逻辑非常的混乱,但是在多层循环中想要快速跳出就可以使用goto:

for()
{
    for()
    {
        for()
        {
            for()
            {    
                goto next;


            }
        }
    }
}
next:

非常好用!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嶔某

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值