输出一个等边三角形的字母阵,等边三角形的两腰为字母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的同学有帮助!

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

原文地址:https://www.cnblogs.com/wzy294250051/p/4787902.html