栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言-day4-语句-控制语句-循环语句

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言-day4-语句-控制语句-循环语句

目录

while循环

语法结构:

break。

continue。

getchar()

缓冲区

清理缓冲区

for循环

break与continue

do while循环

与while的区别


while循环

我们之前了解了if语句,当条件满足的情况下,if语句后的语句执行,否则不执行。 但是这个语句只会执行一次。

由于我们生活中很多的实际的例子是:同一件事情我们需要完成很多次。 那我们怎么做呢?

C语言中给我们引入了: while 语句,可以实现循环。

语法结构:
while(表达式)
 循环语句;

表达式若为真,则执行循环语句。为假则不执行。

例:打印数字1~10。

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

break。

如果我们想要终止循环的话,我们可以引入关键字break。

我们发现,当打印到4的时候,代码停止运行了。在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

所以:while中的break是用于永久终止循环的。

continue。

我们将上述代码中的break替换成continue,运行代码。

我们发现,同样是打印到4便停止了,但是程序并没有停止,因为此时程序进入了死循环。

continue的作用是:跳过continue后这次循环的代码。直接去判断部分。看是否进行下一次循环。

 因为跳过了i++,所以i的值一直为5,代码因此进入死循环。

getchar()

作用:获取字符

方法:从stdin(标准输入 -- 键盘)获取一个字符。读到错误,返回EOF。EOF全称end of file,是文件结束标志。

结束:getchar的结束 -- ctrl+z。

我们观察如下代码:

int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		//printf("%cn", ch);
		putchar(ch);
	}
	return 0;
};

此时我们在键盘输入什么,控制台便会打印与我们输入相同的字符。

注意:之所以我们可以使用int类型的ch接受键盘上的字符,是因为getchar获取到键盘上的字符后,返回的值是其对应的ASCII码值。

缓冲区

为了方便了解缓冲区的概念,我们还是先观察一段代码

int main()
{
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%S", password);
	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("确认成功n");
	}
	else
	{
		printf("确认失败n");
	}
	return 0;
};

我们随意输入一段字符串123456并点击回车

 我们发现代码自动判断确认失败并停止运行了,这是为什么呢。

为了解决这个问题,我们来了解一下缓冲区:

我们在键盘输入123456之后,由于我们点击了回车,所以此时我们在在缓冲区存放的是123456n。

当代码执到scanf时

scanf拿走了123456存放到passwor中,此时缓冲区还有n的存在。

所以当代码执行到getchar时,getchar拿走了n存放在ch中。

if语句判断n不等于Y,输出确认失败,代码结束。

 所以我们需要进行清理缓冲区

清理缓冲区

我们在scanf之后再添加一个getchar(),其作用就是提前拿走n。

运行一下:

我们发现n被顺利清理掉了。

那如果我们输入的password中存在空格该怎么办呢?

 我们发现又是之前的问题,是因为scanf只会拿走空格之前的字符,下的继续往下走。如何解决这个问题呢?一样的原理,我们使用一个while循环来解决这个问题。

	int tmp = 0;
	while ((tmp = getchar()) != 'n')
	{
		;
	}

这段代码的含义是,我们初始一个变量tmp,将while循环中getchar获取的值赋给tmp,并判断是否与n不相同,如果不相同则不做任何处理,进入下一次循环,直到getchar拿走了缓冲区所有的字符,循环结束,运行一下。

 问题解决。

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

表达式1:初始化部分,用于初始化循环变量的。

表达式2:为条件判断部分,用于判断循环时候终止。

表达式3:为调整部分,用于循环条件的调整。

例子:使用for循环 在屏幕上打印1-10的数字。

int main()
{
	for (int i = 0; i <= 10; i++)
	{
		printf("%dn", i);
	}
	return 0;
};

break与continue

与while循环作用一致。

注意:

不可在for 循环体内修改循环变量,防止 for 循环失去控制。

do while循环

打印0~10

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

与while的区别

一个是先执行后判断,一个是先判断后执行。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号