筆試程式設計題一道

2021-06-03 23:15:31 字數 1101 閱讀 3642

一道華為程式設計題目,int a[nsize],其中隱藏著若干0,其餘非0整數,寫乙個函式int func(int* a, int nsize),使a把0移至後面,非0整數移至陣列前面並保持有序(按原來順序),返回值為原資料中第乙個元素為0的下標。(盡可能不使用輔助空間且考慮效率及異常問題,注釋規範且給出設計思路)

思路如下:

1.定義兩個變數z、nz,分別用來跟蹤陣列裡面的元素兩類元素的位置。

z跟蹤0的位置,nz跟蹤非零元素位置。用flag來記錄第一為0元素的位置。

2.程式首先用乙個for迴圈來尋找第一0元素的位置,並用flag記錄下來。

並且用此值將n、nz初始化。

3.然後用while死迴圈裡面巢狀兩個for迴圈,乙個用來查詢0元素位置,

乙個用來查詢非0元素位置。找到立即break,跳出for迴圈。

4.在while中、for外,進行0元素和非0元素位置交換。

5.最後判斷非零元素記錄變數nz是否到達陣列末尾,到達立即跳出返回,否則從3迴圈。

程式編譯測試環境為dev-c++4.9.9.2,原始碼如下:

#include #include int func(int *a, int nsize);

int main(int argc, char *argv)

; p = func(a,10);

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

printf("fzp:%d\n",p);

system("pause");

return 0;

}int func(int *a, int nsize)

for(i = 0; i < nsize; i++)

}while(1)

}for(; nz < nsize; nz++)

a[z] = a[nz];

a[nz] = 0;

if(nz == (nsize - 1)) //nz到達陣列尾,整理完畢,跳出

break;

z++;

nz++;

}return flag;

}

博主c語言退化,歡迎交流改進,謝謝!

一道筆試程式設計題

有乙個無向圖,寫乙個函式判斷圖中是否存在迴路。函式原型如下 int ring int array,int n,int k n為圖中的頂點數,k為圖中的邊數,array其實是乙個k行2列的二維陣列,其中的元素比如 0,1 表示頂點0和頂點1之間存在邊。圖中如果存在迴路,函式返回1,否則返回0。不知哪位...

一道網易面試程式設計題

一條長為n的路,需要用路燈點亮,其中 表示需要點亮的位置,x 表示無需點亮的位置,假設燈立在i處,則它可以點亮i 1,i,i 1三個位置,問至少需要多少燈才能點亮整條路。乍一看,肯定是動態規劃 上 敲了兩個小時的動態規劃 include include include include using n...

筆試程式設計題(一)

題目原型 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。題目變形 這是做筆試時遇到的描述,解決思路一樣。公司老闆準備發獎金,總共發n元,一次可以發1元,也可以發2元,或者一次性全部發完。求老闆總共有多少種發法。每個台階可以看作一塊木板,讓...