基础题。创建字符数组,奇数行,从前往后输入;偶数行,从后往前输入;最后按列输出即可。
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
const int MAXN = 25;
char arr[MAXN][MAXN];
int main()
{
int N;
string s;
while (cin >> N)
{
if (N == 0)
break;
cin >> s;
int row = s.length() / N; //数组行数
int nowCh = 0; //当前读入字符位置
for (int i = 1; i <= row; i++)
{
if (i % 2 == 1) //奇数行,从前往后输入
{
for (int j = 1; j <= N; j++)
arr[i][j] = s[nowCh++];
}
else //偶数行,从后往前输入
{
for (int j = 1; j <= N; j++)
arr[i][N - j + 1] = s[nowCh++];
}
}
for (int j = 1; j <= N; j++) //按列输出
{
for (int i = 1; i <= row; i++)
cout << arr[i][j];
}
cout << endl;
}
return 0;
}
继续加油。