输入一个正整数n,打印出一个n行菱形或上三角或下三角图案

例如

输入:5

输出:

  #
 ###
#####
 ###
  #
显然要用循环,那么如何使用呢?

把行数n看作常数,再用某个变量去遍历每一行,在每一行中使用另一个变量去打印每一行的内容。或许捋清各个变量的关系会略微麻烦。

先定义三个变量n,j,i,n作为总行数,j可以遍历每一行,然后用i去逐一打印每一行的空格和字符。

自己写的代码如下

#include
int main() 
{
    char ch;
    scanf("%c", &ch);
    int i, j;//n为总行数长数,j从第一行遍历,i考察每一行
    int n = 9;
    for (j = 1; j <= (n + 1) / 2; j++)//首先从中间的一行为基准,将问题考虑成打印上下俩三角
    {
        for (i = 0; i < (n + 1) / 2 - j; i++)//打印每一行空格
        {
            printf(" ");
        }
        for (i = 0; i < 2 * j - 1; i++)//打印每一行字符
        {
            printf("%c", ch);
        }
        printf("\n");
    }//遍历上三角每一行
    for (j = 1; j <= (n - 1) / 2; j++)
    {
        for (i = 0; i < j; i++)
        {
            printf(" ");
        }
        for (i = 0; i < n - 2 * j; i++)
        {
            printf("%c", ch);
        }
        printf("\n");
    }

    return 0;
}

在真正写的时候我自己容易纠结每个变量的职能,导致犹豫半天,或许这时先把能写的随便找个字母替代,在接着写会比较好吧(取好变量名真重要)。

你可能感兴趣的:(算法,数据结构,c语言)