PAT B1036 跟奥巴马一起编程

题目描述:

PAT B1036 跟奥巴马一起编程(15)

时间限制
400 ms
内存限制
65536 kB

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!

输入格式:

输入在一行中给出正方形边长N(3=N=20)和组成正方形边的某种字符C,间隔一个空格。

输出格式:

输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。

输入样例:
10 a

输出样例:

aaaaaaaaaa
a        a
a        a
a        a
aaaaaaaaaa

思路分析:

从样例输出上看一开始可能会主观地觉得每一行之间会有一个空行,但其实根据题意是没有的,由题目所给输出格式要求里我们可以抓住的点是,这个正方形的行数是列数的一半,四舍五入取整。要注意的点是,当列数col是偶数时,行数row是col/2,当列数col是奇数时,行数row是col/2+1。

根据题目要求以及分析样例规律,这个图形我们可以用很原始的办法十分简单的绘制出来:

  • step 1,输入边长(以为准列数,行数为列数的50%)和指定字符c;
  • step 2,判断列数col的奇偶性,分情况确定行数row的值;
  • step 3,输出正方形第一行,即col个字符;
  • step 4,输出正方形中间的row-2行,首尾是字符c,中间是col-2个空格;
  • step 5,输出正方形最后一行,同step 3。

AC代码:

#include<stdio.h>

int main()
{
    int row,col;
  //row为行数,col为列数,边长N以列数为准,即N == col
    char c;
    while(scanf("%d %c",&col,&c) != EOF){
        if(col % 2 ==0)
          //偶数情况
            row = col / 2;
        else
          //奇数情况
            row = col / 2 +1;
        for(int i = 0;i < col;i++){
            printf("%c",c);
        }
      //第一行
        printf("\n");
      //注意换行
        for(int i = 2;i < row;i++){
            printf("%c",c);
            for(int j = 0;j < col-2;j++)
            {
                printf(" ");
            }
            printf("%c\n",c);
        }
      //中间row-2行
        for(int i = 0;i < col;i++){
            printf("%c",c);
        }
      //最后一行
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值