我想打印两个看起来像这样的半金字塔:
到目前为止,我的代码看起来像这样
#include <stdio.h>
int main(void) {
int row, star, space, n;
printf("Enter row number:");
scanf("%d", &n);
for (row = 1; row <= n; row++) {
for (space = n - 1; space >= row; space--){
printf(" ");
}
for (star = 1; star <= row; star++) {
printf("##");
}
printf("\n");
}
return 0;
}
但它打印整个金字塔,我如何在中间实现一个空间?
答案 0 :(得分:1)
#include <stdio.h>
int main(void) {
int height=5;
const char* bricks = "###############"
for(int i=1; i<height+1; ++i)
{
printf("%*.*s %.*s\n", height,i,bricks, i,bricks);
}
return 0;
}
输出:
# #
## ##
### ###
#### ####
##### #####
答案 1 :(得分:0)
for(star=1;star<=row*2;star++){
printf("#");
if(star == row)
printf(" ");
}
按上述方式修改第二个循环
答案 2 :(得分:0)
以下代码易于理解,而可让您完全控制:
您也可以更改高度(行数)和半个金字塔的大小(例如 - 4)。然后它将*
打印为图像中的砖块,spaces
作为空格,##
作为它们之间的空间。
#include <stdio.h>
int main(void)
{
int row,col,space,n1=4, n2=4;
for(row=1;row<=n1;row++){
for(space=n2-row;space>=0;space--)
printf(" ");
for(col=1;col<=row;col++)
printf("*");
printf("##");
for(col=1;col<=row;col++)
printf("*");
for(space=n2-row;space>=0;space--)
printf(" ");
}
printf("\n");
}
示例输出:
*##*
**##**
***##***
****##****