一本通1197 画矩形

【题目描述】

根据参数,画出矩形。输入四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。

【输入】

输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。

【输出】

输出画出的图形。

【输入样例】

7 7 @ 0

【输出样例】

@@@@@@@
@     @
@     @
@     @
@     @
@     @
@@@@@@@

1.
这个题也是那种很好理解,但是代码死活打不出来的那种。想了想觉得还挺好做,但真正上手的时候依然死去活来。

2.话不多说先分析一下这个题吧。
先看一看这个题目的要求,直接想到循环(这可一定)
首先四个变量,两个int,一个char再来一个bool(其实这个用int也没什么大不了的,照样能用)
实心的矩形比较好实现,循环套循环,两轮操作,每次操作输出一个字符就行。
直接分析空心的。
现在有两种方案:
(1):从全局考虑,直接两个循环;
(2):两个循环,把第一行和最后一行(字符是满的)和其他行(只有首尾有字符)分隔开来。
分别按不同的情况输出。
3.正常人都会选第二种好吧,因为第二种代码实现的时候比较简单
4.让我们看看正解,对着正解走一遍流程
#include
#include
#include
using namespace std;
int main()
{
    int a,b;//定义行和列
    char c;//定义画矩形的时候要用的字符
    bool x;//判断实心空心
    int i,j;
    cin>>a>>b;
    cin>>c;
    cin>>x;
    if(x)//实心
    {
        for(i=1;i<=a;i++)//循环高或宽
        {
            for(j=1;j<=b;j++)   
			cout< 
  

 其实也挺简单的对吧。

5.冷静分析永远是第二要务(第一要务是慌...)

   从题干和输入输出范例中剥取信息也是奥赛考察的重点之一。

你可能感兴趣的:(一本通1197 画矩形)