刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

试题三

 阅读以下函数说明和C语言函数,将应填入  (n)  处的字句写在对应栏内。 

    【说明】 

    函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。 

    [C函数]

    int psort(int a[],int n)

    {int i,J,k,P;

    for(i=0,k=0;i<  (1)  ;i++){

    for(j=i+1,   (2)  ;j<n; j++)

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

    p=j;

    if(p!=i){

    t=a[p];

    a[p]=a[i];

    a[i]=t;

    }

    if(  (3)  )  k++;

    else if(  (4)  <a[i])

      (5)  =a[i];

    }

    return  k;

    }

    int a[]={5,7,5,6,4,3,4,6,7};

    main()

    {int k,n;

    for(k=0;k<(Sizeof a)/Sizeof(int);k++)

    printf("%5d",a[k]);

    printf ("\n\n");

    n=psort(a,(sizeof(a))/sizeof(int));

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

    printf("%5d",a[k]);

    printf("\n\n");

    } 

使用微信搜索喵呜刷题,轻松应对考试!

答案:

(1 n-1    (2) P=i    (3) k==0    (4) a[k-1]    (5) a[k++]

解析:

本题是一个使用选择排序法对数组进行排序的C语言函数。选择排序的基本思想是从未排序的元素中选择最小(或最大)的元素,将其放到已排序序列的末尾。

  1. 对于第一个空(1),由于我们需要遍历整个数组,除了最后一个元素外,所以循环条件是 i < n-1。因此,填入 n-1。
  2. 第二个空(2)是在内层循环中找到最小元素的索引,因此需要初始化 p 为当前外层循环的索引 i,所以填入 p=i。
  3. 在排序过程中,当找到最小元素并将其放到正确的位置时,我们需要判断这是否是第一个放置的元素。如果是,说明已排序序列的长度增加,需要更新 k 的值。因此,空(3)填入 k==0。
  4. 对于空(4),我们需要比较已排序序列的最后一个元素和当前找到的最小元素。由于已排序序列的最后一个元素的索引是 k-1(因为 k 是已放置的元素数量),所以填入 a[k-1]。
  5. 对于空(5),当找到的最小元素小于已排序序列的最后一个元素时,我们需要将它放到已排序序列的下一个位置,并更新 k 的值。因此,填入 a[k++]。
创作类型:
原创

本文链接:试题三 阅读以下函数说明和C语言函数,将应填入  (n)  处的字句写在对应栏内。     【说明】

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share