c语言:三种循环语句(11.02)

程序设计的三种基本语句结构:

1,顺序结构

2,选择结构

3,循环结构


三种循环语句:

❶while 语句(当性循环)

❷do …while 语句(直到性循环)

❸for 语句(当性循环)


  • while 语句

  • do …while 语句

  • for 语句


df3302e8a2f643d1a53dc1613697b052.jpg

 (循环不能是死的,要是活的)


循环结构构成的要素:

  1. 循环控制条件
  2. 循环控制变量(循环不能是死的,要是活的)
  3. 循环体

循环的控制方法:

  1. 重复次数固定(已知)【计数控制】
  2. 重复次数不固定(未知)【条件控制】

循环结构类型:

  1. 当性循环
  2. 直到性循环(至少执行一次循环体)99d642958db24fdd9ad1158edff5e58e.jpg

 

ps:执行起来后二者没有区别


  • for 循环语句

常用在循环次数已知情况下。

属于当性循环(先判断条件)

语法格式如下:

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

或者,语句比较多时:

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

       语句 1

       语句 2

其中,循环条件 p 体现在表达式 2

表达式 2 得到的值,以真和假来进行判别。

如何判别:和分支结构的判断一样,即用 0 表示假,非 0 为真。

循环控制变量体现在表达式 3

表达式 1 作为循环变量初始化表达式(在循环之前,先赋值好)(只有刚开始有用,一旦循环起来和表达式 1 就没关系了)

 

for 语句 执行过程:

  1. 计算表达式 1
  2. 判断表达式 2 是否成立,如果成立进入步骤 3(进入循环体);如果不成立,则退出循环,进入循环体后面的语句
  3. 执行循环体语句,然后计算表达式 3,回到步骤 2

for 循环语句表达式的省略:

  • 表达式 1,2,3 均可省略
  • 表达式 1 省略,则在 for 循环语句前面进行循环变量的初始化
  • 表达式 2 省略,可循环控制条件永远为真,会进入死循环。(所以一般不省略
  • 表达式 3 省略,则需要将表达式 3 放在循环体中

 


  • while语句

while循环语句执行过程:

  1. 计算循环控制表达式的值,如果循环控制表达式的值为真(不为 0),就转向 2,否则转向 3
  2. 执行循环体,然后转向 1
  3. 循环过程停止,程序转移到 while 语句后面的语句

while(表达式)语句


  • do…while 语句

与 while 语句区别:do…while 语句是在执行完循环体之后再判断循环条件是否成立。

do

语句

while(表达式);

注意⚠️:小括号后面的分号是必须的

 


6db43acea83e4a28b79d09159f9047b2.jpg

 0b6bb0392c724a0dbb568223261fedf4.jpg

 i 为循环变量,sum 为累加值

注意⚠️:只要是累加的操作,赋值就以 0 赋

 

一, for 语句实现:

f396de8923fa4b0c818e6fe0522ef854.jpg

 注意⚠️:上图中,{}中,即为循环体

 

二, while语句实现:

i 值变化要放到循环体里,否则为死循环

0621b93cf2814b69832d1e8624ab84da.jpg

 即,注意❗️i ++放进去

 

三,do…while 语句实现

5bf936e58f4a4b76ba1f6b8c5b65d801.jpg

 (都能执行的情况下, while 和 do…while 就没什么区别了)


例题 1:计算并输出 1+2+3+…+n 的值

 

解答:

①用 for 循环:

(n 是不固定的,从键盘输入的值,用 scanf 取)

2645044b44784955b567b4f6c0214922.jpg

 ②用 while 循环:

149764392aad4d37922d8d02bc30ca1e.jpg


 

  • 调试方法——输出每次循环累加的结果

6d5578ae8283446280032746a04465b6.jpg

❗️ (对于累加的变量,必须要有清零操作或者有一个确定的初值)

 

 


例题 2:计算并输入 n!

 

PS :

int 为普通整型,使用四个字节(32 位) 来表示,表示的整数的范围是 -2^31 到+2^31-1

long 也是 4 个字节(在 devc 中)或 8 个字节(vc 中)  long 表示的范围会更大一些,相比于 int。

 

解答:

用 for 语句

64ba09292d8946d8b38de8e416483eba.jpg

 注意⚠️:是 %ld

(当使用 long,输入 100 时,计算不出了。这时可以将 long 换为 double)

 

  • 调试:每一次累乘的中间结果输出

75dc001faef84afb815aca036150c51f.jpg

 


例题 3:输入 n 值,计算并输出 1!+2!+…+n!

 

解答:

用 for 循环:

67b5ab59cd10490f986c9f4f2ad2b756.jpg

 


嵌套循环

 

将一个循环语句放在另一个循环语句的循环体中构成的循环63ce5cb95bc8416aa7040df2b42b1e1b.jpg

 使用嵌套循环解答例题 3:

72280ae5c9b24c659183944b0493fbe6.jpg

但是简便方法还是下面这个: 02829afcbeff44a79be9d30577577a77.jpg

 


条件控制的循环:

6fa232c03bfd41d2b556dcd27b6f8d1a.jpg

 

  • 累加项的前后项之间无关(寻找累加项的计算通式)

fac=fac *n;

term=1.0/fac;

e=e+term;

e 的初始值为 1.0

  • 累加项的前后项之间有关……

 


接上题:

用 for 循环写一下:

50869ece01ae4c3b8116034882447fb5.jpg

 这里就不知道有多少次了,是未知的。

加的 count++,count 主要是记录循环的次数。统计循环次数。

term 的值是越来越小的,当小到 1e-5,for 循环就退出了。

94611011c5bc42acbd4eeed35e658299.jpg

 

针对这题,最好用 while:

63ee9dae3a4547eab73d5394e3bd9103.jpg

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值