返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言示例讲解while循环语句的用法
  • 458
分享到

C语言示例讲解while循环语句的用法

2024-04-02 19:04:59 458人浏览 薄情痞子
摘要

目录1、while语句结构2、代码示例在学习和回顾该知识前,已经掌握了if语句的结构和用法。 if (条件)    语句; 当条件满足的情况下,if结构

学习和回顾该知识前,已经掌握了if语句的结构和用法。

if (条件)
    语句;

当条件满足的情况下,if结构中的语句执行,且只执行一次;条件不满足则不执行。但是生活中常常需要将一件事情完成很多次,这时候就要用到while语句来实现循环了。

1、while语句结构

while (表达式)
    循环语句;

例子:利用循环结构打印1-10

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

 1 2 3 4 5 6 7 8 9 10

测试一下在代码中分别加入continue和break是什么结果

在while循环中,break用于永久地终止循环

int main()
{
	int i = 1; //初始化
	while (i <= 10) //判断部分
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i++;   //循环变量的调整部分  
	}
	return 0;
}

运行结果为:

1 2 3 4

将break改为continue看看,发现运行结果为:

输出4之后,光标持续闪烁,因为在while循环中,continue的作用是跳过本次循环continue后面的代码(这样就跳过了printf("%d ", i);i++; 这两条语句),直接程序又去到判断部分,看是否进行下一次循环。

2、代码示例

示例一:

看一下下面这段代码是什么意思

int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
		putchar(ch);
	return 0;
}

运行结果如下:

输入什么字母就会输出什么字母,想要退出该程序的运行,就使用快捷键“ctrl + z”。

a
a
A
A
^Z

getchar这个是指如果读取成功的话,返回的是ASCII码值,若读取失败,则返回的是EOF(end of file),是文件结束标志。

测试getchar的功能

int main()
{
	int ch = getchar();
	printf("%c\n",ch);
	//putchar(ch);//这条语句与上一条语句一样的意思
	return 0;
}

运行该测试代码,在打印结果的窗口,键入一个A字符回车,就会打印出A字符。(putchar是指输出一个字符)

在getchar和键盘之间有一个缓冲区,键入字符“A”就相当于将“A\n”放进了缓冲区里面。

示例二:

假设输入一段字符作为密码,将该密码存放到字符串passwd里面,然后弹出一个“请确认密码”的提示,如果确认密码正确就键入“Y”,输出“确认成功”;否则键入“N”,输出“确认失败”。编写的代码如下:

int main()
{
	char passwd[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s",passwd);//假设输入的密码是2022
	//这里passwd不取地址的原因是passwd是个数组,数组的数组名本身就是个地址,所以
	//此处没有给passwd加上取地址符
	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("确认成功\n");
	}
	else
	{
		printf("确认失败\n");
	}
	return 0;
}

运行该代码的结果如下:

请输入密码:>2022
请确认密码(Y/N):>确认失败

显然,该代码是存在错误的。还没等输入Y/N,就提示确认失败了。这是为甚呢?因为我们在键盘上键入“2022”之后,还会键入一个回车,此时放到缓冲区就放的是“2022\n”。

而scanf与getchar是输入函数,它们不是直接从键盘上拿数据,而是从中间的缓冲区去拿数据,如果缓冲区没有数据,它就会等待从键盘上输入一点信息到缓冲区里面去。scanf只会将缓冲区里面的“2022\n”里的“2022”拿走,缓冲区里面还剩下“\n”;getchar在读取的时候,就没有作等待动作,直接将缓冲区里面的“\n”拿走了,所以还么等我们输入Y/N,就已经打印了“确认失败”。

如何修正程序呢?

将执行scanf之后的缓冲区里面的“\n”拿走,也就是将缓冲区清理干净,这样的话getchar函数就得等待输入,就可以正确运行了。

代码如下:

int main()
{
	char passwd[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s",passwd);//假设输入的密码是2022
	printf("请确认密码(Y/N):>");
	//清理缓冲区
	getchar();//处理'\n'
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("确认成功\n");
	}
	else
	{
		printf("确认失败\n");
	}
	return 0;
}

运行结果为:

请输入密码:>2022
请确认密码(Y/N):>Y
确认成功

这时候对于连续的密码输入来说是正确运行的,那么对于不连续(中间有空格)的呢?

比如密码是“2022 abc”,执行结果如下:

请输入密码:>2022 abc
请确认密码(Y/N):>确认失败

可以看出,程序还是存在纰漏。那么怎么处理呢?这就要将缓冲区里面的多个字符都给清理干净。此时只一个getchar函数处理不掉空格以及“\n”了,可以使用while循环,让它一直读取,直到将“\n”都读走。

int main()
{
	char passwd[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s",passwd);//假设输入的密码是2022
	printf("请确认密码(Y/N):>");
	清理缓冲区
	//getchar();//处理'\n'
	//清理缓冲区中的多个字符
	int tmp = 0;
	while ((tmp = getchar()) != '\n')
	{
		;
	}
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("确认成功\n");
	}
	else
	{
		printf("确认失败\n");
	}
	return 0;
}

请输入密码:>2022 abc
请确认密码(Y/N):>Y
确认成功

示例三:

//只会打印数字
int main()
{
	int ch;
	while ((ch = getchar()) != EOF)
	{
		if (ch < '0' || ch > '9')
			continue;
		putchar(ch);
	}
	return 0;
}

