题目传送门
题意
首先,输入四个数;前两个是报纸的行数、列数,后两个是放大镜的两个“参数”(具体后面会讲)。
让后,按行数 r、列数 c 输入一个字符矩阵。
这里我们就要想到:用二维数组
让后,我们要按题目要求,把每一个小字符“放大”。
那这里什么叫放大呢?
题目解释: 把每个字符都转换成一个 zr 行 zc 列的矩阵。
实际上就是:把原来的每一个字符复制zr行、复制zc列!
但单个字符作矩阵输出是不现实的(程序按行输出)。
所以我们想到:用四重循环!
我们要输出的,是由原来的字符组成的许多矩阵。
其中的m、l只是用于控制放大行数、列数的,不能用作输出字符!
输出工作应交给其中的i,j 。
如果你上面都懂了,那这道题也差不多A了。
代码来了:
#include<bits/stdc++.h>
using namespace std;
char a[55][55];
int main () {
int r,c,zr,zc;//老老实实按题目定义
cin>>r>>c>>zr>>zc;//r:原行数 c:原列数 zr:放大行数 zc放大列数
for(int i=1;i<=r;++i){
for(int j=1;j<=c;++j){
cin>>a[i][j];
}
}//常规二维数组输入
for(int i=1;i<=r;i++){//四重循环
//这里控制原行数
for(int m=1;m<=zr;m++){
//枚举放大后的行数
for(int j=1;j<=c;j++){
//这里控制原列数
for(int l=1;l<=zc;l++)//枚举放大后的列数
putchar(a[i][j]);//输出 (快捷)
}
printf("\n");//换行位置很重要 (在这一行所有列的字符输完 后再换行)
}
}
return 0;
}