C程序-找出上面最低的学生分数,和下面的最高分数

标签 c

我正在完成一个程序,我将一堆非负 double 读入一个数组,然后计算这些值的平均值和标准差。那么平均值加上标准偏差就代表获得 B
我在下一部分中遇到了麻烦,我需要从数字数组中找到最低分数,这将为我提供 B,然后找到最高分 未获得 B 的数组。我在这部分遇到了很多麻烦,任何帮助都会很棒。
当输入 EOF 时,我还必须让程序停止,但我也无法弄清楚该部分,因此任何有关这方面的帮助也将不胜感激。现在,我只是让它适用于所有正值,并在引入负值时停止,这是我的代码:

#include <stdio.h>
#include <math.h>

int main () {
    int arr[100];
    int y, x;
    int i;
    double mean = 0;
    double std = 0;
    double this = 0;
    i = 0;

    printf("Enter next number, EOF to stop > ") ;
    scanf("%d",&x);
    while (x >= 0) {
        arr[i++] = x;
        printf ("Enter next number, EOF to stop > " );
        scanf("%d",&x);
    }

    y = i;

    double sum = 0;
    double sum1= 0;

    for(i = 0; i < y; i++){
        sum = sum + arr[i];
    }
    mean = sum / y;

    for (i = 0; i < y; i++){
        sum1 = sum1 + pow((arr[i] - mean), 2);
    }

    std = sum1 / ((float)y - 1);

    this = mean + sqrt(std);

    if (10 > y) {
        printf("**You must enter atleast 10 scores***\n");
        return 0;
    }

    printf("Mean = %.2lf, Standard Deviation = %.2lf\n", mean, sqrt(std));
    printf("Scores above %.2lf get a B\n", this);

    return 0;
}

最佳答案

代码:

#include <stdio.h>
#include <math.h>

int main () {
    int arr[100];
    int y, x;
    int i;
    double mean = 0;
    double std = 0;
    double margin = 0;
    i = 0;

    printf("Enter next number, EOF to stop > ") ;
    scanf("%d",&x);
    while (x >= 0) {
        arr[i++] = x;
        printf ("Enter next number, EOF to stop > " );
        scanf("%d",&x);
    }

    y = i;
    if (10 > y) {
        printf("**You must enter atleast 10 scores***\n");
        return 0;
    }

    double sum = 0;
    double sum1= 0;

    for(i = 0; i < y; i++){
        sum = sum + arr[i];
    }
    mean = sum / y;

    for (i = 0; i < y; i++){
        sum1 = sum1 + pow((arr[i] - mean), 2);
    }

    std = sum1 / ((float)y - 1.0);

    margin = mean + sqrt(std);


    printf("Mean = %.2lf, Standard Deviation = %.2lf\n", mean, sqrt(std));
    printf("Scores above %.2lf get a B\n", margin);

    int below = arr[0]; // highest value in the array that will not get a B
    int above = arr[0]; // lowest value in the array that will give a B

    for (i=0; i<y; i++) {
        if ((arr[i] > below) && (arr[i] < margin)) {
            below = arr[i];
        }
        else if ((arr[i] > margin) && (arr[i] < above)) {
            above = arr[i];
        }
    }

    return 0;
}

关于C程序-找出上面最低的学生分数,和下面的最高分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16475928/

相关文章:

c - 使用 "->"通过指针导航结构

c++ - 实现信号量时混淆核心转储

c - 奇怪的数组字符串输出

在 GTK3+ C 中创建菜单

c - 用 fread 读取一个空文件

c - 为什么程序在给定展开因子 k>C*L 的情况下达到吞吐量界限?

无法在 linux 上使用 gcc 编译 program.c

c - 如何在套接字服务器应用程序中重用端口?

c - 函数的意外返回值

c - C代码中的错误