【C语言】之''指针作为参数求数组的最大值和最小值''

老师平时布置的希冀系统上的作业答案,仅供参考!

【问题描述】

键盘输入一个数组,求这个数组的和、最大值、最小值、平均值。

第一行输入数组的大小,第二行数组数组元素。定义函数void init(int x,n)实现数组初始化,定义函数int sum(int x,n)求数组的和并返回。定义函数int max(int x,n)求数组最大值并返回;定义函数int min(int x,n)求数组最小值并返回。定义函数float ave(int *x,n)求数组的平均值并返回。

【输入形式】

第一行输入数组的长度n

第二行输入n个整数

【输出形式】

数组的和、最大值、最小值、平均值

【样例输入】

3

23 26 23

【样例输出】

72 26 23 24.00

【参考答案】

#include <stdio.h>
void main()
{
  void init(int  *x, int n);
  void print(int  *x, int n);
  int sum(int  *x, int n);
  int max(int  *x, int n);
  int min(int  *x, int n);
  float avg(int  *x, int n);
  int a[100];
  int n;
  scanf("%d",&n);
  init(a,n);
  printf("%d ",sum(a,n));
  printf("%d ",max(a,n));
  printf("%d ",min(a,n));
  printf("%.2f ",avg(a,n));

}
int sum(int  *x, int n)
{
       int sum=0;
           for(int i=0;i<n;i++)
           {
               sum+=*(x+i);
           }
           return (sum);

}
int max(int  *x, int n)
{

      int max=*x;
          for(int i=0;i<n;i++)
          {
              if(max<*(x+i))
                  max=*(x+i);
          }
          return (max);
}
int min(int  *x, int n)
{
     int min=*x;
         for(int i=0;i<n;i++)
         {
             if(min>*(x+i))
                 min=*(x+i);
         }
         return (min);

}
float avg(int  *x, int n)
{

      int sum=0;
          for(int i=0;i<n;i++)
          {
              sum+=*(x+i);
          }
          float aver;
          aver=(1.00*sum)/n;
          return (aver);
}
void init(int  *x, int n)
{
   for(int i=0;i<n;i++)
       {
           scanf("%d",x++);
       }
}
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容