(C语言)用'*'输出指定行数的矩形

该博客介绍了如何用C语言编程来根据用户输入的行数,生成一个由'*'和' '组成的嵌套矩形。通过二维数组a存储矩形的状态,然后遍历并打印出相应的字符。程序首先初始化一个全零的二维数组,接着根据输入的行数n进行计算,并用if条件判断来标记'*'和' '#'的位置。最后,遍历数组并输出对应的字符,形成完整的嵌套矩形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import <Foundation/Foundation.h>




#define N 3;


int main(int argc, const char * argv[])

{

    int n = 0 ;

    printf("请输入高N:");

    scanf("%d", &n);

    int a[999][999] = { 0 } ;

    int m = n / 2; // 半高

    

    

    for (int i = 0 ; i < m; i++)

    {

        for (int j = 0 ; j <= i; j++)

        {

            if ((j + 1) % 2 == 1)

            {

                a[i][j] = 1;   // 标记*

                //printf("*");

            }

            else

            {

                a[i][j] = 2// 标记#

                //printf("#");

            }

        }

    }


    

    for (int i = 0 ; i < m; i++)

    {

        for (int j = n - 1 ; j >= n - 1 - i; j--)

        {

            a[i][j] = a[i][n - 1 - j];

        }

    }

    

    for (int i = 0 ; i < m; i++)

    {

        for (int j = 0; j < 2 * ( m - i - 1 ) + 1; j++)

        {

            if (( i + 1) % 2 == 1)

            {

                a[i][j+i+1] = 1;

            }

            if (( i + 1) % 2 == 0)

            {

                a[i][j+i+1] = 2;

            }

        }

    }

    

    

    for (int i = m + 1; i < n; i++)

    {

        for (int j = 0 ; j < n; j++)

        {

            a[i][j] = a[n-1-i][j];

        }

    }

    

    if (n % 2 != 0)

    {

        for (int i = m + 1; i < n; i++)

        {

            for (int j = 0 ; j < n; j++)

            {

                a[i][j] = a[n-1-i][j];

            }

        }

        

        for (int j = 0 ; j < n; j++)

        {

            if ((j + 1) % 2 == 1)

            {

                a[n / 2][j] = 1;   // 标记*

            }

            else

            {

                a[n / 2][j] = 2// 标记#

            }

        }

        

    }

    else

    {

        for (int i = m ; i < n; i++)

        {

            for (int j = 0 ; j < n; j++)

            {

                a[i][j] = a[n-1-i][j];

            }

        }

    }

    

    for (int i = 0; i < n; i++)

    {

        for (int j = 0; j < n; j++)

        {

            if (a[i][j] == 1 )

            {

                printf("*");

            }

            if (a[i][j] == 2 )

            {

                printf(" ");

            }

        }

        printf("\n");

    }

 

    return 0;

}



输入一个小于1000的正整数,输出一个矩形 层层嵌套

例如输入3

结果如下

***

* *

***

输入10

**********

*        *

* ****** *

* *    * *

* * ** * *

* * ** * *

* *    * *

* ****** *

*        *

**********



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值