循环语句(while,for,do-while)

c语言提供了三种循环语句,分别是while,for,do-while

下文代码示范部分未加stdio.h的头文件

while

适用于明确循环条件,不明确循环次数

if和while

if(表达式)
  语句;

while(表达式)
  语句;

if和while语句形式相似,且都只能控制一条语句,加大括号可实现控制多条语句

while可实现循环功能

执行流程

⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语 句,语句执⾏完后再继续判断,是否进⾏下⼀次判断

while语句实践

题目1:在屏幕上打印出1-10

题目2:输⼊⼀个正的整数,逆序打印这个整数的每⼀位

例如:

输⼊:1234,输出:4321

输⼊:521,输出:125

for

最常用的循环语句(常用于明确循环次数的循环项目)

语法形式

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

表达式之间用分号隔开,不要写成冒号

同样默认只能控制一个语句,想包含更多语句要用大括号

语句1:⽤于循环变量的初始化

语句2:⽤于循环结束条件的判断

语句3:⽤于循环变量的调整

执行流程

首先执行表达式1,初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果是假,则循环结束;表达式2的结果如果是真则执行循环语句,循环语句执行完成后,在执行表达式3,调整循环变量,再去表达式2判断,决定循环是否继续

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

for循环与while循环对比

int main()
{
	int a = 1;//初始化
	while (a <= 10)//判断
	{
		printf("%d\n", a);
		a += 1;//调整
	}
	return 0;
}
int main()
{
	int a;
	for (a = 1; a <= 10; a++)
		printf("%d\n", a);
	return 0;
}

部分新版本中可直接写

for(int a = 1; a <= 10; a++)但这样写变量就只能在这个循环中使用

练习

计算1~100之间3的倍数的数字之和

int main()
{
	int a=0, sum=0;
	for (a = 3; a <= 100; a++)
	{
		if(a%3==0)
			sum = sum + a;
	}
	printf("%d", sum);
		
	return 0;
}
int main()
{
	int a = 0, sum = 0;
	for (a = 3; a <= 100; a+=3)
	{
	  sum = sum + a;
	}
	printf("%d", sum);

	return 0;
}

do-while循环

用的最少

语法形式

do
  语句;
while(判断);

执行流程

会首先执行一次循环语句,然后判断。所以循环语句至少执行一次

for循环和while循环都是先判断再执行,可能执行0次

do后面默认控制一条语句,想控制多条语句,可用大括号

练习

在屏幕上打印1~10的值


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


	return 0;
}

输⼊⼀个正整数,计算这个整数是⼏位数

例如:

输⼊:1234 输出:4

输⼊:12 输出:2

int main()
{
	int a = 0;
	int b = 1;
	scanf("%d", &a);
	do
	{
		if (a / 10)
			b++;
		a /= 10;
	} while (a);
	printf("%d", b);
	return 0;
}

break和continue

break的作⽤是⽤于永久的终⽌循环,只要break被执⾏,直接就会跳出循环,继续往后执⾏。

continue的作⽤是跳过本次循环中continue后边的代码

break举例

while中

int main()
{
	int a = 0;
	while (a <= 10)
	{
		if (5 == a)
			break;
		printf("%d", a);
		a++;
	}
	return 0;
}

for中

int main()
{
	int a = 0;
	for (a = 0; a <= 10; a++)
	{
		if (5 == a)
			break;
		printf("%d", a);
	}
	return 0;
}

continue举例

while中

int main()
{
	int a = 0;
	while (a <= 10)
	{
		if (5 == a)
			continue;
		printf("%d",a);
		a++;

	}
	return 0;
}

for中

int main()
{
	int a = 0;
	for (a = 0; a <= 10; a++)
	{
		if (5 == a)
			continue;
		printf("%d", a);
	}
	return 0;
}

嵌套练习

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

int main()
{
	int num = 100;
	
	for (num = 100; num <= 200; num++)
	{
		int j = 2, flag = 0;
		for (j = 2; j <= num - 1; j++)
		{
			if (num % j == 0)
			{
				flag = 1;
				break;
			}
				
		}
		if (!flag)
			printf("%d ", num);
	}
	return 0;
}

goto

C语⾔提供了⼀种⾮常特别的语法,就是goto语句和跳转标号,goto语句可以实现在同⼀个函数内跳转到设置好的标号处

#include <stdio.h>
int main()
{
	printf("hehe\n");
	goto next;
	printf("haha\n");
next:
	return 0;
}

next处可任意命名,前后一致就可以

goto前跳后,后跳前都可以

#include <stdio.h>
int main()
{
	printf("hehe\n");
 next:
	printf("haha\n");
	goto next;
	return 0;
}

goto如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建 议是能不⽤尽量不去使⽤;

但是 出,使⽤ goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳 goto 就⾮常的⽅便了


for (...)
{
	for (...)
	{
		for (...)
		{
			if (disaster)
				goto error;
		}
	}
}
error:
//..

本来 想提前退出就得使⽤3个 break ,⼀个 break 只能跳出⼀层 for循环,,如果3层循环嵌套就得使⽤3个break 才能跳出循环,所以在这种情况下我们使⽤ goto 语句就会更加的快捷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值