根据ASCII码值,我们可以知道该段代码的意思是:如果不是数字就continue,执行continue会跳过putchar(ch)这句话,所以这段代码最终只会打印输入的数字,想要终止运行,键入“ctrl+z”即可。代码运行结果如下:

1
1
3
3
9
9
^Z

到此这篇关于C语言示例讲解while循环语句的用法的文章就介绍到这了,更多相关C语言while循环内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言示例讲解while循环语句的用法

本文链接: https://lsjlt.com/news/151314.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言示例讲解while循环语句的用法
    目录1、while语句结构2、代码示例在学习和回顾该知识前,已经掌握了if语句的结构和用法。 if (条件)    语句; 当条件满足的情况下,if结构...
    99+
    2024-04-02
  • C语言示例讲解do while循环语句的用法
    目录1、do while()循环-先执行后判断2、do while中的break以及continue3、练习4、猜数字游戏1、do while()循环-先执行后判断 do语句的语法 ...
    99+
    2024-04-02
  • C语言示例讲解for循环的用法
    目录1、循环语句for的语法2、for循环中的break以及continue3、for语句的循环变量控制的一些建议4、for循环的变种5、题目1、循环语句for的语法 for (表达...
    99+
    2024-04-02
  • C语言while循环语句怎么使用
    while循环语句在C语言中的使用方式如下:1. 基本语法:```while (条件表达式) {循环体语句;}```其中,条件表达式...
    99+
    2023-08-18
    C语言 while
  • C语言实例讲解四大循环语句的使用
    目录一、do…while()循环1. 图示流程2. 代码流程3. 示例代码1到100求和)二、while()循环1. 图示流程2. 代码流程3. 示例代码(1到100求...
    99+
    2024-04-02
  • C语言详细讲解while语句的用法
    目录while语句格式例题1例题2例题3while语句格式 格式: while(表达式){    语句块} 1、先执行while(表达式),如条件为真执行语句块;...
    99+
    2024-04-02
  • C语言示例讲解ifelse语句的用法
    目录1、前言2、if语句的语法结构3、关于if else语句的示例4、if else 书写形式的对比5、例子1、前言 (1)C语言是结构化的程序设计语言。C语言的三种基本程序结构分别...
    99+
    2024-04-02
  • C语言详细讲解循环语句的妙用
    目录一、循环语句分析二、do ... while 语句的循环方式三、while 语句的循环方式四、for 语句的循环方式五、break和 continue 的区别六、do 和 bre...
    99+
    2024-04-02
  • C语言超细致讲解循环语句
    目录C语言循环家族while循环for循环dowhile循环C语言循环家族 家族成员有while语句,for语句和do....while语句。这些成员都能实现循环,但又各有特点。今天...
    99+
    2024-04-02
  • java示例讲解循环语句的使用
    目录1.跳转控制语句:2.循环嵌套:3.Random目录 1.跳转控制语句: 区分continue和break;  * continue:用于循环中,基于条件控制,跳过某次...
    99+
    2024-04-02
  • Shell中的循环语句for、while、until实例讲解
    在编程语言中,循环语句是最基本的语法之一,在Shell(这里是Bash)中也不例外,再把以前自己写过的相关内容整理一下吧。这里包括for/while/until循环,以及变量自增的语法实例。 Shell(以...
    99+
    2022-06-04
    语句 实例 Shell
  • Verilog语言的循环语句示例详解
    目录关键词:while, for, repeat, foreverwhile 循环for 循环repeat 循环forever 循环关键词:while, for, repeat, f...
    99+
    2023-05-15
    Verilog语言循环语句 Verilog 循环
  • C语言 while for do while循环体详解用法
    while循环 表达式: while(表达式) { 循环语句; } while 语句执行流程图: 例子: 打印1-10的数字 #include <stdio.h>...
    99+
    2024-04-02
  • 详解C语言中for循环与while循环的用法
    目录一、单层for循环二、for循环与if选择的嵌套三、多层for循环的嵌套四、while循环五、总结一、单层for循环 引例:C语言实现求1到10的和(用for循环实现) #inc...
    99+
    2024-04-02
  • C语言示例讲解switch分支语句的用法
    目录1、了解switch分支语句2、示例3、default子句4、练习1、了解switch分支语句 switch语句也是一种分支语句,常常用于多分支的情况。 比如: 输入1,就会输出...
    99+
    2024-04-02
  • Go语言中循环语句使用的示例详解
    目录一、概述1. 循环控制语句2. 无限循环二、Go 语言 for 循环1. 语法2. for语句执行过程3. 示例4. For-each range 循环三、循环嵌套1. 语法2....
    99+
    2024-04-02
  • Go语言基础for循环语句的用法及示例详解
    目录概述语法注意示例一  死循环,读取文件示例二  打印乘法表示例三  遍历字符串,数组,map 概述 for循环是一个循环控制结构,可以执行指定次数的...
    99+
    2024-04-02
  • C语言控制语句中循环的用法
    本篇内容主要讲解“C语言控制语句中循环的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言控制语句中循环的用法”吧!入口条件循环:while循环在执行多次循环之前之就已经决定是否执行循环代...
    99+
    2023-06-20
  • C语言实例讲解嵌套语句的用法
    目录一 、if 嵌套二、比较ab两个数值大小三、总结一 、if 嵌套 格式: if ( 条件 ){    if( 嵌入一个条件 ){   &n...
    99+
    2024-04-02
  • C语言中循环语句练习实例
    计算n的阶乘 int main() { int i=0; int ret=1; scanf("%d",&i); for(i=1;i<=n;i++) { ret=ret*...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作