●試題三
閱讀下列函數(shù)說(shuō)明和C代碼,將應(yīng)填入(n)處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
函數(shù)void rcr(int a[],int n,int k)的功能是:將數(shù)組a中的元素a[0]~a[n-1]循環(huán)向右平移k個(gè)位置。
為了達(dá)到總移動(dòng)次數(shù)不超過(guò)n的要求,每個(gè)元素都必須只經(jīng)過(guò)一次移動(dòng)到達(dá)目標(biāo)位置。在函數(shù)rcr中用如下算法實(shí)現(xiàn):首先備份a[0]的值,然后計(jì)算應(yīng)移動(dòng)到a[0]的元素的下標(biāo)p,并將a[p]的值移至a[0];接著計(jì)算應(yīng)移動(dòng)到a[p]的元素的下標(biāo)q,并將a[q]的值移至a[p];依次類(lèi)推,直到將a[0]的備份值移到正確位置。
若此時(shí)移動(dòng)到位的元素個(gè)數(shù)已經(jīng)為n,則結(jié)束;否則,再備份a[1]的值,然后計(jì)算應(yīng)移動(dòng)到a[1]的元素的下標(biāo)p,并將a[p]的值移至a[1];接著計(jì)算應(yīng)移動(dòng)到a[p]的元素的下標(biāo)q,并將a[q]的值移至a[p];依次類(lèi)推,直到將a[1]的備份值移到正確位置。
若此時(shí)移動(dòng)到位的元素個(gè)數(shù)已經(jīng)為n,則結(jié)束;否則,從a[2]開(kāi)始,重復(fù)上述過(guò)程,直至將所有的元素都移動(dòng)到目標(biāo)位置時(shí)為止。
例如,數(shù)組a中的6個(gè)元素如圖1(a)所示,循環(huán)向右平移兩個(gè)位置后元素的排列情況如圖1(b)所示。
【函數(shù)】
void rcr(int a[],int n,int k)
{int i,j,t,temp,count;
count=0;/*記錄移動(dòng)元素的次數(shù)*/
k=k%n;
if( (1) ){/*若k是n的倍數(shù),則元素?zé)o須移動(dòng);否則,每個(gè)元素都要移動(dòng)*/
希望與其他軟考考生進(jìn)行交流?點(diǎn)擊進(jìn)入軟考論壇>>>
更多信息請(qǐng)?jiān)L問(wèn):考試吧軟件水平考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |