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

    效果如下:

    我是怎么想的:

    总共需要打印6行字母,那么就需要一个循环来控制打印第几行,大概代码如下:

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

    {

    }

    每行都会打印字母,而且循环越往后,需要打印的字母越多,那么每行打印字母也需要一个循环,比如打印F到A这需要一个循环,其它也是同样的道理。每行打印完都需要输出一个换行,所以代码变成下面这样

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

    {

      for(char j='F';XXXXX;j--)

      {

      }

      printf("%c",j);

    }

    因为每行都是从F开始打印的,所以j的初始值肯定是F,有因为每次是从F往A这个方向打印的,那么肯定有j--这个操作,上面的代码不难理解。

    真正难的是j=‘F’后面这个进入循环的条件,这个怎么想。

    用列举法推出来的。

    当i=0的时候,需要打印第一行字母,此时j='F',那么我们给j一个什么样的关系表达式,才能够让j只能取到'F'这一个值呢?

    是不是j>'F'-1

    char j='F',j>'F'-1;j-- j的定义域只能取到‘F’

    当i=1的时候,需要打印第二行字母,也就是需要里面的循环执行两次,那么给j一个什么样的表达式,才能够让j的值渠道'F'和‘E’呢? 是不是j>'F'-2;

    我们不能直接把'F'-1和'F'-2这两个表达式直接写进去,不然输出的是固定值,我们想要这两个值和i发生一定的关系

    当i=0时候,我们希望j>'F'-1='F'-(0+1)

    当i=1时候,我们希望j>'F'-2='F'-(1+1)

    当i=3时候,我们希望j>'F'-4='F'-(3+1)

    所以通项公式就是j>'F'-(i+1)

    最后代码如下:

    int main(void)
    {
        
        for (int i = 0; i < 6; i++)
        {
            for (char j = 'F'; j > 'F'-(i+1); j--)
            {
                printf("%c",j);
            }
            
            
            printf("
    ");
        }
    
    
    
    
        return 1;
    }

    update:2018.10.2

    这次思考过程和上次完全不一样。

    首先需要一个外层循环来控制打印的行,共需要打印6行,每循环一次打印一行数据。还需要一个内层循环控制要打印的字符

    由于,内存循环每次都是从F开始打印的,所以内存循环每次都要初始化变量为F,每次打印一个字符后就让字符减去1,这样就可以打印比F小的那个字符了,那要打印多少个字符呢?我们需要用一个变量来记录,然后每进行一次外层循环这个变量的值都要+1,因为第二行要比第一行多打印一个字符。

    int main(void)
    {
        char ch ;//当前要打印的字符
        int row_count=1;//每行需要打印额字符个数,从第一行开始
        int count;//打印了几个字符了
    
        for (int i = 0; i < 6; i++,row_count++)
        {
            for (ch='F',count = 0; count < row_count; count++,ch--)
            {
                printf("%c",ch);
            }
            printf("
    ");
        }
        
        
        return 1;
    }
  • 相关阅读:
    (JS+CSS)实现图片放大效果
    PowerDesigner(数据建模)使用大全
    可输入的下拉框(简易实现)
    MVC 验证码实现( 简易版)
    http程序接口、调用(最入门级,文末附Demo)
    【BZOJ】3730: 震波
    【HDU】HDU5664 Lady CA and the graph
    【AtCoder】AGC016
    【AtCoder】ARC076
    【AtCoder】AGC032
  • 原文地址:https://www.cnblogs.com/yfish/p/9710960.html
Copyright © 2011-2022 走看看