改錯(cuò)題
N個(gè)有序整數(shù)數(shù)列已放在一維數(shù)組中,給定下列程序中,函數(shù)FUN的功能是:利用拆半查找算法查找整數(shù)M在數(shù)組中的位置。若找到,則返回其下標(biāo)值:反之,則返回-1。
拆半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和high(lowhigh,查找結(jié)束。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)MAIN函數(shù),不得增行或刪行,也不要更改程序的結(jié)構(gòu)!
試題程序:#include
#define N 10
/********found********/
void fun(int a[], int m)
{
int low = 0, high = N-1, mid;
while (low <= high)
{
mid = (low+high)/2;
if (m < a[mid])
high = mid-1;
/********found********/
else
if (m >= a[mid])
low = mid+1;
else
return(mid);
}
return (-1);
}
main()
{
int i, a[N] = {-3, 4, 7, 9, 13, 45, 67, 89, 100, 180}, k, m;
printf("a êy×é?Dμ?êy?Yè???:");
for (i=0; i printf("%d,", a[i]);
printf("Enter m:");
scanf("%d", &m);
k = fun(a, m);
if (k >= 0)
printf("m=%d,index=%d\n", m, k);
else
printf("Not be found!\n");
}
第1處:void fun(int a[],int m)應(yīng)改為int fun(int a[],int m)
第2處:if (m>=a[mid])應(yīng)改為if(m>a[mid])
編輯推薦:
2014年上半年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間預(yù)告
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |