三角阵

include<stdio.h>

int main()
{
char p = 'A';
char a;
scanf("%c", &a);
int i, j, k, l, n, b;
i = (int)a - 'A';
n = i;
for (k = 0; k <= i; k++) {
for (l = 0; l < n; l++)
printf("");
printf("%c", p);
for (j = 0; j < 2 * k - 1; j++)
printf(" ");
if (k != 0)printf("%c", p);
printf("\n");
p++;
n--;
b = j;
}
p = p - 2;
for (k = 0; k <= i - 1; k++) {
for (l = 0; l < k + 1; l++)
printf(" ");
printf("%c", p);
for (j = 0;j<b-2; j++)
printf(" ");
if (p != 'A')printf("%c", p);
printf("\n");
p--;
b-= 2;
}
return 0;

}
三角阵其实就是先计算某个字母与A的ASCI码值的差,得到行列与纵列,并分析纵列的变化趋势,注意用空变量来保留重要变量,防止在循环中的变量发生变化,导致提前结束,和空格错位。
在从上三角形到下三角形的过程中,最后一个字母与下三角的开端输出字母差值为2,因为在最后的输出值比输入值多1。在做下三角循环过程中可以保留上三角形控制中间空格的判断条件数值,这样我们在下三角形就可以直接使用了,可以减少思考力,但注意在后面的中间空格判断条件是减少2而不是1.
在做该类型题目先要与ASCI值联系起来,由于变量过多,其实上下三角形的变量可以一致,可以减少变量的使用,也可以回去查错。

posted @ 2020-11-17 23:12  -*+  阅读(212)  评论(0编辑  收藏  举报