zoukankan      html  css  js  c++  java
  • 循环结构课后反思

                                                                   一、   个人认为的重点

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

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

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

                                                                   二、解析代码

    #include<stdio.h>
    int main()
    {
        int i,j,k,width;
        printf("亲输入最大宽度:
    ");
        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("
    ");
            }
        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("
    ");
            
            }
        }
        else 
        printf("错误
    ") ;
    
    }

    解析:首先这个代码实现的图形是一个菱形,而实现这个图形的切入点就是“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。

  • 相关阅读:
    iOS 5中的strong和weak关键字解析
    【ios】第三方开源类库SSCheckBoxView
    NSRange
    ios开发之在iOS应用中加载自定义字体显示
    IOS中NSUserDefaults的用法(本地数据存储)
    关于setTimeout运行机制
    SpringMVC入门学习框架搭建
    HashMap学习总结
    关于服务器跨域问题(使用cors解决)
    Spring IOC容器和bean
  • 原文地址:https://www.cnblogs.com/Artificial/p/10693164.html
Copyright © 2011-2022 走看看