close
題目:頑皮的比爾C++
由於這題題目敘述長,一言以蔽之,他要我們將排有順序的數字從中反轉,還不只反轉一次喔!
之後印出來~~
 
 
一樣流程將基本的輸入規則弄好,記得第一個輸入,之後要加 cin.ignore() cin.ignore()-->(假如C++) 躲掉跳行,把打的多筆資料切好放在陣列中
畢竟是切出來的是字串,假如你是C++,那就要用sstream的功能,atoi沒用喔~~
  1. #include <vector> //陣列需要  
  2. #include <sstream>//字串分割和字串轉整數都需要  
  3. #include<iostream>  
  4. using namespace std;  
  5.   
  6. int main()  
  7. {  
  8.     int math;  
  9.     int len;  
  10.     cout << "有幾筆資料:";  
  11.     cin >> math;  
  12.     cin.ignore();  
  13.     for(int i=0;i<math;i++)  
  14.     {  
  15.         string token;  
  16.         string abc;  
  17.         vector<int> arr;  
  18.         cout << "第" << i+1 << "筆:(空白隔開) ";  
  19.         getline(cin,abc);  
  20.         istringstream delim(abc);  
  21.         while(getline(delim,token,' '))  
  22.         {  
  23.             int num;              //從這,到下3行,就是字串轉整數得方法  
  24.             stringstream ss;  
  25.             ss << token;  
  26.             ss >> num;  
  27.             arr.push_back(num);  
  28.         }  
  29.         for(int j=0;j<arr.size();j++)  
  30.             cout <<"位置arr["<<j<<"]+1= "<<arr[j]+1 <<  ' ';  
  31.         cout << endl;  
  32.     }  
  33. }
轉完整數後,之後用reverse (這是啥--->點我)
針對你排好的1~n由小到大的陣列
將題目要求做改變 像是: 3 2 0
再由順序的arr陣列 = {1 ,2 ,3}
把位置2的前頭都反轉
變成arr = {2 ,1 ,3}
 
reverse(arr.begin(),arr.end()-1);
 
然而其他筆,你就要自己想了,在end()是減多少,找出關西是減多少,找出關係~~
 
轉完印出來,就可以了,不用一次印出來~~
 
end
arrow
arrow
    全站熱搜

    佑佑 發表在 痞客邦 留言(0) 人氣()