首页 > 其他分享 >Chap4 循环结构--打印打印菱形图案(多重循环结构总结)---第14组

Chap4 循环结构--打印打印菱形图案(多重循环结构总结)---第14组

时间:2022-10-16 13:47:33浏览次数:60  
标签:语句 循环体 打印 --- while 循环 执行 表达式

经过上一周周的c语言学习循环语言学习,我们小组初步的认识c语言中循环语言。但在有些程序中需要在循环语言中执行

循环语言,这种循环称之为嵌套循环(或者多重循环)。

本次的总结我主要分为以下三点:

1.认识使用循环语句;

2.判定循环体,决定使用哪种循环语句;

3.理清循环控制条件

 

1.认识使用循环语句:c语言中提供了3种循环语句(for语句,while语句和do-while语句)

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

        语句块

          }

  它的运行过程为:
1) 先执行“表达式1”。

2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。



3) 执行完循环体后再执行“表达式3”。

4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。

上面的步骤中,2) 和 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 和 3)。

 

 所以使用for语句最明显的特征是,事先给定了循环次数。

(2)while语句: while(表达式){
            语句块
        }

while语句会先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,

如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。

“表达式”称为循环条件,把“语句块”称为循环体,整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。

while 循环的整体思路是这样的:设置一个带有变量的循环条件,也即一个带有变量的表达式;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。

随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,整个循环就结束了。

如果表达是为“1”,即表达式一直为真,while 循环会一直执行下去,永不结束,成为“死循环”,运行程序,会不停地执行“语句块”,直到用户强制关闭。

 所以使用while语句最明显的特征是,确定了循环的条件。   (3)do -while语句: do{
              语句块
           }while(表达式)

do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。 2.判定循环体,决定使用哪种循环语句:判断出哪些操作需要反复执行 以打印菱形图案为例

 

 仔细观察,不能发现,我们输入的“n”是控制菱形大小规模的,是给定次数的,且与打印的“空格”和“* ”都存在一定的联系,

所以我们决定此程序需要使用for语句。

3)理清循环控制条件:这些操作在什么样的情况下重复执行

 

   这个题目是用嵌套的循环可以构成一个平面图案,且与行和列有关,用 i 控制行, j 控制列。用一个外循环来打印行,此题目需要我们打印一个菱形图案, 可以将图案分为上下两个部分,并对上下两个部分的图行进行仔细分析,找出一行中空格和 * 号的数量规律。

以输出的样例为题目,总共由7行,先分析第一行到第四行的规律:第一行:6个空格,一个* ;6=7-(2*1-1) 。第二行:4个空格,3个* ;4=7-(2*2-1) 。

第三行:2个空格,5个* ;2=7-(2*3-1) 。 第四行:0个空格,7个* ; 0=7-(2*4-1) 。因此,可以找出列号(j)和行号(i)、空格之间的关系:j<=n-2*i+1;

列号(j)和行号(i)、* 号之间的关系:j<=2*i-1。
分析图形的下半部分,第5行到第六行,可以再用一个for循环来控制,外循环的i从     n-(n+1)/2开始,这里需要注意的地方是每一行图形的数量是依次减少的,

空格的数量是依次增加的,同样找出图形的规律,用循环的嵌套将此图形实现。

 

 

 

 

结语:这种循环嵌套的程序,一定要分析好循环条件与循环体丶内循环和外循环之间的关联。

 

                 

标签:语句,循环体,打印,---,while,循环,执行,表达式
From: https://www.cnblogs.com/jmbreak/p/16796077.html

相关文章

  • 打印9*9乘法表
    deff():foriinrange(1,10):forjinrange(1,10):ifi>=j:print("{a}*{b}={c}".format(a=i,b=j,c=i*j),end="")......
  • 挖土机杯 CSP-J 组模拟赛 R2 记录
    题外话:我以为10:00开始的......没有足够时间搞,不过题目总体而言难度不大,虽然但是也没赛时AC两题。T1比较简单的送分题,就是分数的加减及约分而已,最后来个特判0和整除。至于......
  • 打印金字塔形状
    deff():n=int(input(":"))foriinrange(0,n+1):ifi==0:print(""*(n)+"$")elifi==n:print("$"*(2*n-1))else:print("......
  • Exam Results Gym - 102769E
    https://vjudge.net/problem/Gym-102769E#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;typedeflonglongll;......
  • 实验4:开源控制器实践---OpenDaylight
    利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。......
  • 使用基于注意力的编码器-解码器实现医学图像描述
    什么是图像描述图像描述是生成图像文本描述的过程。它使用自然语言处理和计算机视觉来为图像生成描述的文本字幕。一幅图像可以有很多个不同的描述,但是只要它正确地描述了......
  • python基础-字符串常用方法
    1.字符串capitalize函数  (capitalizevt.资本化,用大写字母书写(或印刷);把…首字母大写;)  将字符串的首字母大写,其它字母小写;  用法:newstr=string.capitalize......
  • Codeforces Global Round 23 (A-E1)个人题解
    A-Maxmina给定一个01串,我们可以将k个数变为他们的最大值(k个数变成1个数),或者将相邻的两个数变为他们的最小值(2个数变成1个数),询问是否可以将这个01串变成仅含有一个1的......
  • python--补充
    目录:     1、字符型列表转为整型列表#字符型列表转为整型列表arr=['12','45','15','89']print(arr)arr=list(map(int,arr))print(arr) 2、split()......
  • 2022-2023-1 20221408《计算机基础与程序设计》第七周学习总结
    第七周学习总结作业信息这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业的要求在哪里:https://www.cnblogs.com/rocedu/p/9577842......