打印空心字母金字塔

发布时间 2023-04-27 19:21:50作者: harper886

打印空心字母金字塔


今天独自做了一个这个题,简单的分享一下我的思路和代码

#include <stdio.h>

int main() {
////char ch;
////ch=getchar();
//
//
////这里我们先输出带有E行的图案
//for(int i='A';i<='A';i++){//用字符来做循环条件的参数
//	for(int j=0;j<39;j++){//先打印第一行。先打印39个空格
//		printf(" ");
//
//	}
//	printf("A");打印一个A
//	printf("\n");
//}
//
//
//for(int i='B';i<=('E'-1);i++){//找到中间n-2行的规律两端是字母,中间是空格
//
//	for(int j=0;j<39-(i-'A');j++){//打印前面的空格
//
//		printf(" ");
//
//
//	}
//	printf("%c",i);//打印开头的字母
//	for(int k=0;k<(2*(i-'A')-1);k++){
//
//
//
//		printf(" ");//打印两字母间的空格
//	}
//	printf("%c",i);//打印每行最后的字母
//
//	printf("\n");
//
//
//}
//
//for(int i='E';i<='E';i++){
//	for(int j=0;j<39-(i-'A');j++){
//		printf(" ");//打印最后一行的空格,与前面空格的规律一样
//
//
//	}
//	for(int k=0;k<(2*(i-'A')+1);k++){
//
//
//
//		printf("%c",i);//打印最后一行的字符;与前面的规律不一样
//
//	}
//}

	//下面我们再输出n行
	char ch;
	scanf("%c", &ch);//搜集字母


	//这里我们先输出带有E行的图案
	if (ch == 'A') {//这里要判断输入是不是A,因为A和其他的字母输出不一样


		for (int i = 'A'; i <= 'A'; i++) {
			for (int j = 0; j < 39; j++) {
				printf(" ");

			}
			printf("A");
		}
	} else {

		for (int i = 'A'; i <= 'A'; i++) {
			for (int j = 0; j < 39; j++) {
				printf(" ");

			}
			printf("A");
			printf("\n");
		}//这里是打印第一行




		for (int i = 'B'; i <= (ch - 1); i++) {


			for (int j = 0; j < 39 - (i - 'A'); j++) {

				printf(" ");


			}
			printf("%c", i);
			for (int k = 0; k < (2 * (i - 'A') - 1); k++) {



				printf(" ");
			}
			printf("%c", i);

			printf("\n");


		}//上面的打印接下来镂空的n-2行

		for (int i = ch; i <= ch; i++) {
			for (int j = 0; j < 39 - (i - 'A'); j++) {
				printf(" ");


			}
			for (int k = 0; k < (2 * (i - 'A') + 1); k++) {



				printf("%c", i);

			}
		}//这里是打印最后一行
	}
	return 0;
}