zoukankan      html  css  js  c++  java
  • 输出一个等边三角形的字母阵,等边三角形的两腰为字母A,往里靠依次字母大一个(详细题目文章中描述)

    题目简单的描述就是输出这么一个金字塔型的字母阵(等边三角形)

    /*

         A

       ABA

     ABCBA

     */


    /*

    //解法①:对称轴法

    #import <stdio.h>

    int main()

    {

        int i,j;

        for(i=0;i<3;i++)

        {

            for(j=0;j<2-i;j++) //先把空格输出够

                printf(" ");

            for(j=-i;j<=i;j++) //在已经输出完的空格右边输出字母,第一行就是从-0+0,共一个字母;第二行就是从-1+1,共三个字母;第三行就是从-2+2,共五个字母。正好将该行的字母数量和该行的行数相关联

                printf("%c",65-abs(j)+i);  //这个输出字母,就是再‘A’的基础上(A65)和ij相加减得到的,这个试一试就能找到65ij之间的关系式,也不难。这里可能大家会说,为什么不能用65+j+i输出呢,只需验证一下,用 printf("%c",65+j+i); 这条语句输出的结果是下面的,显然,对称轴右边的部分不对,那么改进大家就知道怎么改了。

            //    A

            //   ABC

            //  ABCDE

            printf(" ");

        }

        return 0;

    }

     


    //解法②:最普通的解法,啥技术都不用,就是单纯分析行列下标和ASCII值(65 for 'A')的关系,然后分块将输出的字符拼接起来

     下面这个程序这样理解:

     外层for语句控制行

     三个内层for语句:1)控制空格输出;2)输出对称轴上的字母及其左边的字母;3)输出对称轴右边剩下的字母


    /*

    #import <stdio.h>

    int main()

    {

        int i,j;

        for(i=0;i<3;i++)

        {

            for(j=0;j<3-i;j++)

                printf(" ");

            for(j=0;j<=i;j++)

                printf("%c",65+j);

            for(j=0;j<i;j++){

                printf("%c",64-j+i);

            }

            printf(" ");

        }

        return 0;

    }

     */


    就是这么简单,不喜勿喷,希望对初学C的同学有帮助!

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    HTML
    python io
    python 线程进程
    python socket
    python 面向对象2
    python 面向对象
    python hashlib模块
    python configparser模块
    python logging模块
    数组去重方法汇总
  • 原文地址:https://www.cnblogs.com/wzy294250051/p/4787902.html
Copyright © 2011-2022 走看看