筆試程式設計題 2012 3 22筆試

2021-09-29 16:16:58 字數 1764 閱讀 2994

乙個筆試題目:

n個人圍成乙個圈,第乙個人從1開始遞增報數,凡是報到3的倍數(包括3)時,該人退出,隨後的人接著再繼續報數,直到最後只剩下乙個人為止,求最後剩下的這個人在原對中的編號。

思路:用陣列儲存n個人,開始陣列元素全部初始化為1,表示所有的人都在隊中,然後迴圈遍歷陣列,凡是遇到能整除3的位置的元素就將該元素的值設為0; 同時記錄隊中1個數的count變數減一。重複上面的步驟,知道隊中只有1個1時,迴圈退出,最後在遍歷一次陣列,找出值為1的這個元素所在的位置,就是最後剩下的這個人的原始編號。

實現: /

*功能:筆試題:n個人圍城一圈,第乙個人從1開始遞增報數,凡是報到3的倍數(包括3)時,該人退出,隨後的人接著再繼續報數,直到最後只剩下乙個人為止,求最後剩下的這個人的編號。

思路:用陣列儲存n個人,開始陣列元素全部初始化為1,表示所有的人都在隊中,然後迴圈遍歷陣列,凡是遇到能整除3的位置的元素就將該元素的值設為0; 同時記錄隊中1個數的count變數減一。重複上面的步驟,知道隊中只有1個1時,迴圈退出,最後在遍歷一次陣列,找出值為1的這個元素所在的位置,就是最後剩下的這個人的原始編號。*/

#include

#include

int find(

int n)

//將陣列全部資料初始化為1,1代表人還在隊中

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

start:

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

num++;

//下乙個報數}if

(count =

= 1)

//這裡可以減少額外的迴圈

break;}if

(count !

= 1)

goto start;

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

free(a);/

/最好釋放動態分配的記憶體

return 0;

}int main(

)測試結果:

int main()/

*在vc+

+6.0中輸出的結果為:--

----

----

----

----

----

----

----

----

--請輸入人數: 100

最後剩下的是 91 個位置的人。--

----

----

----

----

----

----

----

----

-請輸入人數: 5

最後剩下的是 4 個位置的人。--

----

----

----

----

----

----

----

----

-*/另一種實現(不用goto) /

*第二種實現(不用goto)*/

int find2(

int n)

int i, j = 0;

int count = n;

int num = 1;

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

while

(1)num++;

}if(count =

= 1)

break;j++

;if(j =

= n)

}for

(i = 0; i < n; i++)

}free(a)

;return 0;}

小公尺2015筆試程式設計題

1.程式設計題 懂二進位制 時間限制 1秒 空間限制 32768k 世界上有10種人,一種懂二進位制,一種不懂。那麼你知道兩個int32整數m和n的二進位制表達,有多少個位 bit 不同麼?輸入例子1 1999 2299 輸出例子1 分析 第一步求這兩個數的異或,得到乙個新的數,相同位是0,不同位是...

筆試 程式設計題

1.class a class b public a int main 2.int main 3.int func int a int main little endian int main char p char a 2 printf 0x x,0x x,0x x p 1 p,short p re...

360筆試 3 18 程式設計題

1.給乙個半徑為r的圓,圓心是 0,0 開始位於 r,0 分別求從始點順時針和逆時針走長度為l的終點座標 有可能走多圈,先處理成走一圈的形式,然後判是不是四個斷點,如果是則輸出 然後把l處理到第一象限,與x軸形成的夾角是l r,y點座標就是 那麼 includeusing namespace std...