C语言分支和循环(二)

本文详细介绍了C语言中的while、if、for、do-while循环以及break、continue和goto语句的用法和执行流程,通过实例演示了这些控制结构在程序中的应用。
摘要由CSDN通过智能技术生成

while循环

while循环与if循环对比
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	//先判断if后条件,条件满足,仅打印一次haha
	if (1)
		printf("haha\n");
	return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	//先判断表达式,表达式值不为0,则一直执行循环语句,直到表达式的值为0结束循环
	while (1)
		printf("haha\n");
	return 0;
}
while循环执行流程

        先执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次循环。

例:在屏幕上打印1~10的值

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

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

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 0;
	scanf("%d", &i);
	while (i)
	{
		//若想得到i的最低位需要进行i%10运算,若想得到i的次低位,需要先除10去掉最低位再对i%10,以此类推
		//若:i=123	 i%10=3 i/10 → i=12  1%10=2 1/10 → i=1 i%10=1;
		printf("%d ", i % 10);
		i = i / 10;
	}
	return 0;
}

for循环

语法形式:

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

        语句;

注:表达式1用于循环变量的初始化;表达式2用于结束条件的判断;表达式3用于循环变量的调整

for循环执行流程

例:在屏幕上打印1-10的值

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

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

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

do- while循环

语法形式:

do

        语句;

while(表达式);

do while循环执行流程

        先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。因此 在do-while语句中循环体至少执行一次!

例:输入一个正整数,计算这个整数是几位数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 0;	int sum = 0;
	printf("请输入一个正整数:\n");
	scanf("%d", &i);
	do {
		sum++;
		i = i / 10;
	} while (i);
	printf("%d\n", sum);
	return 0;
}

Break和continue语句

        在执行循环语句时,若发生某种状况时需要提前终止循环。因此就需要break和continue这两个关键字。

Break:作用是用于永久地终止循环,只要break被执行,直接就会跳出循环,继续往后执行。

Continue:作用是跳过本次循环continue后面的代码,在for循环和while循环中有所差异的。

While循环中的break和continue
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 1;	
	while (i<=10)
	{
		//当i=5时循环在break的位置终止,不再打印,并跳出循环
		if (i == 5)
			break;
		printf("%d ",i);
		i = i + 1;
	}
	return 0;
}

        打印1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,不再循环。因此break 的作⽤就是永久的终⽌循环,只要 break 被执⾏,break 外的第⼀层循环就终⽌了。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 1;	
	while (i<=10)
	{
		//当i=5时执行continue,直接跳过i=i+1,因此i一直等于5,进入死循环
		if (i == 5)
			continue;
		printf("%d ",i);
		i = i + 1;
	}
	return 0;
}

        continue 可以帮助跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。

For循环中的break和continue
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 1;	
	for(i=1;i<=10;i++)
	{
		if (i == 5)
			break;
		printf("%d ",i);
        //输出结果为:1 2 3 4
	}
	return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 1;	
	for(i=1;i<=10;i++)
	{
		if (i == 5)
			continue;
		printf("%d ",i);
        //输出结果为:1 2 3 4 6 7 8 9 10
	}
	return 0;
}

        for 循环中 continue 的作⽤是跳过本次循环中continue 后的代码,直接去到循环的调整部分。当某个条件发⽣的时候,本次循环⽆需再执⾏后续某些操作的时候,就可以使⽤continue实现。

do-while循环中的break和continue

do-while语句中的break和continue作用与while循环几乎一致。

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

go to语句

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

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	printf("hehe\n");
	goto next;
	printf("haha\n");

next:
	printf("跳过haha的打印\n");
	return 0;
}

        go to语句若使用不恰当,就会导致在函数内部随意跳转,打乱程序执行流程;但在多层循环的代码中,如果想快速跳出使用go to就十分方便。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半颗星辰、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值