这是题解(有注释)
2025-12-14 12:16:31
发布于:广东
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,f; // 定义变量:a-矩形高度,b-矩形宽度,f-是否实心(0空心/非0实心)
char c; // 定义变量:c-填充矩形的字符
cin>>a>>b>>c>>f; // 输入四个参数:高、宽、填充字符、实心/空心标识
// 处理特殊情况:当高度a为1时(根据样例2,高度1需要输出两行相同的填充字符)
if(a==1){
// 循环输出2行
for(int i=1;i<=2;i++){
// 每行输出b个填充字符c
for(int j=1;j<=b;j++){
cout<<c;
}
cout<<endl; // 每行结束后换行
}
return 0; // 特殊情况处理完成,直接退出程序
}
// 处理空心矩形(f=0)的情况
if(f==0){
// 外层循环:控制矩形的行数(共a行)
for(int i=1;i<=a;i++){
// 第一行或最后一行:输出全填充字符
if(i==1||i==a){
for(int j=1;j<=b;j++){
cout<<c;
}
cout<<endl; // 换行
}
// 中间行:仅首尾输出填充字符,中间输出空格
else{
for(int j=1;j<=b;j++){
// 第一列或最后一列输出填充字符
if(j==1||j==b){
cout<<c;
}
// 其他列输出空格
else cout<<' ';
}
cout<<endl; // 换行
}
}
}
// 处理实心矩形(f≠0)的情况
else{
// 外层循环:控制行数(共a行)
for(int i=1;i<=a;i++){
// 内层循环:每行输出b个填充字符
for(int j=1;j<=b;j++){
cout<<c;
}
cout<<endl;
}
}
return 0;
}
这里空空如也

有帮助,赞一个