问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
#include<iostream>
using namespace std;
void Graph(char a[])
{
int n,m;int i,j;int k=0,q=0;
cin>>n>>m;
for(j=n;j>0;j--)
{
k++;//第k列
for(i=k;i>1;i--)//输出k到2的字母共k-1列//i=m-j-1
{
cout<<a[i];
q++;//已输出q个
if(q>m-1)break;
}
for(i=1;i<=m-(k-1);i++)//输出1到m-k+1的字母
cout<<a[i];
cout<<endl;
q=0;
}
}
int main()
{
int i;
char a[27];
for(i=1;i<27;i++)
a[i]=i+64;//为字符数组赋值A~Z
Graph(a);
}
总结:构造A~Z的字符数组
char a[27];
for(i=1;i<27;i++)
a[i]=i+64;//为字符数组赋值A~Z
不必用
char a[27]={' ','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
//错误写法,正确写法是加双引号,加单引号是ASCII码
解法2:
构造一个Z~A~Z的字符数组,长度为25+26;
头指针指向A,即A=26;每次输出m个字母;
头指针每个循环向左移动一位;A--;
(代码略)
原博地址
https://blog.csdn.net/weixin_43673589