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;
    }
  • 相关阅读:
    out/host/linuxx86/obj/EXECUTABLES/aapt_intermediates/aapt 64 32 操作系统
    linux 查看路由器 电脑主机 端口号 占用
    linux proc进程 pid stat statm status id 目录 解析 内存使用
    linux vim 设置大全详解
    ubuntu subclipse svn no libsvnjavahl1 in java.library.path no svnjavahl1 in java.library.path no s
    win7 安装 ubuntu 双系统 详解 easybcd 工具 不能进入 ubuntu 界面
    Atitit.json xml 序列化循环引用解决方案json
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.跨语言  文件夹与文件的io操作集合  草案
    Atitit.atijson 类库的新特性设计与实现 v3 q31
  • 原文地址:https://www.cnblogs.com/yfish/p/9710960.html
Copyright © 2011-2022 走看看