问题:大于平均数的元素个数

0908:求大于平均数的元素个数(动态内存分配)
总时间限制: 1000ms 内存限制: 65535kB
描述
求输入的浮点数集合中大于平均数的元素个数。

输入
输入有2行。
第一行是一个整数n,表示第2行有n个浮点数。
第二行是n个浮点数的值。每个数之间以空格隔开。
输出
大于平均数的元素个数。

先算出平均数,再比较大于平均数的元素,统计个数。
你题目的解答代码如下:

#include <stdio.h>
int main()
{
    int n,i,count = 0;
    scanf("%d", &n);
    float a[n], sum = 0, avg;
    for (i = 0; i < n; i++)
    {
        scanf("%f", &a[i]);
        sum += a[i];
    }
    avg = sum / n;
    for (i = 0; i < n; i++)
    {
        if (a[i] > avg)
            count++;
    }
    printf("%d", count);
    return 0;
}

如有帮助,望采纳!谢谢!

C语言动态分配内存用malloc(),C++动态分配内存用new()
C代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,n,cnt=0;
    float ave=0;
    float *a;
    scanf("%d",&n);
    a = (float *)malloc(sizeof(float)*n);//动态分配内存
    for(i=0;i<n;i++)
    {
        scanf("%f",&a[i]);
        ave += a[i];
    }
    ave/=n;
    for(i=0;i<n;i++)
    {
        if(a[i]>ave)
            cnt++;
    }
    printf("%d",cnt);
    free(a);
    a=0;
    return 0;
}

C++代码如下:

#include <iostream>
using namespace std;

int main()
{
    int i,n,cnt=0;
    float ave=0;
    float *a;
    cin >> n;
    a = new float[n];//(float *)malloc(sizeof(float)*n);//动态分配内存
    for(i=0;i<n;i++)
    {
        cin >> a[i];//scanf("%f",&a[i]);
        ave += a[i];
    }
    ave/=n;
    for(i=0;i<n;i++)
    {
        if(a[i]>ave)
            cnt++;
    }
    cout<<cnt;//printf("%d",cnt);
    delete[] a;//free(a);
    a=0;
    return 0;
}