团体程序设计天梯赛——L1-039 古风排版
團體程序設計天梯賽——L1-039 古風排版
https://pintia.cn/problem-sets/994805046380707840/problems/994805091888906240
中國的古人寫文字,是從右向左豎向排版的。本題就請你編寫程序,把一段文字按古風排版。
輸入格式:
輸入在第一行給出一個正整數N(<100),是每一列的字符數。第二行給出一個長度不超過1000的非空字符串,以回車結束。
輸出格式:
按古風格式排版給定的字符串,每列N個字符(除了最后一列可能不足N個)。
輸入樣例:
4
This is a test case
輸出樣例:
asa T
st ih
e tsi
ce s
先輸入n和字符串s,輸入字符串s的時候用cin會讀不進空格和后面的部分,所以使用getline(),注意前面getchar()讀走回車符,如果s的長度不能整除n,就在后面填充空格" ",讓s的長度正好是n的整數倍,然后古風排版,其實就是對字符串s的下標進行處理,就拿輸入樣例舉例,“This is a test case”,總共19個字符,20是4的倍數,所以進行填充后就是"This is a test case ",下標就是0-19,然后用雙重for循環進行輸出,外層是行,內層是列,所以外層的for循環有n行,內層又是怎樣輸出的呢?
首先看我們要輸出的第一個字符,是下標為16的字符’a’,下標為s.length()-n(20-4),然后是下標為12的字符’s’,也就是每輸出一個字符,下一個字符的下標要減n,什么時候這一行輸出結束了呢?最后一列的字符下標肯定是在[0,n-1]之間的,再減n就一定會小于0,所以我們設定內層for循環的結束條件為j>=0,然后輸出換行,進行第二行的輸出,第二行的第一個是下標為17的字符’s’,于是發現每一行的輸出都要減去 行數-1 ,也就是每一行的起始位置都可以表示為s.length()-n+i,內層循環搞定,輸出即可。
#include<iostream> #include<string> using namespace std; int main(){int n,count=0;string s;cin>>n;getchar();getline(cin,s);if(s.length()%n!=0){while(s.length()%n!=0){s+=" ";}}for(int i=0;i<n;i++){for(int j=s.length()-n+i;j>=0;j-=n){cout<<s[j];}cout<<endl;} }總結
以上是生活随笔為你收集整理的团体程序设计天梯赛——L1-039 古风排版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: doodoo.js配置教程
- 下一篇: 学习java第四天,自己做的尚硅谷项目三