字符串排序 墨迹了半天的自闭题目
如果一道字符串的題不能讓我自閉的話,那就兩道
先輸入你要輸入的字符串的個數。然后換行輸入該組字符串。每個字符串以回車結束,每個字符串少于一百個字符。如果在輸入過程中輸入的一個字符串為“stop”,也結束輸入。
然后將這輸入的該組字符串按每個字符串的長度,由小到大排序,按排序結果輸出字符串。
Input 字符串的個數,以及該組字符串。每個字符串以‘\n’結束。如果輸入字符串為“stop”,也結束輸入. Output 將輸入的所有字符串按長度由小到大排序輸出(如果有“stop”,不輸出“stop”)。
Sample Input 5 sky is grey cold very cold stop 3 it is good enough to be proud of good it is quite good Sample Output cold very cold sky is grey good it is quite good it is good enough to be proud of Hint 根據輸入的字符串個數來動態分配存儲空間(采用new()函數)。每個字符串會少于100個字符。
測試數據有多組,注意使用while()循環輸入。 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<string> #include<vector> using namespace std; const int maxn=2000; int n,cnt;bool cmp(string b,string c) {return b.size()<c.size(); }int main() {while(cin>>n){cin.ignore();// EOFvector<string> jack;jack.reserve(n);string a;for(int i=1;i<=n;i++){getline(cin,a);//讀入一整行 if(a=="stop")//string數組每一個都是一坨字符串 {break;}jack.push_back(a);//STL教學式使用 }sort(jack.begin(),jack.end(),cmp);for(int i=0;i<jack.size();i++){cout<<jack[i];if(i!=jack.size()) cout<<endl;}}return 0; }
cin.ignore()函數是C++標準輸入流(cin)中的一個方法。cin.ignore()函數中有兩個參數,分別為數值型的a 和 字符型的 ch ,即cin.ignore( a, ch )。它表示從輸入流 cin 中提取字符,提取的字符被忽略,不被使用。而每拋棄一個字符,它都要進行計數和比較字符:如果計數值達到 a 或者被拋棄的字符是 ch ,則cin.ignore() 函數執行終止;否則,它繼續等待。
它的一個常用功能就是用來清除以回車結束的輸入緩沖區的內容,消除上一次輸入對下一次輸入的影響。例如可以這么用,cin.ignore(1024, '\n'),通常把第一個參數設置得足夠大,這樣實際上是為了只有第二個參數 '\n' 起作用,所以這一句就是把回車(包括回車)之前的所以字符從輸入緩沖流中清除出去。
如果默認不給參數的話,默認參數為cin.ignore(1, EOF),即把EOF前的1個字符清掉,沒有遇到EOF就清掉一個字符然后結束。
---------------------
作者:micro小寶
來源:CSDN
原文:https://blog.csdn.net/wxbmelisky/article/details/48596881
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
?
?
string中有兩個函數:reserve()和resize(),最近細細的看了下這兩個函數的使用,記錄下來。
? ? reserve為容器預留足夠的空間,避免不必要的重復分配,分配空間大于等于函數的參數,影響capacity。
? ? resize調整容器中有效數據區域的尺寸,如果尺寸變小,原來數據多余的截掉。若尺寸變大,不夠的數據用該函數第二個參數填充,影響size。
?
需要連續從標準輸入讀取數據時,可以采用下面兩種不同的方式判斷文件結束
int i;
while(scanf("%d",&i) != EOF){do whatever...}
while(cin >> i){do whatever...}
首先看scanf,當成功讀取時返回讀取的項的數目,如:scanf("%d %d",&i,&j)返回2,scanf("%d %f %s",&i, &f, c)返回3。這個數目可以是你希望讀取的項數,也可能小于希望讀取的項數,在匹配失敗時返回0(如:用scanf("%d",&i)接收整數而輸入是英文字母時就返回0)。需要注意的是用while(scanf("%d",&i) != EOF)時,接收到像876652098643267843超過int型取值范圍的數時循環也會繼續執行;相同的情況出現在while(cin >> i)上時循環會立即結束。
---------------------
作者:candj
來源:CSDN
原文:https://blog.csdn.net/candj/article/details/4419585
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
?
轉載于:https://www.cnblogs.com/WHFF521/p/11219053.html
總結
以上是生活随笔為你收集整理的字符串排序 墨迹了半天的自闭题目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数论——欧拉函数
- 下一篇: Atlas 和 ASP.Net AJAX