BC-68 X型图案

输入描述

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述

针对每行输入,输出用“*”组成的X形图案。

示例

输入:5

输出:*        *
             *   * 
               *  
             *    * 
           *        *

思路:要看哪种情况需要打印“*”,哪种情况需要打印空格,先创建i和j2个变量,来表示行和列,主对角线很好知道,当i和j相等的时候需要打印“*”,但是副对角线的时候就需要想一想了,满足哪种式子就会打印*,当i+j=n-1时就需要打印了。s

代码实现

#include <stdio.h>

int main() 
{
    int n=0;
    while(scanf("%d",&n)!=EOF)
    {
        int i=0;//控制行
        for(i=0;i<n;i++)
        {
            int j=0;//控制列
            for(j=0;j<n;j++)
            {
                if(i==j||i+j==n-1)//i==j时是正斜线,i+j==n-1时是反斜线,这2种都需要打印*
                {
                    printf("*");
                }
                else 
                {
                    printf(" ");
                }
            }
            printf("\n");//打印完一行进行换行
        }
    }
    return 0;
}

题目链接:X形图案_牛客题霸_牛客网

还有一个类似的题目就是打印空心正方形图案

输入描述:多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。

输出描述:针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。

思路:为了更好的说明,我用i表示行,j表示列,“o”表示空格,因为题目要求是每个“*”后面有一个空格,所以我把“*o”放在一个表格里,通过观察得出当i==0和j==0时需要打印*o,这样第0行和第0列就打印完了,然后就剩下第3行和第3列了,这个时候就是当i==n-1和j==n-1时需要打印。

注意:我当时写的时候首先没注意打印完*后需要加空格,所以提交结果的时候不通过,还有就是不要以为“*”占一个小方格,空格占一个小方格,这样就相当于“*”和“o”总共占了2个位置,要看成一个整体放在一个位置中。(1,1)(1,2)(2,1)(1,2)这4个位置,每个小位置里面是2个空格,就相当于把“*”换成“o”,打印的时候是“oo”。

代码实现

#include <stdio.h>
int main() 
{
    int n=0;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(i==0||i==n-1||j==0||j==n-1)
                    printf("* ");
                else 
                    printf("  ");//2个空格
            }
            printf("\n");
        }  
    }
}

题目链接:空心正方形图案_牛客题霸_牛客网

我感觉我写的不是很好,如果有更好的方法欢迎分享,有错误的话希望提出了,我会及时改正,谢谢阅读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值