题目描述:
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;
}