分支和循环(下)

上一节主要讲述了分支结构,那么这一节讲解循环结构,常用循环结构分为三种,while循环、for循环、do while循环。下面将对这三种结构进行讲解。

1.while循环

对于while循环,其用法与if语句非常类似,接下来看一下while语句的基本结构吧~

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    while(需要满足的条件)
    {
        循环的内容;
    }
    return 0;
}

为了方便理解,我们引入一个简单的例子吧!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{    
    int a=0;
    scanf("%d",&a);
    while(a>0)
    {
        printf("haha\n");
    }
    return 0;
}

调试运行的时候你会发现,输入的数据只要满足>0,屏幕上就会一直打印haha。如果使用if语句,满足条件就只打印一个haha,由此可见二者的区别,同时还能观察到while的独特之处。了解了之后,我们就上手敲一个简单的代码吧!

例如:打印1~10之间的数字(只要数字在这之间就打印)

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

2.for循环

了解了while语句之后,接下来学习for循环吧~

在学习之前,首先得了解for循环得基本结构,任何知识都得从它的基本结构开始了解

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

表达式1-----循环变量的初始化

表达式2-----判断是否循环条件

表达式3-----循环变量的调整

通俗一点就是我们设置得变量在表达式1被初始化,然后到表达式2进行判断,如果满足条件,就执行语句,执行完后返回表达式3对变量的值进行调整;如果不满足表达式2,就跳出循环不执行语句,此时循环终止。对了要注意表达式要用分号(;)隔开!!

废话不多说,我们之间上一个跟上面一样的例子!

例子:打印1~10之间的数字

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

3.do while循环

相较于while和if循环,do while的循环结构就不太一样了,让我们来看看它的结构到底长什么样子吧!

do
{
    语句;
}while(循环条件);

为什么说有点不一样呢?这是因为do while循环先执行一边循环才判断条件满不满足,而while、if循环都是先判断条件是否满足,再决定是否执行循环。这就是do while循环的不同之处!

同样的例子,我们再用do while循环试一试!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{

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

4.break和continue的用法

上一篇文章在介绍switch语句时,用到了break语句,那么接下来就来进一步了解break,同时了解一下continue的用法以及二者的区别。

break语句,是我们在循环常用的语句,它可以帮我们跳出循环或者提前总之循环。

continue语句,也是我们在循环中常用的语句,只不过它的作用不是终止循环,而是帮助我们跳过continue后面的语句。

这样说你可能有点难以理解,那就让我们通过代码去对比了解一下吧!

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

你会发现使用break,屏幕只打印了1~6;这是因为i==7满足之后,break生效,就会跳出循环,后买你就不再打印了;而continue就不一样,continue除了7没打印,其余都被打印了,这是因为continue跳过了打印这条语句,跳过之后,i+1了,就不满足条件了,后面的数都会正常打印。这就是二者的区别!相信聪明的你已经明白了!

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

既然了解了二者的区别,不妨试试在while和do while循环中使用,看看他们产生的结果是不是也是一样的呢?

4.代码练习

了解三种循环结构以及两个特殊的语句,接下来让我们来练练手吧!

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

分析:首先我们要规定我们的数据范围实在100~200之间;其次我们要了解什么是素数?素数要满足什么条件?最后判断使用哪一种结构更方便?

通过查阅资料我们了解到素数又称质数,只能被1和本⾝整除的数字!那么我们就要让除开1和本身的数之外,不能被其他数字整除,就能找到素数,在打印在屏幕上

第一步打印100~200的数,这个时候我们就需要用到循环结构,经过上面的讲解,无论哪一种循环我们都能打印,不妨定义i=100,满足条件i<=200即可;其次我们要产生2和i-1之间的数去整除,如果余数不为0,那就是素数,不是0就不是素数,这是就需要用循环的嵌套,循环的嵌套和if语句的嵌套是一个道理;最后打印在屏幕上。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 100; i <= 200; i++)
	{
		int flag = 1;//flag==1是素数,flag==0不是素数
		for (j = 2; j < i - 1; j++)
		{
			if (i % j == 0)
			{
				flag = 0;//将flag重置为0;
				break;
			}
		}
		if (flag == 1)
			printf("%d  ", i);
	}
	return 0;
}

那么这篇文章到这里就结束啦!感谢观看!

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值