回 帖 发 新 帖 刷新版面

主题:[原创]求助(为什么我的会是错的)acm简单题

Above Average

Time Limit: 1 Seconds     Memory Limit: 32768 K

Total Submit:16     Accepted:11

--------------------------------------------------------------------------------

Description

It is said that 90% of frosh expect to be above average in their class. You are to provide a reality check.


Input

The first line of standard input contains an integer C, the number of test cases. C data sets follow. Each data set begins with an integer, N, the number of people in the class (1 <= N <= 1000). N integers follow, separated by spaces or newlines, each giving the final grade (an integer between 0 and 100) of a student in the class.


Output

For each case you are to output a line giving the percentage of students whose grade is above average, rounded to 3 decimal places.


Sample Input


5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

Sample Output


40.000%
57.143%
33.333%
66.667%
55.556%



以下是我的程序:


#include<stdio.h>
#include<stdlib.h>
int main()
{
int N,n,sum,i,j;
int* array;
float result,ava;
scanf("%d",&N);
while(--N>=0)//case
{
scanf("%d",&n);//numbers
sum=0;
array=(int*)malloc(sizeof(int)*n);
i=0;
j=n;
while(--j>=0)
{
scanf("%d",&array[i]);
sum+=array[i++];
}
ava=(float)sum/n;//average
j=0;
for(i=0;i<n;i++)
if(array[i]>ava)
j++;//above average
result=(float)j/n;
printf("%.3f",result*100);
putchar('%');
putchar('
');
free(array);
}
return 0;
}

[em10][em10][em10][em10][em10][em10]

回复列表 (共2个回复)

沙发

#include <iostream.h>
#include <stdio.h>
int main()
{
    int c;
    cin >> c;
    while(c--)
    {
        int n;
        cin >> n;
        int s[1000];
        int sum(0),count(0);
        for(int i=0;i<n;i++)
        {
            cin >> s[i];
            sum+=s[i];
        }
    
        for(i=0;i<n;i++)if(s[i]>sum/n)count++;
    
        printf("%.3f%%\n",(float)count/n*100);
    }
    return 0;
}

板凳

你的是正确的,但你知道为什么我的是错的吗

我来回复

您尚未登录,请登录后再回复。点此登录或注册