当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 用C++实现:特殊字母图形打印

用C++实现:特殊字母图形打印

2020年03月15日  | 移动技术网IT编程  | 我要评论

穷二代发财记,星速空痕,露西 皮德尔

资源限制
时间限制:1.0s   内存限制:256.0mb
问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

abcdefg

babcdef

cbabcde

dcbabcd

edcbabc

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
abcdefg
babcdef
cbabcde
dcbabcd
edcbabc
数据规模与约定
1 <= n, m <= 26。
 
思路:首先观察样例图形,不难得出规律:第一行和第一列都是按照从a往后递增的顺序排列,而其他行则是从第一个字母开始递减直到a,若此时还没到m的限制大小,则再从a开始递增。所以分成3块处理:第一行,第一列,中间。
 1 #include<iostream>
 2 using namespace std;
 3 int main(void)
 4 {
 5     int n, m;
 6     cin >> n >> m;
 7     char(*arr)[26] = new char[n][26];
 8     for (int i = 0; i < n; i++)            //把每一行第一个字母初始化(第一列单列)
 9     {
10         arr[i][0] = 'a' + i;
11     }
12     for (int j = 0; j < m; j++)      //第一行单列
13     {
14         arr[0][j] = 'a' + j;
15     }
16     for (int i = 1; i < n; i++)        //中间的字母
17     {
18         for (int j = 0; j < m;j++)
19         {
20             arr[i][j] = arr[i][0] - j;
21             if (arr[i][j] == 'a')
22             {
23                 for (; j < m - 1; j++)
24                 {
25                     arr[i][j + 1] = arr[i][j] + 1;
26                 }
27             }
28         }
29     }
30     for (int i = 0; i < n; i++)
31     {
32         for (int j = 0; j < m; j++)
33         {
34             cout << arr[i][j];
35         }
36         cout << endl;
37     }
38 delete[]arr; 39 return 0; 40 }

 

注意:一定要严格控制好每个循环里面的判断条件,不要造成数组越界或没有初始化的问题。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网