蓝桥杯 字母图形

题目:

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

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;

int main(){
	int n,m,a,b,j;
	cin>>n;cin>>m;
	char arr[n][m];
	for(int i=0; i<n; i++){ //i 控制行数 
		for(j=0,b=0,a=i; j<m; j++){ //j 控制每行输出个数  a 控制输出的字母类型,通过 65+a实现  
			if(b==0 && a<=i){ 
				cout<<char(65+a);  //A的ascii码是65 
				if(a==0){b=1;a+=2;} //a+2 是为了和下面的a--抵消一个数,同时避免重复输出 A 
				a--;
			}else if(b==1){ cout<<char(65+a);a++; }
		}
		cout<<endl;
	} 
	return 0;
}//字母图形,第 i 的第一个字母就是 字母表中的第 i 个字母,先降序,再升序,一共输出 m 个 。 
//升序和降序的转折点就是输出 A 即 65+a =65 ,a=0,一旦判断a==0,就不再做降序,一直升序输出。 

我这个还是比较繁琐的,看了一下博主的代码,输出的字母有一个特点,第 n行 m列输出的字母是 char( 65+|n-m| ) 。

这样的话,实际代码会简单很多,大家可以试着写一下。

 

猜你喜欢

转载自blog.csdn.net/qq_41057885/article/details/79351650