一、题目链接
http://noi.openjudge.cn/ch0105/42/
二、解题思路
◎ 根据题意,矩形的第1行和第h行需要全矩形符号s输出,矩形的第2行至第h-1行是否全矩形符号s输出,取决于矩形是空心还是实心;
◎ 定义并输入两个int类型的整数h、w,分别代表矩形高度、矩形宽度;
◎ 定义并输入char类型的字符s,代表矩形符号;
◎ 定义并输入int类型的整数c,标记矩形为空心或者实心;
◎ 定义char类型的字符t,并令t = s,也即默认矩形为实心;
◎ 如果c等于0,也即矩形为空心,则令t为一个空格字符;
◎ 从第1列开始,到第w列为止,利用循环i处理如下:
→ 输出一个矩形符号s;
循环i结束后,矩形的第1行输出完毕;
◎ 从第2行开始,到第h-1行为止,利用循环i处理如下:
→ 首先,输出一个回车;
→ 其次,输出一个矩形符号s;
→ 从第2列开始,到第w-1列为止,利用循环j处理如下:
*** 输出一个符号t;
循环j结束后,当前第i行的第2列到第w-1列输出完毕;
→ 最后,输出一个矩形符号s;
循环i结束后,矩形的第2行到第h-1行输出完毕;
◎ 输出一个回车,然后从第1列开始,到第w列为止,利用循环i处理如下:
→ 输出一个矩形符号s;
循环i结束后,矩形的第h行输出完毕;
◎ 经过以上操作后,矩形全部输出。
三、Java程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int h = input.nextInt();
int w = input.nextInt();
char s = input.next().charAt(0);
int c = input.nextInt();
int i;
int j;
char t = s;
if (c == 0) {
t = ' ';
}
for (i = 1; i <= w; i++) {
System.out.print(s);
}
for (i = 2; i < h; i++) {
System.out.println();
System.out.print(s);
for (j = 2; j < w; j++) {
System.out.print(t);
}
System.out.print(s);
}
System.out.println();
for (i = 1; i <= w; i++) {
System.out.print(s);
}
}
}
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int h;
int w;
char s;
int c;
cin >> h;
cin >> w;
cin.get();
cin.get(s);
cin >> c;
int i;
int j;
char t = s;
if (c == 0)
{
t = ' ';
}
for (i = 1; i <= w; i++)
{
cout << s;
}
for (i = 2; i < h; i++)
{
cout << endl;
cout << s;
for (j = 2; j < w; j++)
{
cout << t;
}
cout << s;
}
cout << endl;
for (i = 1; i <= w; i++)
{
cout << s;;
}
return 0;
}