PAT 乙级 1036.跟奥巴马一起编程 C++/Java

题目来源

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!

输入格式:

输入在一行中给出正方形边长 N(3)和组成正方形边的某种字符 C,间隔一个空格。

输出格式:

输出由给定字符 C 画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的 50%(四舍五入取整)。

输入样例:

10 a

输出样例:

aaaaaaaaaa
a        a
a        a
a        a
aaaaaaaaaa

分析:

第一行与最后一行单独输出

中间的在第1次循环和最后一次循环输出字符就可以了,其他输出空格

C++实现:

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     float column, row;
 6     char letter;
 7     cin >> column;    //正方形边长
 8     cin >> letter;    //用于绘图的字母
 9     row = (int)(column / 2 + 0.5);    //输出的行数是列数的50%
10     
11     //输出第一行
12     for (int i = 0; i < column; ++i)
13     {
14         cout << letter;
15     }
16     cout << endl;
17 
18     //输出 2 到 row-1 行
19     for (int i = 2; i < row; ++i)
20     {
21         cout << letter;    //每一行的第一个字母
22         for (int j = 1; j < column - 1; ++j)
23         {
24             cout << " ";
25         }
26         cout << letter << endl;    //每一行的最后一个字母
27     }
28     //输出最后一行
29     for (int i = 0; i < column; ++i)
30     {
31         cout << letter;
32     }
33     return 0;
34 }

 

 

Java实现:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner input = new Scanner(System.in);
 6         int n = input.nextInt();
 7         char C = input.next().charAt(0);        //输入单个字符的方法.charAt(0)
 8         input.close();
 9         int h = (n + 1) / 2;
10         for (int i = 0; i < h; i++) {
11             for (int j = 0; j < n; j++) {
12                 if (i == 0 || j == 0 || j == n - 1 || i == h - 1) {
13                     System.out.print(C);
14                 } else {
15                     System.out.print(' ');
16                 }
17             }
18             System.out.println();
19         }
20     }
21 }

 

posted @ 2019-10-25 20:47  47的菠萝~  阅读(198)  评论(0编辑  收藏  举报