C语言:循环语句

1.循环语句

我们在日常生活中或是在程序所处理的问题中常常遇到需要重复处理的问题。在程序中,这就需要用到循环语句来帮助我们解决问题。C语言中循环语句有while语句、for语句和do while语句。相关语句详解如下。

1.1while语句

1.语法结构

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

代码实例演示: 

   例如打印数字1-10

​
#include <stdio.h>
int main()
{
 int i = 1;//初始化
 while(i<=10)//判断
 {
 printf("%d ", i);
 i = i+1;//调整
 }
 return 0;
}

​

while语句通过对于括号内表达式真假的判断来确定是否进行循环。只要循环条件为真,就执行循环体语句。

2.while语句中的break和continue

先看一个例子  :

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

使用这段代码产生一个结果,再把其中的break换成continue,再运行一次。结果如下:
break和continue的结果:                                                                                                                                                    

a25a1818d15f4562a9db175d7ae81dab.pnge32403cc730d439c835d6813776961e9.png

break输出了1234,continue变成了死循环。

这是因为:

循环中只要遇到break,就停止后期的所有的循环,也就是直接终止循环。
而continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,也就是说跳过了while语句的调整部分导致i的值没有产生变化,故产生了死循环。

3.while语句的一些实例

清理缓冲区 

在展示代码前我们先来认识一个函数getchar() 

56ffdbb4b3e242f1931a617af14f54fb.png

通过搜索C语言库函数的网站可以更好地帮助我们了解和学习函数。通过检索得来的信息我们可以得知getchar函数的返回值是int类型(即返回字符的ASCII值),接收的值void,也就是不需要接收什么值。getchar一次读取一个字符。如果读取失败,就返回EOF(-1)。 

C语言库函数网站链接:
https://legacy.cplusplus.com/

了解了这些看这段代码:

60adf311ca56404c843c877e3f733986.png

在得出结果之后,我们发现程序在屏幕上打印我们想要打印的字符之后光标还进行了换行。这是为什么呢???

原因在于当我们使用像getchar这类输入函数时,并不是直接从键盘获取字符的,而是涉及输入缓冲区的概念。 

假设我们要输出字符B,当我们通过键盘输入B和回车时(输入回车触发字符进入输入缓冲区),此时输入缓冲区内有字符B和\n。getchar会先在输入缓冲区获取字符B,putchar输出B之后。这个时候输入缓冲区其实还有字符\n,getchar读取之后就进行了换行。

了解了关于getchar的工作原理,那么在程序中会产生什么问题呢?

 

这段代码并没有按照我的设想实现确认密码的操作,这就是getchar获取回车导致的。想更改这个问题,只需要确认密码之前在getchar一次即可。 结果如下:

 

在这个基础上在想一想,如果我们在输入密码的时候不小心输入了空格怎么办? 假设我们输入了123456 ABC    结果如下:

scanf在遇到空格就不会获取后面的字符,那么我们在中间加的getchar只能清除一个字符,后面的字母又会影响代码的正常进行。所以我们利用while语句,用循环的方式清除缓冲区。

更改的代码如下:

 

1.2for语句

1.语法结构

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

循环语句;

for语句和while语句同为循环语句,我认为不同的是for循环的初始化、判断和调整的表达式相比于while语句相对更加“紧凑”,更加方便查找修改

代码实例演示:

打印1-10数字

#include <stdio.h>
int main()
{
 int i = 0;
 //for(i=1/*初始化*/; i<=10/*判断*/; i++/*调整*/)
 for(i=1; i<=10; i++)
 {
 printf("%d ", i);
 }
 return 0;
}

2.for语句中的break和continue

break:

可以看出来for循环中的break和在while中起同样作用。

continue:

for循环里的continue和while运行出的结果不太一样,这是因为continue跳过的是本轮循环后面的代码,而for循环的i++(调整部分)并不在其中。 

1.3do while语句

1.语法结构

do
循环语句;
while(表达式);

do while的循环是至少进行一次的,这是和for语句和while语句不太一样。后者的判断部分如果为假就不会进入循环。 

2.do while语句中的break和continue 

break: 

 

 continue:
 

有了上面的经验,就知道这段代码为什么会出现死循环了吧!!! 

总结:

讲解了循环语句的一些基本语法,以及break和continue在语句中的作用。

 

         

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值