下列给定的程序中,函数fun()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include<stdio.h>define N 20void fun(int a[ ],int n){int i,j,t,p;/*************found*************/for(j=0;j<n-1;j++) ;{p=j;for(i=j;i<n;i++)if(a[i)>a[p]

题目

下列给定的程序中,函数fun()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include<stdio.h>

define N 20

void fun(int a[ ],int n)

{

int i,j,t,p;

/*************found*************/

for(j=0;j<n-1;j++) ;

{

p=j;

for(i=j;i<n;i++)

if(a[i)>a[p])

p=i;

t=a[p];

a[p]=a[i];

/*************found**************/

a[p]=t;

}

}

main()

{

int a[N]={11,32,-5,2,14},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”);

}


相似考题
更多“下列给定的程序中,函数fun()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。请改 ”相关问题
  • 第1题:

    请完成函数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; 1 )

    { p=j;

    for(i=j;i<n;i++)

    if(a[i] 2 a[p]

    p=i;

    t=a[p];

    a[p]=a[j];

    a[ 3 ]=t;

    main()

    {int a[N]={11,32,-5,2,14},i,m=5;

    for(i=0;i<m;i++)

    printf("%d\n",a[i});

    fun(a,m);

    for(i=0;i<m;i++)

    printf("%d"a[i]);

    }


    正确答案:void fun(int a[]int n) { int ijtp; for(j=0;jn-1;j++) { p=j; for(i=j;in;i++) if(a[i]>a[p]) p=i; t=a[p]; a[P]=a[j]; a[j]=t; } }
    void fun(int a[],int n) { int i,j,t,p; for(j=0;jn-1;j++) { p=j; for(i=j;in;i++) if(a[i]>a[p]) p=i; t=a[p]; a[P]=a[j]; a[j]=t; } } 解析:程序的基本思路是依次用当前取得的元素和它后面的其他元素进行比较,这样在比较完后,可以保证当前位置的当前元素存放着最大数。按同样方法取得次最大数。空白1处填j++,循环变量j依次增1,取出每个数;空白2处填>,按照题目要求是从大到小排序:空白3处填j,借助中间变量交换两个数。

  • 第2题:

    对一个有10个整型数据元素一维数组按照从大到小进行排序,要求对数组排序过程写成函数形式,并在主函数中调用。


    A

  • 第3题:

    编写ArraySort子过程,将数组的所有元素用选择法从大到小排序。窗体的单击事件调用ArraySort子过程对数组排序,数组的8个元素由随机函数产生,随机数的范围在1~50之间。


    public static void sort(ArrayList list) { TreeSet ts = new TreeSet(new Comparator() { public int compare(String s1, String s2) { int num = s1.compareTo(s2); return num == 0 ? 1 : num; } }); ts.addAll(list); list.clear(); list.addAll(ts); }

  • 第4题:

    下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:


    正确答案:

    【解析】由主函数的调用可知,函数proc()没有返回值。因此,“proc(char*pstr[6])”应改为“voidproe(char*pstr[6])”。题目中要求按字符串由小到大的顺序进行排序,需要比较每一个字符串的大小,因此,“if(strcmp(*(pstr+i),pstr+j)>0)”应改为“if(strcmp(*(pstr+i),*(pstr+j))>O)”。顺序不对的2个字符串要互换其指针所指向的地址,赋值的两个变量其类型应该相同,因此,“*(pstr+i)=pstr+j;”应改为“*(pstr+i)=*(pstr+j);”。

  • 第5题:

    用冒泡法对数组a中10个元素{60,70,99,10,90,40,20,50,30,80} 按从大到小的顺序进行排序。要求定义函数sort实现排序,在主函数中输出排好序的数组元素。


    9,14,18,4,20,11,17,22,23,25