緑盟科学技術夏休み実習筆記試験

3640 ワード

今日の午後、緑盟科学技術の実習生の筆記試験に参加しました.C++が開発しました.筆記試験に参加する人は多くありません.20人ぐらいいます.筆記試験のC++は少ないです.ほとんどは筆記試験の安全エンジニアです.今日の筆記試験の問題は広いです.緑盟は主に安全製品を作っているからかもしれません.したがって,筆記試験問題ではネットワークとオペレーティングシステムに関する問題が比較的重い割合を占めている.C++一部の問題は難しくなく、オペレーティングシステムやネットワークの問題の難易度もまあまあですが、脆弱性スキャンの問題で、難しいです.の
ネット問題は主にネット層と応用層の基礎知識と応用を試験する.オペレーティングシステムの主なオペレーティングプロセスの同期に関する問題.
C++は主にC++言語の基礎を考察し、ポインタ配列、配列ポインタ、関数ポインタおよびポインタ関数などを含む.基礎データ構造とアルゴリズム問題はチェーンテーブル、スタック、キュー、検索とソートなどの内容を含む.
C++にプログラミング問題があり、配列の循環シフトの問題であり、長さMの配列の循環右シフトNビット、すなわち1,2,3,4,5,6,7,8、例えば循環右シフト3ビットの後:6,7,8,1,2,3,4,5
私はこう答えました.
#include <iostream>

using namespace std;

void swap(int &a,int &b)

{

    int tmp =a;

    a= b;

    b = tmp;

}

void reverse(int a[],int begin,int end)

{

    for(int i=0;i <(end-begin)/2;i++)

    {

        swap(a[i+begin],a[end-i-1]);

    }

}

void shift(int a[],int M,int N)

{

    reverse(a,0,M-N);    

    reverse(a,M-N,M);

    reverse(a,0,M);



}

int _tmain(int argc, _TCHAR* argv[])

{

    int a[10]={1,2,3,4,5,6,7,8,9,10};

    shift(a,10,2);

    for(int i =0;i< 10;i++)

        cout << a[i] <<",";

    cin.get();

    return 0;

}