• 下列给定程序中,函数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<a)
    /***********found***********/
    p=j;
    t=a;
    a=a;
    a=t;
    }
    }
    msin()
    {
    int a =(9, 6, 8, 3, -1), i, m=5;
    printf("排序前的数据:”);
    for(i=0; i<m; i++)
    printf("%d", a);
    printf("\n");
    fun(a, m);
    printf("排序后的数据:");
    for(i=0; i<m; i++)
    printf("%d", a);
    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。
  • 2021年07月12日 21时14分来自  问答库 >> 计算机类
  • 评论 0
  • 手机玩微博

    手机版 手机端
    Powered by 日新微博 © 2018 - 2020 日新网