字母图形

题目

问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个 5 行 7 列的图形,请找出这个图形的规律,并输出一个 n 行 m 列的图形。
输入格式
输入一行,包含两个整数 n 和 m,分别表示你要输出的图形的行数的列数。
输出格式
输出 n 行,每个 m 个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。

思路:
根据题目要求:n是行数,m是字符数(即列数)
样例输出拿出来分析

ABCDEFG  |  65 66 67 68 69 70 71  |        65 → 71
BABCDEF  |  66 65 66 67 68 69 70  |   66 ← 65 → 70
CBABCDE  |  67 66 65 66 67 68 69  |   67 ← 65 → 69
DCBABCD  |  68 67 66 65 66 67 68  |   68 ← 65 → 68
EDCBABC  |  69 68 67 66 65 66 67  |   69 ← 65 → 67

可以发现规律,每一行都是从A向两边依次散开C B A B C


代码A:

import java.util.Scanner;

class A{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n,m;
        n=scanner.nextInt();
        m=scanner.nextInt();

        for (int i = 0; i < n && i < 26; i++){
            for (int j = 0; j < m && j < 26; j++){
                if ('A' + i - j > 'A')
                    //在A左边执行下面一句
                    System.out.print( (char)('A' + i - j) );
                else
                    //在A右边执行下面一句
                    System.out.print( (char)('A' + j - i) );
            }
            System.out.println();
        }
        scanner.close();
    }
}

代码B:

#include <iostream>

using namespace std;

int main(){
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n && i < 26; i++){
        for (int j = 0; j < m && j < 26; j++){
            if ('A' + i - j > 'A')
                cout << (char)('A' + i - j);
            else
                cout << (char)('A' + j - i);
        }
        cout << endl;
    }
    return 0;
}

运行结果:
image

posted @ 2021-07-17 14:40  为搞钱而写代码  阅读(172)  评论(0)    收藏  举报