下列给定程序中,函数fun()的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。 请改正
下列给定程序中,函数fun()的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。
请改正程序中的错误,使它能得到正确结果。
[注意] 不要改动main函数,不得增行或删行,也不得更改程序的结构。
[试题源程序]
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("排序前的数据:”);
for(i=0; i<m; i++)
printf("%d", a[i]);
printf("\n");
fun(a, m);
printf("排序后的数据:");
for(i=0; i<m; i++)
printf("%d", a[i]);
printf("\n");
}
正确答案:(1)错误:p=j 正确:p=; (2)错误:p=j; 正确:p=i;(1)错误:p=j 正确:p=; (2)错误:p=j; 正确:p=i; 解析:题中提到按“从小到大”的顺序排序,这类题目都可以用选择排序法,即从后N个比较过程中,选择一个最小的与第一个元素交换,以此类推,即用第二个元素与后N-1个进行比较,并进行交换。 错误1:此处错误比较明显,p=j后面应加分号。 错误2:根据选择排序法的思路,此处应将i赋给p。
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
