问题描述

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

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--;

(代码略)

posted on 2020-01-30 21:05  海月CSDN  阅读(70)  评论(0编辑  收藏  举报