zoukankan      html  css  js  c++  java
  • c语言实践 打印三角形

    效果如下:

    我是怎么考虑这个问题的。

    首先共有5行,那么我们需要一个循环,让这个循环走5遍。

    那么我们有个大概的代码结构

    for(int i=0;i<5;i++)

    {

    }

    i的定义域是[0,4]之间的整数,共5个数,所以循环5次。

    接下来再考虑,第一次循环输出一个星,后面几次循环输出的星越来越多,所以输出多个星也是需要一个循环的,

    for (int i=0;i<5;i++)

    {

      for(int j=0;jxxx;j++)

      {

        printf("*");

      }

      printf(" ")

    }

    为什么会想到j=0?和j++因为我能猜到里层循环的循环体是每次画一个星的,而且外层循环多循环一次,那么里层循环的星星就多一点。既然j是控制里层循环的,那么j的值肯定是从一个比较小的数慢慢增长起来的,那么我们就设j的初始值是0,j每次增加1。

    再看题目可以发现,第一次外层循环的时候需要输出一个星,那么意味着里层循环只能执行一次,现在j的值已经是0了,我们给j一个什么条件才能让j的定义域只能是0这一个整数呢?是不是j<1,如果j=0,j<1成立的话,那么j只能取到0,即只能循环一次。

    那么我们把程序写成这样行不行?

    for(int i=0;i<5;i++)

    {

      for(int j=0;j<1;j++)

      {

      printf("*");

      }

      printf( );

    }

    这样的话,外层循环每循环一次,里层循环都只能输出一个星,这是不对的。

    我们再看第二行,是需要输出两个星的,意思是让里层循环执行2次,那么需要j<2,对吧,int j=0 ;j<2,j++

    j的定义域是0 1 这两个数,意味着要输出两个星。而此时i的值是1

    好像发现了一个规律

    i=0时 j<1就可以输出一个星

    i=1时 j<2就可以输出两个星

    1和2好像和i的值有某种关系? 对,j<i+1;

    所以我们代码就成功了。

    int main(void)
    {
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < i+1; j++)
            {
                printf("*");
            }
            printf("
    ");
    
        }
    
    
    
        return 1;
    }
  • 相关阅读:
    [HDOJ4417]Super Mario(归并树)
    [POJ2104] K-th Number(归并树,二分)
    2017北理校赛G题 人民的名义(FFT)
    [CF762C] Two Strings(预处理,二分答案)
    [CF798D] Mike and distribution(贪心,鸽笼原理,随机)
    [CF798C] Mike and gcd problem(规律,gcd)
    2017北理校赛H题 青蛙过河(线段树, dp, 离散化)
    [CF798B] Mike and strings(暴力)
    [CF798A] Mike and palindrome(水题,trick)
    [CCPC2017]湘潭邀请赛
  • 原文地址:https://www.cnblogs.com/yfish/p/9710405.html
Copyright © 2011-2022 走看看