如何用C语言实现对整数的求平均?

如题所述

不考虑数据的存储,直接循环累计即可。

想要数据存储:

方法一:定义一个非常大的数组,循环输入并检测输入值,累计求平均。

方法二:动态数组,根据有效输入,实时扩展数组地址长度。

方法三:把每个数字创建成结构体,构建链表,实现自由扩展和删除。

下面我的代码是用方法二写的:

#include <stdio.h>

#include <malloc.h>

int input(int **nsp);//输入任意个整数,忽略负数,输入0结束,成功返回数组长度,失败返回-1

int main()

{

    int i,len,sum=0,*nums=NULL;

    len=input(&nums);

    printf("输入的正整数为:\n");

    for(i=0;i<len;printf("%d ",nums[i]),i++)

        sum+=nums[i];

    printf("\n");

    printf("个数为%d,平均值为%.2f\n",len,(sum*1.0)/len);

    free(nums);

    return 0;

}

int input(int **nsp)

{

    int len=0;

    int n,*nTemp=NULL,*nums=NULL;

    if(*nsp) free(*nsp),nsp=NULL;

    while(1)

    {

        scanf("%d",&n);

        if(n==0) break;

        if(n>0)

        {

            if(nums==NULL)//记录首个数字

            {

                nums=(int *)malloc(sizeof(int));

                if(!nums) return -1;

                nums[len]=n;

                len++;

            }

            else//非首数字,扩展内存空间

            {

                nTemp=realloc(nums,sizeof(int)*(len+1));

                if(nTemp) nums=nTemp,nTemp=NULL;

                nums[len]=n;

                len++;

            }

        }

    }

    *nsp=nums;

    return len;

}

温馨提示:答案为网友推荐,仅供参考
相似回答