循环结构课后反思

一、   个人认为的重点

1.for循环中(<条件表达式>;<循环表达式>;<循环体语句>)的熟练运用。

2.循环结构的熟练嵌套以及每一个嵌套循环所代表的含义要极为清楚。

3.循环表达式的书写,尝试多样化的表达式。

二、解析代码

#include<stdio.h>
int main()
{
    int i,j,k,width;
    printf("亲输入最大宽度:\n");
    scanf("%d",&width);
    if(width%2!=0)
    {
        for(i=1;i<=(width+1)/2;i++)
        {
        for(j=i;j<=(width-1)/2;j++)
        printf(" ");
        for(k=1;k<=2*i-1;k++)
        printf("*");
        printf("\n");
        }
    for(i=1;i<=(width-1)/2;i++)
        {
        for(j=1;j<=i;j++)
        printf(" ");
        for(k=1;k<=width-2*i;k++)
        printf("*");
        printf("\n");

        }
    }
    else
    printf("错误\n") ;

}

解析:首先这个代码实现的图形是一个菱形,而实现这个图形的切入点就是“width”--它的最长宽度了。我们发现,以这一个最长宽度为界限,整个图形被分为两部分,即两个等腰三角形,而最长宽度必须要为单数,不然就实现不了顶部数量为一个*号的菱形。

所以,先用“if”条件语句判断是否width为单数再进行之后的循环,不是的话则输出“错误”。我们先对上面的三角新进行编写:在用“int”定义了i(行),j(“空格”),k(“*”)之后,先对“i”循环进行编写。我们发现最大宽度“width”所对应的等腰三角形的行数的关系是i=(width+1)/2,比如,输入的最大宽度“width”的值为13,那它所对应的行数就是7了,所以i要小于等于这个行数,也就是i<=(width+1)/2。之后在“i”循环的下面进行有关“j”和"k"的嵌套。

"j"是“空格”的输出。在第一行中,当输入的“width”是13时,每行要输出的空格数量分别是6、5、4、3、2、1、0,那么其对应的关系就应该是j=(width-1)/2,所以j<=(width-1)/2,j=i进行赋值,j++进行循环。注意:我们发现“(width-1)/2”是一个定值。要想让输出的空格数量逐一递减那么前面对“j”的赋值就应该是变量了,所以让"j=i",后面对“k”的赋值我们换成让k的关系式为变量,那么相应的“k”的赋值就应该是“k=1”了。

同样,“k”是“*”的输出。“k”的每行输出数量依次是1、3、5、7...,这里我们不写K和“width”的关系式,而改成与“i”形成的变量关系式。于是根据等差数列,有k=2*i-1,所以k<=2*i-1,k=1赋值,k++循环。到这里就完成了上部分的等腰三角形了:

下半部分的三角形在行数是比上半部分行数少一的,故:i<=(width-1)/2。每行要输出的空格分别是1、2、3....递增,由于“i”本身自增,所以j=1,j<=i,i++。每行要输出的“*”分别是以“-2”为公差的等差数列,首项是最大宽度下面的一行即:width-2,由等差公式an=a1+d(n-1)可得k<=width-2i。

原文地址:https://www.cnblogs.com/Artificial/p/10693164.html

时间: 2024-10-14 06:28:36

循环结构课后反思的相关文章

第五章 循环结构课后反思

#include <stdio.h> main() { int a,b,c,d,e,f; for(a=1;a<=5;a++) { for(b=1;b<=(5-a);b++) printf(" "); for(c=1;c<=(2*a-1);c++) printf("*"); printf("\n"); } for(d=1;d<=5;d++) { for(e=1;e<=d;e++) printf("

第五章循环结构课后反思

include<stdio.h> int main() { int a,b,c,d,e,f; for(a=1;a<=5;a++) { for(b=1;b<=5-a;b++) printf(" "); for(c=1;c<=(2a-1);c++) printf(""); printf("\n"); } for(d=1;d<=4;d++) { for(e=1;e<=d;e++) printf(" &

第五章 循环结构反思

练手篇:   刚刚开始练手循环结构,肯定柿子要挑软的捏.于是我拿了第一个,开始练手之旅.     按照老师开始讲的例题,我一开始先想的是这个图形应该可以分成两部分来考虑比较简单.第一部分为i<=4,第二部分为i<=5.然后考虑的是行,列之间的关系第一部分分成空格和*,所以先考虑输出空格的数量关系,空格数为4,3,2,1,所以for应该写j=1:j<=5-i;j++,其次考虑*的数量关系1,3,5,7所以for应该写k=1;k<=2*i-1;k++.然后考虑第二部分的for就很简单了

实验六——循环结构程序练习总结

1.本次课学习到的知识点: (1)对于给定循环次数的程序首选for语句,如果循环次数不明确则用while语句或do-while语句. 2. 实验过程中遇到的问题及解决方法: 不了解格式的重要性 方法:课后查阅相关资料,不会之处询问老师. 3. 实验心得体会及本章学习总结: 通过这一段时间的学习,我现在已经掌握了三种循环语句:for语句.while语句和do-while语句.知道了什么是循环条件和循环体.循环结构四要素:循环初始化,循环条件,循环体,循环变量修改.程序中用负数作为输入的结束标志,之

JS中的循环结构、循环嵌套以及函数介绍

[循环结构的步骤]    *①声明循环变量    *②判断循环条件    *③执行循环体(while的{}中的所有代码)操作     *④更新循环变量    *     * 然后,循环执行②③④    *     *     * [JS中循环条件支持的数据类型]    * ①boolean:true 真     false   假    * ②string: 非空字符串为真       空字符串为假    * ③null/NaN/undefined:  全为假    * ④object:全为真 

JAVA-初步认识-第三章-循环结构

一. 概述 循环结构的代表性语句是三个,while,do while,for. 回想一下之前的结构知识点讲解,结构分为这么几种,顺序结构,判断结构,选择结构,循环结构.其中判断结构是if语句,有三种格式.选择结构是Switch语句. 循环结构的三种语句和之前所学的if语句,switch语句一样,都有固定的格式. 二. while语句 while循环语句的结构如下: while(条件表达式) { 执行语句; } 解析一下while语句,和之前的if,switch语句一样,在这些语句的前面都会有一些

循环结构(二)

for循环结构的语法 for(表达式1;表达式2;表达式3){ 循环体 } for循环结构中3个表达式的含义 表达式1(赋值语句;循环结构的初始部分,为循环变量赋初值) 表达式2(条件语句;循环结构的循环条件) 表达式3(赋值语句,通常使用++或--运算符;循环结构的迭代部分,通常用来修改循环变量的值) for循环结构的执行顺序 (1)执行初始部分 (2)进行循环条件判断 (3)根据循环条件判断结果,如果为true,则执行循环体,如果为false,则退出循环,步骤(4).步骤(5)均不执行 (4

控制循环结构

oc提供了continue和break来控制循环结构,当然还有return可以结束整个方法:go..to跳转 使用break 结束训话 for(int i=0;i<10;i++) { if(i==2)//程序循环到2时就跳出程序 { break; } } 使用continue结束本次循环 for(int i=0;i<10;i++) { if(i==2) { continue;//忽略本次循环剩下的语句 } NSlog(@"继续执行程序"); } 使用return结束函数:遇

04 循环结构概述和for语句的格式及其使用

04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do-while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } C执行流程: a:执行初始化语句 b:执行判断条件语句,看其返回值是true还是false 如果是true,就继续执行 如果是false,就结束循环 c:执行循环体语句; d:执行循环后的操作表达式 e:回到B继续. D:案例演示 在控制台输出10次"hellow