万能百科  > 所属分类  > 

下列给定程序中,函数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。

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

标签