题目描述
现代人写字是从左往右一行一行书写,而古代人写字是从右往左一列一列书写的,现请你编写一段程序,将一段文字按照古代人书写排版输出。
输入格式
第一行输入一个正整数 n(1≤n≤100),代表古代人书写每一列的字符数。
第二行给出长度不超过 500 的非空字符串,以回车结束。
输出格式
按照古代人的书写排版输出最终的字符串,每列 n 个字符。
注意:最后一列可能不足 n 个。
实现代码
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
string text;
cin >> n >> text;
int len = text.length();
int rows = (len + n - 1) / n; // 计算行数
for (int j = n - 1; j >= 0; j--) { // 从右往左遍历每一列
for (int i = 0; i < rows; i++) { // 遍历每一行
int index = i * n + j; // 计算字符在字符串中的下标
if (index < len) {
cout << text[index]; // 如果该位置有字符,则输出该字符
}
}
cout << endl;
}
return 0;
}
该程序先读入每一列的字符数 n
和输入的字符串 text
,然后计算出总行数 rows
。接着,程序从右往左遍历每一列,并在每一列内从上到下遍历每一行。对于每个字符,在字符串中的下标可以通过行数和列数计算出来。如果该位置有字符,则输出它。注意,最后一列可能不足 n
个字符,需要特别处理。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END