1. 程式人生 > 其它 >東華OJ 二維陣列EZ 旋轉句子 求各行均值(有坑)

東華OJ 二維陣列EZ 旋轉句子 求各行均值(有坑)

技術標籤:東華OJstl學習字串c++

主要內容C++對於空行的讀入

1.旋轉句子

  1. C的fgets()函式自然可以讀。C++可以用更簡便的getline(cin,string)這裡string只是說讀入的只能為string,實際用時是變數名.讀入時,若為按下enter(windows下==’\r’+’\n’),則(系統自動為字串新增’\0’,所以若為空行則s[0]==’\0’)getlin正常輸入時最後會返回bool型別,所以可寫在while條件內。預設以EOF結束輸入–windows下ctrl+z,debug時按下ctrl+z即進行後續步驟

  2. 第二種方式用cin.get一個一個地讀到字元陣列內。但是get似乎是無法停止的。

  3. 題意分析:

    1.問題其實就是改變座標系。二維陣列正好可以看出一個二維空間。讀入時是按照先同y然後依次讀入x的。輸出時就是先固定x,按照y的順序輸出。
    2.STL的vector在輸入時push_back函式是每次把插入的元素放在最後的。也就是說最後一個輸入的值的下標永遠是0.遍歷時別出錯。

AC程式碼

#include <bits/stdc++.h>

using namespace std;

int main()
{
    //本質更換座標系(x,y)->(y,x)
    //注意沒有的字元且長度不足用空格填充
    vector<string> str0;
    int
n=0;//個數 int len=0;//最長字串的長度,初始設定個不可能的數 string temp; while(getline(cin,temp))//getline只能讀入字串 { str0.push_back(temp); if(temp.length()>len){ len=temp.length(); } n++; } //問題:空行後後面的都不輸出了 for(int i=0;i<len;i++){//len不含'\0' for(int j =
n-1;j>=0;j--){ if(str0[j][0]=='\n'){ cout<<" "; } else{ if(i<str0[j].length()){//非空 cout<<str0[j][i]; } else cout<<" "; } } cout<<endl; } return 0; }

2.求各行均值

沒什麼難的,值得注意的就是這題的PE。這題最後是不需要換行的,每個數後面都跟一個空格。