青亭浅 2022-11-24 00:08 采纳率: 88.2%
浏览 2
已结题

运行这个代码,为什么会出现下面的情况,是哪里错了


#include<stdio.h>
int main()
{
    void sort(float *x,int n);
    int i,m;
    float *p;
    float a[1000];
    p=a;
    scanf("%d",&m);
    for(i=0;i<m;i++){
     scanf("%f",p++);
     }
     p=a;
     sort(p,m);
     return 0;
}

void sort(float *x,int n)
{
    int i,j,k,t;
    float aver;
    for(i=0;i<n-1;i++){
        k=i;
        for(j=j+1;j<n;j++)
        if(*(x+j)>*(x+k))k=j;
        if(k!=i)
        {
            t=*(x+i);*(x+i)=*(x+k);*(x+k)=t; }
    }
    for(i=0;i<n;i++)
    aver+=*(x+i);
    printf("max=%0.2f\nmin=%0.2f\navge=%0.2f",*x,*(x+n-1),aver/n);
    
}

img

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-24 09:15
    关注

    修改如下,供参考:

    #include <stdio.h>
    int main()
    {
        void sort(float* x, int n);
        int i, m;
        float* p;
        float a[1000];
        p = a;
        scanf("%d", &m);
        for (i = 0; i<m;i++)
            scanf("%f", p++);
        p = a;
        sort(p, m);
        return 0;
    }
    void sort(float* x, int n)
    {
        int i, j, k, t;
        float aver = 0;
        for (i = 0; i < n - 1; i++) {
            k = i;
            for (j = k + 1; j < n; j++)
                if (*(x + j) > *(x + k)) k = j;
            if (k != i)
            {
                t = *(x + i); *(x + i) = *(x + k); *(x + k) = t;
            }
        }
        for (i = 0; i < n; i++)
            aver += *(x + i);
        printf("max=%0.2f\nmin=%0.2f\navge=%0.2f", *x, *(x + n - 1), aver / n);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月29日
  • 已采纳回答 11月28日
  • 创建了问题 11月24日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?