C语言编程问题:编写程序求最大值、最小值及平均值。

要求:1、最大值、最小值、平均值的求取分别通过三个函数实现,函数以指针为参数;
2、主函数中通过键盘输入10个实数;
3、求出结果后,要求将其在主函数中输出。

#include<stdio.h>
double Max(double*p,int n)
{
    double max=*p;
    for(int i=0;i<n;i++)
        if(*(p+i)>max) 
            max=*(p+i);
    return max;
}
double Min(double *p,int n)
{
    double min=*p;
    for(int i=0;i<n;i++)
        if(*(p+i)<min) 
            min=*(p+i);
    return min;
}
double Average(double *p,int n)
{
    double sum=0;
    for(int i=0;i<n;i++)
        sum+=*(p+i);
    return sum/n;
}
int main()
{
    double a[10];
    printf("请输入10个实数:\n");
    for(int i=0;i<10;i++)
        scanf("%f",&a[i]);
    printf("这10个数中最大值为:%f\n",Max(a,10));
    printf("这10个数中最小值为:%f\n",Min(a,10));
    printf("这10个数的平均值为:%f\n",Average(a,10));
    return 0;
}

追问

为什么运行之后是这样的呢?主函数前面的void我后来改的,一开始按照你的int 和后面的return 0也是这个样子的。请问为什么?谢谢!

追答

我用的是scanf

你用的是scanf_s, scanf_s你少了一个参数,应该是这样的scanf_s("%f",&a[i],1);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-28
1234567891011121314151617181920212223242526272829303132333435#include<stdio.h>double Max(double*p,int n){ double max=*p; for(int i=0;i<n;i++) if(*(p+i)>max) max=*(p+i); return max;}double Min(double *p,int n){ double min=*p; for(int i=0;i<n;i++) if(*(p+i)<min) min=*(p+i); return min;}double Average(double *p,int n){ double sum=0; for(int i=0;i<n;i++) sum+=*(p+i); return sum/n;}int main(){ double a[10]; printf("请输入10个实数:\n"); for(int i=0;i<10;i++) scanf("%f",&a[i]); printf("这10个数中最大值为:%f\n",Max(a,10)); printf("这10个数中最小值为:%f\n",Min(a,10)); printf("这10个数的平均值为:%f\n",Average(a,10)); return 0;}
第2个回答  2016-12-31
int max(int *p,int n)
{
  int m=*p;
  int *q=p+1;
  while(q<p+n)
  {
    if(m<*q)
      m=*q;
    q++;  
  }
  return m;
}

int min(int *p,int n)
{
  int m=*p;
  int *q=p+1;
  while(q<p+n)
  {
    if(m>*q)
      m=*q;
    q++;  
  }
  return m;
}

int max(int *p,int n)
{
  int m=*p;
  int *q=p+1;
  while(q<p+n)
  {
    m=m+*q;
    q++;  
  }
  return m/n;
}

相似回答