7-130 古风排版 (20 分)
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。
输入格式:
输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。
输出格式:
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。
输入样例:
4 This is a test case
结尾无空行
输出样例:
asa T st ih e tsi ce s
结尾无空行
#include <iostream> using namespace std; const int N = 110; int n, m; string s; int main() { cin >> m; getchar(); getline(cin, s); if (s.size() % m != 0) n = s.size() / m + 1; else n = s.size() / m; char c[N][N]; int cnt = 0; for (int i = n; i >= 1; i--) { for (int j = 1; j <= m; j++) { if (s.size() >= cnt + 1) c[j][i] = s[cnt++]; else c[j][i] = ' '; } } for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { cout << c[i][j]; } cout << endl; } return 0; }
#include<bits/stdc++.h> using namespace std; int main() { int n; cin >> n; getchar(); string s; getline(cin, s); if (s.size() % n) { int t = n - s.size() % n; for (int i = 0; i < t; i++) s += " "; } for (int i = 0; i < n; i++) { for (int j = s.size() - 1; j >= 0; j--) { if (j % n == i)cout << s[j]; } cout << endl; } return 0; }