2009年4月全國計(jì)算機(jī)等級(jí)三級(jí)網(wǎng)絡(luò)技術(shù)機(jī)試練習(xí)習(xí)題(48)

字號(hào):

第48套上機(jī)考試試題
    設(shè)有n個(gè)人圍坐一圈并按順時(shí)針方向從1到n編號(hào),從第S個(gè)人開始進(jìn)行1到m的報(bào)數(shù),報(bào)數(shù)到第m個(gè)人,此人出圈,再從他的下一個(gè)人重新開始1到m的報(bào)數(shù),如此進(jìn)行下去直到所有的人都出圈為止?,F(xiàn)要求按出圈次序,每10人一組,給出這n個(gè)人的順序表。請編寫函數(shù)Josegh()實(shí)現(xiàn)此功能,并調(diào)用函數(shù)WriteDat(),把結(jié)果P輸出到OUT.dat文件中。
    設(shè)n=100,s=1,m=10。
    ①將1到11個(gè)人的序號(hào)存入一維數(shù)組P中:②若第i個(gè)人報(bào)數(shù)后出圈,則將p[i]置于數(shù)組的倒數(shù)第i個(gè)位置上,而原來第i+1個(gè)至倒數(shù)第i個(gè)元素依次向前移動(dòng)一個(gè)位置;③重復(fù)笫②步直至圈中只剩下p[1]為止。
    注意:部分源程序已經(jīng)給出。請勿改動(dòng)主函數(shù)main()和輸出數(shù)據(jù)函數(shù)WritcDat()的內(nèi)容。
     第48套試題答案及詳解
    【審題分析】分析題目可知,本題只要實(shí)現(xiàn)Josegh()函數(shù)的功能即可。Josegh()要實(shí)現(xiàn)的功能是:根據(jù)指定的出圈方式,給出這n個(gè)人的出圈順序表。因此解答本題的關(guān)鍵在于根據(jù)題目要求給出出圈順序表的運(yùn)算語句。
    【解題思路】用變量s1記錄報(bào)數(shù)的開始位置,第1個(gè)for循環(huán)語句將1到n個(gè)人的序號(hào)存入一維數(shù)組P中;第2個(gè)for循環(huán)語句從數(shù)組的最后一個(gè)元組開始,用表達(dá)式“(s1+m-1)%i;”求第i個(gè)人是否報(bào)數(shù)到m,如果這個(gè)表達(dá)式的值為零,說明第i個(gè)人報(bào)數(shù)到m,把p[i]存入變量W中,然后用for循環(huán)語句把原來第i+1個(gè)至倒數(shù)笫i個(gè)元索依次向前移動(dòng)一個(gè)位置,再把p[i]置于數(shù)組的倒數(shù)第i個(gè)位置上。
    【參考答案】
     
    【易錯(cuò)分析】第i個(gè)人是臺(tái)報(bào)數(shù)到m,用表達(dá)式(s1+m-1)%i判斷。
    【考點(diǎn)鏈接】c語言for循環(huán)語句的用法。