zoukankan      html  css  js  c++  java
  • 第五章 循环结构反思

    练手篇:

      刚刚开始练手循环结构,肯定柿子要挑软的捏。于是我拿了第一个,开始练手之旅。

     

      按照老师开始讲的例题,我一开始先想的是这个图形应该可以分成两部分来考虑比较简单。第一部分为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就很简单了空格为j=1;j<=i;j++,*应该写j=1;j<=11-2*i;j++。

    #include<stdio.h>
    main()
    {
        int i,j,k;
        for (i=1;i<=4;i++)   
        {
            for (j=1;j<=5-i;j++)//这一段出了问题  
            printf(" ");
            for (k=1;k<=2*i-1;k++)  
            printf("*");
            printf("
    "); 
            
        }
        for (i=1;i<=5;i++) 
        {
            for (j=1;j<=i;j++) //空格的起始值应该是0
            printf(" ");
            for (j=1;j<=11-2*i;j++)  
            printf("*");  
        printf("
    ");
        } 
        
    }

      待我仔细一看,不对啊,出了问题,第四行的代码上了一个空格,所以我灵机一动,把空格的代码改了,由j=1;j<=5-i;j++改成了j=1;j<=6-i;j++。

      果然没错,要让第四行输出一个空格。感觉应该没错了,但是我发现了一个硬伤,好像第5行又多了一个空格所以图形显得如此相像。我才感觉我的图片有点怪怪的。所以问题应该不仅是那个应该是第二次的代码空格的起始值应该是0。所以最终代码应该为

    #include<stdio.h>
    main()
    {
        int i,j,k;
        for (i=1;i<=4;i++)   
        {
            for (j=1;j<=5-i;j++)  
            printf(" ");
            for (k=1;k<=2*i-1;k++)  
            printf("*");
            printf("
    ");  
            
        }
        for (i=1;i<=5;i++) 
        {
            for (j=0;j<=i-2;j++) 
            printf(" ");
            for (j=1;j<=11-2*i;j++) 
            printf("*");  
            printf("
    ");
        } 
        
    }

     

    总结

    重难点:

    for语句、while语句和do while语句和if语句和goto语句组合的循环。

    1.for语句一般形式:

    for(<初始表达式>;<条件表达式>;<循环变量表达式>)
    {
    <循环体语句>
    }

    2.while语句的一般形式:

    while(<条件表达式>)
    {
    循环语句
    循环变量表达式
    }

    3.do-while语句的一般形式:

    do
    {
    <循环体语句>
    }while(<条件表达式>);

    4.break与continue的作用与区别:

    break语句既可用于switch语句结构,又可用于循环语句结构,其作用是跳出控制结构语句。而continue语句不会中止循环,而是在<循环语句体>没有执行完的情况下,结束当前循环,提前进入下一个循环。
    break语句和continue语句都会破坏程序的结构化,使程序变成非结构化的程序,在解决问题时应该尽量避免使用这两种语句。

    5.循环结构的嵌套一种循环结构里包含另一种循环结构。使用嵌套结构时要注意嵌套的层次,不能交叉,嵌套的内外循环不能使用同名的循环变量,并列结构的内外循环允许使用同名的循环变量。

       

      感觉自己还是太年轻了,开始以为解决了第一个错误,却在错误的道路上越走越远。for语句中的起始值很重要,你要想好到底是从0开始还是从1开始,从1开始和从0开始是两种不同的写法,比如我的错误改法有两种,第一种是i=0;j<=i-2;j++第二种是i=1;j<=i-1;j++。然后是行列关系表达式,最后是循环语句规范书写。我觉得这是我循环结构中的总结的反思,保持对c的敬畏,好好学c,好好学循环。

  • 相关阅读:
    21-while里的break简单用法
    20-使用while循环求从1累加至100的值
    19-random猜数
    18-random猜数,直到正确。
    17-简化后的石头剪刀布
    16-if实现石头剪刀布
    生成随机数
    转换数字的进制(Integer、Long)
    数字的舍入
    格式化数字
  • 原文地址:https://www.cnblogs.com/zt1037054045/p/10708178.html
Copyright © 2011-2022 走看看