码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-03-15 00:11:30      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:第一个   new   color   ace   clu   没有初始化   循环   void   for   

资源限制
时间限制: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 }

 

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

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

标签:第一个   new   color   ace   clu   没有初始化   循环   void   for   

原文地址:https://www.cnblogs.com/guanrongda-KagaSakura/p/12495008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!