给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行!!! 铁铁们,成功的路上必然是孤独且艰难的,但是我们不可以放弃,远山就在前方,但我们能力仍然不足,所有我们更要奋进前行!!! 今天我们更新了古风排版内容
这个题的思路大概就是,我们得到有几行之后,输入字符串之后,需要知道一共需要几列,然后算出一共几列,然后记录一下,然后按题目中的情况去存入字符数组,注意,这里我们是要用二维数组,不明白二维数组的,可以去前面看一下这篇文章,关于C语言数组的认识(1)-CSDN博客
我在这篇文章中讲述了二维数组,然后逐步存入之后,我们就可以输出了。
这道题目的主要思路可以分为以下几个步骤:
这个算法的关键在于如何将输入的字符串按照古风排版的方式填入二维数组中,然后再按照要求输出即可。这里的代码示例中已经包含了这个过程的实现。
C++版本:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n = 0; cin >> n;
cin.ignore();
string str;
getline(cin, str);
int len = str.length();
int col = len / n;
if (len % n != 0)
{
col++;
}
char arr[100][100] = { 0 };
int index = 0;
for (int i = col - 1; i >= 0; i--)
{
for (int j = 0; j < n; j++)
{
if (index < len)
{
arr[j][i] = str[index++];
}
else arr[j][i] = ' ';
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < col; j++)
{
cout << arr[i][j];
}
cout << endl;
}
return 0;}
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n = 0; cin >> n;
cin.ignore();
string str;
getline(cin, str);
int len = str.length();
int col = len / n;
if (len % n != 0)
{
col++;
}
char arr[100][100] = { 0 };
int index = 0;
for (int i = col - 1; i >= 0; i--)
{
for (int j = 0; j < n; j++)
{
if (index < len)
{
arr[j][i] = str[index++];
}
else arr[j][i] = ' ';
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < col; j++)
{
cout << arr[i][j];
}
cout << endl;
}
return 0;}
C语言版本:
#include <stdio.h>
#include <string.h>
int main() {
int n = 0;
scanf("%d", &n);
getchar(); // 消耗掉输入缓冲区中的换行符
char str[1001];
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 移除fgets读入的换行符
int len = strlen(str);
int col = len / n;
if (len % n != 0) {
col++;
}
char arr[100][100] = {0};
int index = 0;
for (int i = col - 1; i >= 0; i--) {
for (int j = 0; j < n; j++) {
if (index < len) {
arr[j][i] = str[index++];
} else {
arr[j][i] = ' ';
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < col; j++) {
printf("%c", arr[i][j]);
}
printf("\n");
}
return 0;
}#include <stdio.h>
#include <string.h>
int main() {
int n = 0;
scanf("%d", &n);
getchar(); // 消耗掉输入缓冲区中的换行符
char str[1001];
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 移除fgets读入的换行符
int len = strlen(str);
int col = len / n;
if (len % n != 0) {
col++;
}
char arr[100][100] = {0};
int index = 0;
for (int i = col - 1; i >= 0; i--) {
for (int j = 0; j < n; j++) {
if (index < len) {
arr[j][i] = str[index++];
} else {
arr[j][i] = ' ';
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < col; j++) {
printf("%c", arr[i][j]);
}
printf("\n");
}
return 0;
}