C语言中的循环语句

C语言中的循环语句有三种,while型do...while型for型。下面进行对它们进行详细的介绍。

while型

语法结构

while(表达式)
     {
       循环语句;
     }

下面我们来看一个例子,打印整数1~10。

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

这样就打印出了1~10的数字。

while型语句中,我们继续了解breakcontinue的用法。我们知道break决定出口,所以看这个例子。

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

此时,打印出来的是1~4。

我们再来看continue,它的作用是终止循环中的本次循环。

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

打印1 2 3 4 之后,i=5,代码死循环。当代码执行到continue时,编译器跳过本次循环中的continue语句之后所有的代码,使i永远等于5,让代码死循环。

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

此时,若将“i++;”语句放到“if(5==i)”之前,编译器将打印1 2 3 4  6 7 8 9 10 11,跳过5。

do...while型

语法结构

do
 {
 循环语句;
}
while(表达式);

do...while型中代码至少循环一次,先循环在判断。例如打印1~10之间的整数。

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

这样就打印出了1~10之间的整数,do...while型在循环语句中不常用,我们这里点到为止。

for型

语法结构

for(表达式1;表达式2;表达式3)
{
循环语句;
}

表达式1:初始化部分

表达式2:条件判断语句

表达式3:调整部分

还是打印1~10的整数,在for型中是这样实现的。

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

这样更简洁。在for循环中,breakcontinue与同样可用,breakfor中也是跳出循环,和while型相同。我们直接看continue。看下面这个代码

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

当i=5时,continue直接跳过之后代码,进入到“i++”,时i变为6,不会使代码陷入死循环。但这并不意味for型不会陷入死循环。

不可在for循环体内改变循环变量,防止for循环失去控制。例如下面这种情况:

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

代码失去控制,陷入打印5和haha的死循环。

还有一些for循环的变种:

  1. #include<stdio.h>
    int main()
    {
    	for (;;)
    	{
    			printf("haha ");
    	}
    	return 0;
    }

    此代码一直打印haha,陷入死循环。可以看出,for循环代码的初始化,调整,判断部分都可以省略,但是判断部分如果被省略,那判断条件就是恒为真,导致死循环,建议不要省略。

  2. #include<stdio.h>
    int main()
    {
    	int x, y;
    	for (x=0,y=0;x<2&&y<5;x++,y++)
    	{
    			printf("haha ");
    	}
    	return 0;
    }

    for循环中可以一起放入多个变量。

for型循环的嵌套

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		int j = 0;
		for (j = 1; j <= 10; j++)
		{
			printf("haha ");
		}
	}
	return 0;
}

此时代码结果是100个haha。

我们再看这个代码,大家可以猜一下它循环几次:

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 0,j=0; j=0; i++,j++)
	{
		printf("haha");
	}
	return 0;
}

它循环0次,因为它的判断语句是“j=0”,0为假,循环不进行。若把判断语句该为“j!=0”,代码又变成死循环。


今天的分享就到这里啦,持续战斗中。

                                          

  

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

月亮夹馍干

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

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

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

打赏作者

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

抵扣说明:

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

余额充值