Pascal Triangle就像C中的星形图案

我想在C中打印这个模式:

* * * * * * * * * * 

我提出了类似的事情,但它没有完全一致,看到这个:

  * * * * * * * * * * * * * * * 


这有点倾向于右边。 我认为我有关于间隔星星的概念是正确的,但有些事情是错误的,有人可以帮我解决这个问题吗?

这是我的代码:

 #include  int main() { int sp, st, i, j, k; printf("Enter rows: "); scanf("%d", &st); sp = st * 2; for(i = 1; i <= st; i++) { for(j = 1; j <= i; j++) { if(j == 1) for(k = 1; k <= sp - i*2; k++) printf(" "); printf(" * "); } printf("\n"); } } 

请注意,sp =空格数,st =最后一行中的星数

 printf(" * "); 

你应该只打印一个空格,可能是"* "

 for(k = 1; k <= sp - i*2; k++) 

将其更改为k < sp - i*2; 因为你在开始时打印的空间太多了。

此外,这在技术上并不是错误的,但我认为你应该将你的第三个for循环(带有k循环)拉出你的第二个for循环。 你不需要对第二个for循环的每次迭代都进行检查,因为它只是打印初始空格。

这完全适用:

 void main() { int i = 0, j = 0, k; for (i = 0; i < 17; i++) { for (k = 16; k >= i; k--) { printf(" "); } for (j = 0; j <= (i); j++) { printf("* "); } printf("\n"); } getch(); }