L1-039 古風排版 (20分) 詳解

思路:

 這道題不能想着一個一個輸出,要先用一個字符數組把所有內容存取起來再輸出。

還有值得注意的地方是要計算列數: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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章