哈喽,大家好,我回来了。
最近都没更新,不是我不想更,实在是没找到好题。ヽ(≧□≦)ノ
好啦,进入正题。
说明
输入两个正整数 a,b(1≤a,b≤10) 和一个字符 c,a 和 b 代表矩形的宽和高,c 代表绘制矩形的符号,输出一个由字符 c 围起来的空心矩形。
输入格式
输入两个整数 a 和 b 和一个字符 c。
输出格式
输出一个由字符 c 围起来的空心矩形。
样例
输入数据 1
5 4 *
Copy
输出数据 1
*****
* *
* *
*****
看起来是不是很简单?
确实。
做起来还是挺难滴。O(∩_∩)O
不信?那你来啊!!!
————————————————
这道题给了宽(a)和高(b),以及符号(c)。让我们输出一个长方形。
第一行和最后一行比较特殊,正好是a个字符。
我的方法就是第一行和最后一行分别用一个循环输出,中间几行用一个循环输出。
第一行和最后一行比较简单,先连同输入一起把代码写出来。
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
char c;
cin>>c;
for(int i=1;i<=a;i++)cout<<c;
cout<<endl;
for(int i=1;i<=a;i++)cout<<c;
}
我们来看中间几行。
我们拿样例作样例?中间两行里随便选一行。
1 2 3 4 5
* *
第一个和最后一个是符号,中间有三个空格。
那么我们可以先输出一个符号,然后循环a-2次(空格数量),输出空格,最后再输出一个符号,然后换行。
听起来很简单吧?你敢相信我就这个循环写了10分钟!!
一开始我天真地写了这个:
for(int i=1;i<=b-2;i++){
cout<<c;
for(int i=1;i<=a-2;i++){
cout<<" ";
}
cout<<c<<endl;
}
自测发现样例过了,欣喜地去提交:
First blood!
。。。。。。-_-
发现一个问题,就是如果只有一行,我还是会输出两行。
所以我把代码改良了一下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
char c;
cin>>c;
for(int i=1;i<=a;i++)cout<<c;
cout<<endl;
for(int i=1;i<=b-2;i++){
cout<<c;
for(int i=1;i<=a-2;i++){
cout<<" ";
}
if(a>1)cout<<c;
cout<<endl;
}
if(b>1){
for(int i=1;i<=a;i++)cout<<c;
}
}
只有行数在两行以上的时候他才会输出最后一行,输入一行时这个循环倒是不会执行。
当我天真地以为这个很简单,又去提交时:
Double Kill!
Trible Kill!
awsl(啊我死了)。
————————————————————————————————————
但是经过我不懈的努力,最终还是找到了BUG大BOSS。
看代码喽!
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
char c;
cin>>c;
for(int i=1;i<=a;i++)cout<<c;
cout<<endl;
for(int i=1;i<=b-2;i++){
cout<<c;
for(int i=1;i<=a-2;i++){
cout<<" ";
}
if(a>1)cout<<c;
cout<<endl;
}
if(b>1){
for(int i=1;i<=a;i++)cout<<c;
}
}
终于啊!!!我在一片红色中找到了绿色!
点点赞吧,点到10赞我会光速更新下一期的。
886!