• 一本通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<iostream>
    #include<cstdio>
    #include<cmath>
    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<<c;//循环宽或高
            cout<<endl;//换行忘了全都凉
            }
        }
        else//空心
        {
            for(i=1;i<=a;i++)
            {
                for(j=1;j<=b;j++)
                {
                    if((i==1)||(i==a)||(j==1)||(j==b))//输出列或行首尾的字符
                        cout<<c;
                    else
                        cout<<" ";//输出行或列中间空着的部分
                }
                cout<<endl;//换行不能忘
            }
        }
        cout<<endl;
        return 0;
    }
    

     其实也挺简单的对吧。

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

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

  • 相关阅读:
    Heroku
    Git基本命令(转)
    github之从零开发
    物理层、、。。。
    BeautifulSoup, 的使用
    路径设置
    http协议
    Python 的os模块与sys模块
    python 操作MySQL数据库
    多进程记要
  • 原文地址:https://www.cnblogs.com/Jiangxingchen/p/12249014.html
Copyright © 2020-2023  润新知