czb08191314 2023-08-01 08:48 采纳率: 88.5%
浏览 2
已结题

c语言pat基础题改错

img


#include <stdio.h>

#define MAXN 10
typedef float ElementType;

ElementType Median( ElementType A[], int N );

int main ()
{
    ElementType A[MAXN];
    int N, i;

    scanf("%d", &N);
    for ( i=0; i<N; i++ )
        scanf("%f", &A[i]);
    printf("%.2f\n", Median(A, N));

    return 0;
}

/* 你的代码将被嵌在这里 */

我的答案如下:

ElementType Median( ElementType A[], int N ){
    float arr[MAXN];
    for(int i=0;i<N;i++){
        for(int j=i+1;j<N;j++){
            if(arr[i]>arr[j]){
                float t;
                t=arr[i];
                arr[i]=arr[j];
                arr[j]=t;
            }
        }
    }
    int i=(N+1)/2-1;
    return arr[i];
}

img


希望可以得到指导,改正错误。

  • 写回答

5条回答 默认 最新

  • qzjhjxj 2023-08-01 09:23
    关注

    供参考:

    /* 你的代码将被嵌在这里 */
    ElementType Median(ElementType A[], int N)
    {
        //必须采用希尔排序 
        ElementType temp;
        int gap, i, j;
        for (gap = N / 2; gap > 0; gap /= 2) 
        //gap是每次排序分组的间隔,每次间隔缩小两倍                                       
        {
            for (i = gap; i < N; i++)
            //在同一组内采用直接插入排序
            {
                for (j = i - gap; j >= 0 && A[j] > A[j + gap]; j = j - gap)
                //如果同一组内前一个元素大于相 gap间隔位置的元素,则两者交换位置
                {
                    temp = A[j];
                    A[j] = A[j + gap];
                    A[j + gap] = temp;
                }
            }
        }
        return A[N / 2];//返回中间元素
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 8月1日