打印字符菱形题目详解(小白都能看懂哦~)

1.题目分析:

首先呢,它让你用字符填充对角线长5个字符,倾斜放置的菱形,并且输入时char类型的字符,那我们可以输入的时候可以使用

scanf(“%c”,&n);

的方式输入字符,具体**%c****的用法可以看下图,那么这道题我们既能通过直接输出打印字符来做这题,也可以通过嵌套循环解这道题,在这里博主分享的是如何用循环来解这道题。

#include <stdio.h>

int main() {
    
    

    char n;
    scanf("%c", &n);
    int k = 0;
    int x = 1;
    for (int i = 1; i <= 3; i++) {
    
    
        k = i;
        for (int j = 3; j > k; k++) {
    
    
            printf(" ");
        }
        for (int t = 1; t <= 2 * (i - x) + 1; t++) {
    
    
            printf("%c", n);
        }
        printf("\n");
    }
    for (int i = 1; i < 3; i++) {
    
    
        for (int j = 1; j <= i; j++) {
    
    
            printf(" ");
        }
        for (int t = 1; t <= 2 * (2 - i) + 1; t++) {
    
    
            printf("%c", n);
        }
        printf("\n");
    }


    return 0;
}

2.解题思路分析

首先呢,我们可以先打印菱形的上半部分,由于它是三行,所以循环条件可以写成**(i<=3),然后通过观察每一行的变化,它都是先打印空格,再打印字符#,因此我们可以把变量i的值赋给k,然后通过for循环打印空格的个数,细心的话,我们可以发现第一行空格个数为2,第二行空格个数为1,第三行就没有空格,那么我把空格循环条件设为(j>k),这样可以满足题目条件,接下来我们要打印字符#,通过示例一**可以准确观察出第一行#为一个,接下来每行#都会递增两个,我们可以把它理解成一个递增的数列,然后循环条件可以写成

t <= 2 * (i - x) + 1;

这种形式,因为每次循环,i都会加1,这样就可以轻松地打印出字符#的个数,需要注意的是我们还要加上

printf(“\n”);

扫描二维码关注公众号,回复: 17169596 查看本文章

这句话,因为每当我们打印完一行的空格和字符#,都要执行换行操作。

然后到下半部分菱形字符的打印。我们知道前面我们已经打印了三行,还有两行没有打印,那我们就可以循环条件就可以写成i<3,然后我们也能得知第四行空格数为一个,第五行为两个,那我们可以通过设置j=1,然后循环变量写成j<=i的形式,这样就能把空格数打印出来,当我们打印了空格,我们就要打印字符**#,这一次,#**的个数是每行递减2个,相当于一个递减的数列,那么我们就把循环条件设为

t <= 2 * (2 - i) + 1;

,随着变量i的数量增加,循环的次数就会变少,当i的值增加到3时,由于不符合第一个for循环i<3的条件。那么将会跳出整个for循环。这样我们就能把整个字符菱形给打印出来。

好了,字符菱形打印的题目就讲到这里。如有博主讲得不太好的地方,欢迎大家在评论区指正一下。

猜你喜欢

转载自blog.csdn.net/m0_63564767/article/details/132130630