计算平均成绩:读入若干学生成绩(百分制),遇负数结束,遇大于100的分数跳过去。

计算平均成绩:读入若干学生成绩(百分制),遇负数结束,遇大于100的分数跳过去。计算并输出平均成绩、最高成绩、最低成绩(参见下面的样例输入输出格式)。计算结果不保留小数。如果没有输入有效成绩,则输出Nothing。
用c语言写 求提供思路或者是代码主要是遇到100以上跳过去如何实现 谢谢大佬

#include <stdio.h>

int main()
{
    int score[20];
    int tmp, count = 0;
    int max = 0, min = 0, sum = 0;
    scanf("%d", &tmp);
    while (tmp >= 0) {
        if (tmp <= 100) {
            score[count] = tmp;
            count++;
        }
        scanf("%d", &tmp);
    }
    if (count == 0) { //无有效成绩
        printf("Nothing!\n");
        return 0;
    }
    for (int i = 0; i < count; i ++) {
        sum += score[i];
        if (i == 0) {
            max = score[i];
            min = score[i];
        }
        if (max < score[i]) max = score[i];
        if (min > score[i]) min = score[i];
    }
    printf("Aver=%d, Max=%d, Min=%d\n", sum/count, max, min);
    return 0;
}

 运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-15
#include<stdio.h>
int main()
{
    int score[100];
    int n=0;
    while(1)
    {
        scanf("%d",&score[n]);
        if(score[n]<0) break;
        if(score[n]<=100) n++;
    }
    if(n==0) printf("Nothing\n");
    else
    {
        int i,sum=0,max=score[0],min=score[0];
        for(i=0;i<n;i++)
        {
            sum+=score[i];
            if(max<score[i]) max=score[i];
            if(min>score[i]) min=score[i];
        }
        int avg=sum/n;
        printf("Aver=%d,Max=%d,Min=%d\n",avg,max,min);
    }
    return 0;
}

第2个回答  2017-01-15

大概思路如下(不一定能过编译):

int record[999],i,j,k,m,n,s;
int main()
{
do
{
scanf("%d",&record[n]);
}while(record[n++]>0);

for(i=0;i<n;i++)
{
if(record[i]>=0&&record[i]<=100)
{
if(!j)k=m=reocrd[i];
j++;s+=record[i];
k = k>record[i]?k:record[i];
m = m<record[i]?m:record[i];
}
}

printf("avr:%d max:%d min:%d",s/j,k,m);
return 0;
}