从键盘输入若干 整数(零表示结束), 统计出 数据个数, 以及最大值、最小值和平均值。

从键盘输入若干 整数(零表示结束),
统计出
数据个数,
以及最大值、最小值和平均值。

用一个函数实现数据
输入的功能,其首部为:
int Input(int s[])
Input的参数为输入的数据,
函数返回值大于0表示该行输入的数据个数,
0表示输入结束。

用一个函数实现求最大值、最小值和平均值的功能,首部为:
void statistics(int n, int s[], int *max, int *min, float *avg)

输入
从键盘输入若干数据整数(零表示结束)
输出
统计出数据个数,以及最大值、最小值和平均值
样例输入
1 2 3 4 5 0
样例输出
Num=5
Max=5
Min=1
Avg=3.000

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
// // 拷贝到平台的时候把my_fuction_lib.h注释掉.
//#include "my_fuction_lib.h"

//在此下方插入自定义函数对的声明:
void statistics(int n, int s[], int *max, int *min, float *avg)
{
    max[0] = min[0] =s[0];
    float sum = max[0];
    for(int i = 1;i<n;i++)
    {
        if(s[i] > max[0]) max[0] = s[i];
        else if (s[i] <min[0]) min[0] = s[i];
        sum += s[i];
    }
    avg[0] = sum/n;
}
int Input(int s[])
{
    /* 
    以下写法不可取,因为scanf里的i++后,回到while的判断中,是s[i]就不是刚才读组的值了
    因此无法判断刚才读到的是否结束标志0.
    int i = 0;
    scanf("%d",&s[i]);
    while(  s[i] != 0)
    {
        scanf("%d",&s[i++]);
    } */
    int i = 0;
    /* 初始化s[0] */
    scanf("%d",&s[i]);
    for(;s[i++] != 0;)
    {
        scanf("%d",&s[i]);
    }
    
    return i-1;
}
//主函数main
int main()
{
    int s[100];

    int min[1];
    int max[1];
    float avg[1];
    int n;


    int i = 0;

    
   // while(scanf("%d",&s[i++]) && s[i] != 0);
    n = Input(s);
    statistics(n, s, max, min, avg);
    printf("Num=%d\n", n);
    printf("Max=%d\n",max[0]);
    printf("Min=%d\n",min[0]);
    printf("Avg=%.3f\n",avg[0]);


    return 0;
} 
posted @ 2023-04-01 11:57  xuchaoxin1375  阅读(63)  评论(0)    收藏  举报  来源