用C语言打印菱形图案

解决这个问题的方法就是找规律,可以观察到每一行由空格和*号组成,先打印空格,再打印*号就可以了。

假设菱形上半部分为n行,菱形一共有(2*n+1)行,每一行星星数为stars,最中间一行的星星数为max_stars=2*n+1,我观察到的规律为每一行先打印(max_stars-stars)/2个空格,再打印stars个星星。规律不唯一,只有找到了正确的规律代码就好写了。

代码如下:

//打印菱形图案
#include
#include

int main(void)
{
    int n;
    scanf("%d",&n);
    int i,j;
    int max_stars=2*n+1;   //中间的星星数
    int stars;          //每一行的星星数,每行星星数相差2
    //打印前面n行
    for(i=1,stars=1;i<=n;i++)
    {
        for(j=1;j<=(max_stars-stars)/2;j++)
            printf(" ");
        for(j=1;j<=stars;j++)
            printf("*");
        putchar('\n');
        stars=stars+2;
    }
    //打印中间一行

你可能感兴趣的:(c语言)