日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

华为机试题刷题笔记

發布時間:2024/9/21 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华为机试题刷题笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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; }

總結

以上是生活随笔為你收集整理的华为机试题刷题笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。