思路:
這道題不能想着一個一個輸出,要先用一個字符數組把所有內容存取起來再輸出。
還有值得注意的地方是要計算列數:int M = (s.length() + N- 1) / N;//得到所需要的列數,且N=1的情況下也成立,當字符數量不能被整除時,加入N-1能補全缺少的一列同時也不會加多一列
具體看代碼~~
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int main()
{
string s;
int N;
cin >> N;
cin.ignore();//忽略上一句輸入的換行符
getline(cin, s);
int M = (s.length() + N- 1) / N;//得到所需要的列數,且N=1的情況下也成立
int k = 0;//控制字符的序號
char c[105][15];
for (int i = M - 1; i >= 0; i--)
{
for (int j = 0; j < N; j++)
{
if (k < s.length())
{
c[j][i] = s[k];
k++;
}
else
c[j][i] = ' ';
}
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cout << c[i][j];
}
cout << endl;
}
system("pause");
return 0;
}