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

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;

}

}

main()

{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");

}


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

    请编写一个函数void fun(int a [],int n),其中a为数组,n为数组a的长度。函数fun()的功能是冒泡排序法将数组a元素按从小到大的顺序排列,实现数组a的升序排列。

    注意:部分源程序已存在文件PROC12.cpp中。

    请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。

    文件PROC12.cpp的内容如下:

    //PROC12. cpp

    include <iostream>

    using namespace std;

    define MAX 100

    void fun(int a[],int n);

    int main ()

    {

    int a[MAX],n,i;

    cout<<"Please enter the array size n:\n";

    do {

    cin>>n;

    if (n>100)

    cout<<"array size flowover! ReEnter a number(0-100)\n";

    }while (n>100);

    cout<<"Enter the array data:\n";

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

    cin>>a [ii;

    fun(a[],n);

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

    cout<<a [i] <<" ";

    cout<<end1;

    return 0;

    }

    void fun(int a[ ],int n)

    {

    // * * * * * * * *

    }


    正确答案:

  • 第2题:

    下列给定程序中,函数proc()的功能是:按顺序给str所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若str所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,str所指数组有17个元素,则只对前15个元素进行处理,不对最后的2个元素求平均值。 程序执行结果为Theoriginaldata: 246810 1214161820 2224262830 3224 Theresult: 6.0016.0026.00 请修改函数proc()中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:


    正确答案:
    错误:if(i+1%5==0)
    正确:if((i+1)%5==0)
    【解析】按题目中要求,对每5个元素求平均值。每取到5个元素的标志为(i+1)对5取余为0,而表达式“i+1%5”表示的含义为变量i加上1对5取余,因此,应改为“if((i+1)%5==0)”。

  • 第3题:

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


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

  • 第4题:

    请完成函数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,借助中间变量交换两个数。

  • 第5题:

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