糯米文學吧

位置:首頁 > IT認證 > 華為認證

華為C語言上機試題及答案

在華為認證考試之際,yjbys為大家獻上的是華為C語言上機模擬題及答案,歡迎學習!

華為C語言上機試題及答案

給定一個數組input[] ,如果數組長度n為奇數,則將數組中最大的元素放到 output[] 數組最中間的位置,如果數組長度n為偶數,則將數組中最大的元素放到 output[] 數組中間兩個位置偏右的那個位置上,然後再按從大到小的順序,依次在第一個位置的`兩邊,按照一左一右的順序,依次存放剩下的數。

例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}

題目考察的是排序+規格化輸出:

容易讓人理解的解法,首先進行排序,進而進行排序後的輸出:

1 #include

2 #include

3 using namespace std;

4 #define SIGN(x) ((x)>=0)?(1):(-1)

5 #define N 5

6 int Input[N]={3, 6, 1, 9, 7};

7 int Output[N];

8

9 void formatIO(int* input,int* output,int n)

10 {

11 int m=(N>>1);

12 int slid=-1;

13 if(N&0x01==0)

14 {

15 m+=1;

16 }

17 output[m]=Input[N-1];

18 for(int i=N-2;i>=0;i--)

19 {

20 output[m+slid]=input[i];

21 if(slid>0)slid=-(slid+1);

22 else slid=-(slid);

23 }

24 }

25

26 int main()

27 {

28 sort(Input,Input+N);//從小到大排序

29 formatIO(Input,Output,N);

30 for(int i=0;i

31 {

32 cout<

33 }

34 cout<

35 return 1;

36 }