按照题意进行输出:

  • 对于每一行的第 $c_j$ 个字母,都要输出 $zc$ 遍。
  • 对于每一行,都要输出 $zr$ 遍。

所以就有了四重大循环,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
char a[55][55];
int r,c,zr,zc;
cin>>r>>c>>zr>>zc;
for(int i = 0;i < r;i++)
for(int j = 0;j < c;j++) cin>>a[i][j];
for(int i = 0;i < r;i++)
{
for(int k = 0;k < zr;k++)
{
for(int j = 0;j < c;j++)
for(int l = 0;l < zc;l++) cout<<a[i][j];
cout<<endl;
}
}
return 0;
}

当然,因为每一行中有 $r$ 组字母都重复出现了 $zc$ 次,每一行都重复出现了 $zr$ 次,所以还可以再化简一下,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
char a[55][55];
int r,c,zr,zc;
cin>>r>>c>>zr>>zc;
for(int i = 0;i < r;i++)
for(int j = 0;j < c;j++) cin>>a[i][j];
for(int i = 0;i < r * zr;i++)
{
for(int j = 0;j < c * zc;j++) cout<<a[i / zr][j / zc];//注意这里
cout<<endl;
}
return 0;
}