生活随笔
收集整理的這篇文章主要介紹了
华为机试题刷题笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.一段英文字符串中最后一個單詞的長度:
注意要點:cin和getline的區別;
cin為字符串輸入時,遇見空格,編譯器認為字符串輸入結束;
getline可以輸入含有空格的字符串;
安全起見,在C++中字符串的輸入,最好都用getline;
cin作為輸入字符串的例子如下圖所示:結果輸出的字符串為輸入第一個空格之前的數據;
運行結果:
本機試題代碼:
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int main(){int i;int count=0;string str;getline(cin,str);i=str.size()-1;while(str[i]!=' '&&i>=0){count++;i--;}cout<<"本句子最后一個單詞的長度為:"<<count<<endl;system("pause");return 0;
}
運行結果:
2.輸入一個字符串和一個字符,統計該字符在該字符串中出現的次數:
注意點:只要是一個字母就行,不區分大小寫;
需要用到tolower函數;
代碼:
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int main(){string str;int count,i;char ch;count=0;getline(cin,str);cin>>ch;for(i=str.size()-1;i>=0;i--){if(tolower(str[i])==tolower(ch)){count++;}}cout<<count<<endl;system("pause");return 0;
}
3.輸入一串整數,整數去重,輸出排好序的結果:
學習要點:sort和unique函數的用法;
版本一:
不用任何庫函數;
冒泡排序加排序后比較重復數字進行剔除
#include<iostream>
#include<stdlib.h>
using namespace std;
int main(){int n;//數組長度int *arr;cout<<"請輸入該數組的長度:"<<endl;for(int i=0;i<n;i++){cin>>arr[i];}//冒泡排序for(i=1;i<n;i++){for(j=0;j<n-i;j++){if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}//去重for(int i=0;i<n;i++){if(arr[i]!=arr[i+1]){cout<<arr[i]<<' ';}}system("pause")return 0;
}
運行結果
版本二:
利用容器里面的set的特點,不重復且排好序;
代碼:
#include<stdlib.h>
#include<iostream>
#include<set>
using namespace std;
int main(){int n;//數組大小cout<<"請輸入數組長度:"<<endl;while(cin>>n){set<int> arr;for(int j=0;j<n;j++){int temp;cout<<temp;arr.insert(temp);}for(set<int>::iterator iter=arr.begin();iter!=arr.end();iter++){cout<<*iter<<' ';}cout<<endl;}system("pause");return 0;
}
運行結果:
版本三:
主要是利用了sort函數和unique函數;
sort(itera,iterb),對迭代器表示的地址之間的數值進行從小到大的排序;默認從小到大;
unique函數的用法:
功能:對有序的容器重新排序,將第一次出現的元素從前往后排,其他重復出現的元素依次排在后面;
返回值:返回迭代器;指向重復元素的首地址
erase函數:
erase(itera,iterb)
擦除從迭代器a到迭代器b之間的元素;
代碼:
#include<iostream>
#include<stdlib.h>
#include<vector>
#include<algorithm>
using namespace std;
int main(){int n;cout<<"請輸入數組長度:"<<endl;while(cin>>n){vector<int> arr;for(int i=0;i<n;i++){int temp;cin>>temp;arr.pushback(temp);}sort(arr.begin(),arr.ennd());vector<int>iterator::iter;iter=unique(arr.begin().arr.end());if(iter!=arr.end()){arr.erase(iter,arr.end())}for(iter=arr.begin();iter!=arr.end();iter++){cout<<*iter<<endl;}}system("pause");return 0;
}
總結
以上是生活随笔為你收集整理的华为机试题刷题笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。