一些试题:C++面试题.万能Key
生活随笔
收集整理的這篇文章主要介紹了
一些试题:C++面试题.万能Key
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0.編寫strcpy
char* strcpy(char* dst, const char* src) {assert(dst!=null && src!=null);char* adr == dst;while((*dst++ != *src++)!='\0'){};return adr;//返回地址,可以進一步使用 }?
1.對于M位N進制數,設計一個算法,找到一個最短字符串,包含數字符串的所有枚舉?
例如:兩位二進制數{0,1},最小枚舉其中一個是00110.
答案:?
?
2.快排!C++!
答案:哈哈,快排!
是對冒泡排序的一種改進,基本思想是選取一個記錄作為樞軸,經過一趟排序,將整段序列分為兩個部分,其中一部分的值都小于樞軸,另一部分都大于樞軸。然后繼續對這兩部分繼續進行排序,從而使整個序列達到有序。
?????????
void QuickSort(int* array,int left,int right) { assert(array); if(left >= right)//表示已經完成一個組 { return; } int index = PartSort(array,left,right);//樞軸的位置 QuickSort(array,left,index - 1); QuickSort(array,index + 1,right); }PartSort()表示一次快排序:快速排序(三種算法實現和非遞歸實現)
百度百科上摘抄,參考《算法與數據結構》 嚴蔚敏
#include <iostream>using namespace std;void Qsort(int arr[], int low, int high) {if (high <= low) return;int i = low;int j = high + 1;int key = arr[low];while (true){/*從左向右找比key大的值*/while (arr[++i] < key){if (i == high){break;}}/*從右向左找比key小的值*/while (arr[--j] > key) {if (j == low){break;}}if (i >= j) break;/*交換i,j對應的值*/int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}/*中樞值與j對應值交換*/int temp = arr[low];arr[low] = arr[j];arr[j] = temp;Qsort(arr, low, j - 1);Qsort(arr, j + 1, high); }int main() {int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24};Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);/*這里原文第三個參數要減1否則內存越界*/for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++){cout << a[i] << "";} return 0; }/*參考數據結構p274(清華大學出版社,嚴蔚敏)*/?
3.單例模式
?? 工場模式主要為接口和動作靈活性而生;
?? 單例模式,只生成一個實例進程,比如為全局訪問的參數類。
?? 參考:24種設計模式-轉自劉偉。
?
4.智能指針賦值
A:對于shared_ptr,? shared_ptr A = shared_ptr B;A與B的指針是否相同?
?? A與B具有相同的地址。
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的一些试题:C++面试题.万能Key的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于含静字微信昵称霸气的116个
- 下一篇: s3c2440移植MQTT