乙個筆試題目:
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...