B3844 [GESP样题 二级] 画正方形
题目描述
输入一个正整数 n,要求输出一个 n 行 n 列的正方形图案(参考样例输入输出)。图案由大写字母组成。
其中,第 1 行以大写字母 A 开头,第 2 行以大写字母 B 开头,以此类推;在每行中,第 2 列为第 1 列的下一个字母,第 3 列为第 2 列的下一个字母,以此类推;特别的,规定大写字母 Z 的下一个字母为大写字母 A。
输入格式
输入一行,包含一个正整数 n。约定 2≤n≤40。
输出格式
输出符合要求的正方形图案。
输入输出样例
解题思路
对于这类图形输出的题目,通常都是用双重循环来控制行列。
观察图形,我们会发现:
1)每一行的行首字母分别是'A' ,'B', 'C' ...'Z' ,'A', ' B', 'C...'Z',如果行号i从0开始,到n-1行,则每一行的行首字母应该为char('A'+i%26),考虑到字母溢出情况;
2)每一行的每列字母分别是从改行首字母开始,依次递增,如果列号j从0开始,到n-1列,则每一列的字母应该为行首字母('A'+I)+列号j的转换,也即char('A'+(i+j)%26),同理,考虑到字母溢出,所以这里需要同26求模;
3)输出每行字母后,记得换行
代码如下:
#include <iostream>
using namespace std;
int main(){int n;cin>>n;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cout<<char('A'+(i+j)%26);}cout<<endl;}return 0;}