帕斯卡三角形像C中的星形图案

时间:2011-07-19 14:42:29

标签: c

我正在尝试用C:

打印这个模式
    *
   * *
  * * *
 * * * *

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

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


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

这是我的代码:

#include <stdio.h>

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 =最后一行中的星数

2 个答案:

答案 0 :(得分:3)

printf(" * ");

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

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

将此更改为k < sp - i*2;,因为您在开头打印了太多空格。

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

答案 1 :(得分:2)

这完全适用:

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();
}