蓝桥杯 基础训练 字母图形
问题分析:此问题要输出类似下面这样的二维数组,此类二维数组有个特点,即每个字母的位置坐标的绝对值(|x-y|)是一样的,且和别的字母不同,以此来构造出这个二维数组。
import java.util.Scanner;
public class 字母图形 {
// 遍历26个字母(小写)
/*
* for(int i = 1;i<=26;i++){
* System.out.println((char)(96+i));
* }
*/
// 遍历26个字母(大写)
/*
* for(int i = 1;i<=26;i++){
* System.out.println((char)(64+i));
* }
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();// n为行
int m = sc.nextInt();// m为列
Character[][] c=new Character[n][m];
for (int i = 1; i <= m; i++) {
c=S(i-1,c,(char)(64+i),n,m);
}
for (int i = 1; i <= n; i++) {
c=S(i-1,c,(char)(64+i),n,m);
}
//二维数组的遍历
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
System.out.print(c[i][j]);
}
System.out.print("\n");
}
}
//坐标绝对值i,存储字母的二维数组,m、n为二维数组的大小,字符a为要放入数组的字符
public static Character[][] S(int i,Character[][] c,char a,int n,int m) {
for(int x=0;x<n;x++) {
for(int y=0;y<m;y++) {
if(Math.abs(x-y)==i) {
c[x][y]=a;
}
}
}
return c;
}
}
心得:
1、输出26个字母
//遍历26个小写字母
for(int i = 1;i<=26;i++){
System.out.println((char)(96+i));
}
//遍历26个大写字母
for(int i = 1;i<=26;i++){
System.out.println((char)(64+i));
}