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

时间:2023-03-09 13:27:30
输出一个等边三角形的字母阵,等边三角形的两腰为字母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’的基础上(A是65)和i,j相加减得到的,这个试一试就能找到65和i,j之间的关系式,也不难。这里可能大家会说,为什么不能用65+j+i输出呢,只需验证一下,用 printf("%c",65+j+i); 这条语句输出的结果是下面的,显然,对称轴右边的部分不对,那么改进大家就知道怎么改了。

//    A

//   ABC

//  ABCDE

printf("\n");

}

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("\n");

}

return 0;

}

*/

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

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