浙大版《C语言程序设计(第3版)》题目集 习题4-9 打印菱形图案 (15分)

在这里插入图片描述
题解:

  • 打印图形一定是二重循环。
  • 星星上面每行逐渐多,下面每行逐渐少,一定是两组二重循环,一个管上面,一个管下面。
  • 上面有四行故第一重for循环条件 i < (n+1)/ 2。
  • 前四行空格规律:第一行3对空格,第二行2对空格,第三行1对空格,第四行没有。7/2 = 3且i又是从0-3,于是想到n/2 - i.
  • 前四行星星规律:1 3 5 7,i从0-3,于是想到2 * i + 1
  • 下面以此类推。

方法一:

#include <stdio.h>
int main()
{
    int n, i, j;
    scanf("%d", &n);
    for (i = 0; i < (n + 1) / 2; i++)
    { //前四行。
        for (j = 0; j < n / 2 - i; j++)
            printf("  ");
        for (j = 0; j < 2 * i + 1; j++)
            printf("* ");
        printf("\n");
    }
    for (i = 1; i <= (n - 1) / 2; i++)
    { //后三行。
        for (j = 0; j < i; j++)
            printf("  ");
        for (j = 0; j < n - 2 * i; j++)
            printf("* ");
        printf("\n");
    }
    return 0;
}

方法二:

#include <stdio.h>
int main()
{
    int n, i, j;
    scanf("%d", &n);
    for (i = 0; i < n / 2 + 1; i++)
    {
        for (j = 0; j < n / 2 - i; j++)
            printf("  ");
        for (j = 0; j < (i + 1) * 2 - 1; j++)
            printf("* ");
        printf("\n");
    }
    for (i = n / 2; i > 0; i--)
    {
        for (j = n / 2 - i + 1; j > 0; j--)
            printf("  ");
        for (j = i * 2 - 1; j > 0; j--)
            printf("* ");
        printf("\n");
    }
    return 0;
}

了解更多打印其他图形可点击本处

发布了165 篇原创文章 · 获赞 117 · 访问量 7801

猜你喜欢

转载自blog.csdn.net/qq_44458489/article/details/105320749
今日推荐