下列給定程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。 請(qǐng)改正
下列給定程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
[注意] 不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
include<stdio.h>
define N 20
void fun(int a[], int n)
{
int i, j, t, p;
for(j=0; j<n-1; j++){
/***********found***********/
p=j
for(i=j; i<n; i++)
if(a[i]<a[p])
/***********found***********/
p=j;
t=a[P];
a[p]=a[j];
a[j]=t;
}
}
msin()
{
int a [N]=(9, 6, 8, 3, -1), i, m=5;
printf("排序前的數(shù)據(jù):”);
for(i=0; i<m; i++)
printf("%d", a[i]);
printf("\n");
fun(a, m);
printf("排序后的數(shù)據(jù):");
for(i=0; i<m; i++)
printf("%d", a[i]);
printf("\n");
}
正確答案:(1)錯(cuò)誤:p=j 正確:p=; (2)錯(cuò)誤:p=j; 正確:p=i;(1)錯(cuò)誤:p=j 正確:p=; (2)錯(cuò)誤:p=j; 正確:p=i; 解析:題中提到按“從小到大”的順序排序,這類題目都可以用選擇排序法,即從后N個(gè)比較過程中,選擇一個(gè)最小的與第一個(gè)元素交換,以此類推,即用第二個(gè)元素與后N-1個(gè)進(jìn)行比較,并進(jìn)行交換。 錯(cuò)誤1:此處錯(cuò)誤比較明顯,p=j后面應(yīng)加分號(hào)。 錯(cuò)誤2:根據(jù)選擇排序法的思路,此處應(yīng)將i賦給p。
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。