C语言精选练习题:(11)打印菱形

发布时间:2023年12月18日

每日一言

Intelligence without ambition is a bird without wings.
聪明但没有抱负,就像没有翅膀的鸟。


题目

输入一个整数n,打印对应2n-1行的菱形图案,比如输入7,图案一共13行

1          *
2         ***
3        *****
4       *******
5      *********
6     ***********
7    *************
8     ***********
9      *********
10      *******
11       *****
12        ***
13         *

思路

  1. 将图案分为上下两部分(前7行和后6行)
    在这里插入图片描述

  2. 仔细观察这个图形,发现上半部分一共n行,第 i 行需要打印2*i -1个*号

  3. 上半部分:需要打印n行

  4. 为了实现居中对齐,我们可以在每一行的前面打印n-i-1个空格。

  5. 接着打印i+1个*号

  6. 最后别忘记换行

  7. 下半部分:需要打印n-1行

  8. 为了实现居中对齐打印i+1个空格

  9. 接着打印n-i-1个*号
    10.别忘记换行

代码

#include <stdio.h>
int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        //将菱形分成两部分 上部是n+1行打印 下部是n行打印
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n - i-1; j++)
            {
                printf(" ");
            }
            for (int j = 0; j <= i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }

        for (int i = 0; i < n-1; i++)
        {
            for (int j = 0; j <= i; j++)
            {
                printf(" ");
            }
            for (int j = 0; j < n - i-1; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


文章来源:https://blog.csdn.net/qrwitu142857/article/details/134700699
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。