代码实现:
#include <cstdio>
/*图案打印问题的一般思路
*一、申请二维数组(固定大小,放在全局变量的位置
*二、根据条件,从任意方向设置我们的二维数组。
*三、把二维数组的每一行边界的后一个位置使用'\0',赋值
*四、使用printf %配合循环打印每一行
* 输入: 4
输出 : ****
******
********
**********
*/
char arr[1000][3000];
int main(){
int h;
while(scanf("%d",&h) != EOF){
// for(int i = 0;i<h;i++){
// for (int j = 0; j < 2*h-2-2*i; ++j) {
// printf(" ");
// }
// for(int j = 0;j < h+2*i;++j){
// printf("*");
// }
// printf("\n");
// } //输出梯形
//利用二维数组
//将区域全部填上空格
for (int i = 0; i < h; ++i) { //高度
for(int j = 0;j<3*h - 2;++j){ //宽度
arr[i][j]=' ';
}
arr[i][3*h-2] = '\0'; //'\0'用来指示每行字符串的结束
}
//填充梯形区域 从下往上填充
int beg = 0;
for (int i = h-1; i >= 0 ; --i) {
for(int j=beg;j<3*h-2;++j){
arr[i][j]='*';
}
beg +=2;
}
//输出每个数组的内容
for(int i = 0;i<h;++i){
// for (int j = 0; j < 3*h - 2; ++j) {
// printf("%c",arr[i][j]);
// }
// printf("\n") ;
printf("%s\n",arr[i]);
}
}
return 0 ;
}