第 1 頁(yè):選擇題 |
第 3 頁(yè):程序改錯(cuò)題 |
第 4 頁(yè):簡(jiǎn)單應(yīng)用題 |
第 5 頁(yè):綜合應(yīng)用題 |
三、簡(jiǎn)單應(yīng)用題
42使用VC++6.0打開(kāi)考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分的程序。實(shí)現(xiàn)函數(shù)sort(intA[],intn),用冒泡法對(duì)數(shù)組數(shù)據(jù)進(jìn)行排序。所謂冒泡法,就是每次把相鄰的兩個(gè)數(shù)交換,較大的數(shù)交換到后面。這樣下標(biāo)從0到n-1的數(shù)與其后面相鄰的數(shù)交換,可以把最大的數(shù)交換到數(shù)組的末端。進(jìn)行n次下標(biāo)從0到n-1的交換,則數(shù)組變成有序的,并且按由大到小排序。
注意:不能修改和刪除程序的其他部分,也不能修改程序的結(jié)構(gòu)。
試題程序:
#include
#defineN10
voidsort(intA[N],intn)
{
}
intmain()
{
intA[N]={1,50,17,69,87,42,90,-6,O,-11};
sort(A,10);
for(inti=0;i
{
cout<
}
cout<
return0;
}
參考解析:
inti,j,k,t;
for(i=0;i(n-1;i++)
{
for(k=i,j=i+1;j
if(A[k]
交換
k=j;
if(k!=i)//交換
{
t=AEi3;
A[i]=A[k];
A[k]=t;
}
【解析】以數(shù)組“A[]={3,8,7,6,5,0,1,2,9,4},,為例來(lái)說(shuō)明具體的排序過(guò)程,第一次選擇:第一步,從A[0]-A[9]中找最大值max及下標(biāo)k,max=9,k=8;第二步,交換a[0]與最大值a[8]的值;第一次結(jié)束后a[0]已存放了最大值,下一次比較就不必再經(jīng)過(guò)它了,而從a[1]開(kāi)始,如此循環(huán)。從例中可以看出10個(gè)元素要進(jìn)行9次比較,n個(gè)元素要進(jìn)行n-1次比較。設(shè)置兩層循環(huán),外層循環(huán)變量i從0到n-1,內(nèi)層循環(huán)變量從i開(kāi)始到n-1,在內(nèi)層循環(huán)中找最大值,如果最大值的下標(biāo)k和i不同,則交換,實(shí)現(xiàn)選擇法排序。在內(nèi)層循環(huán)體內(nèi),如果最大值的下標(biāo)k和i不同,則用一個(gè)臨時(shí)變量記錄第i個(gè)元素,然后將第k個(gè)元素賦值給第i個(gè)元素,臨時(shí)變量值賦給第k個(gè)元素,如此完成兩個(gè)元素的交換。
相關(guān)推薦:
各地2015全國(guó)計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間及入口匯總
2015年12月計(jì)算機(jī)等級(jí)考試通關(guān)分享:如何做題?
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |