Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序-查找上面的最低学生分数,以及边界下面的最高分数_C - Fatal编程技术网

C程序-查找上面的最低学生分数,以及边界下面的最高分数

C程序-查找上面的最低学生分数,以及边界下面的最高分数,c,C,我正在完成一个程序,在这个程序中,我将一组非负的双精度读入一个数组,然后计算这些值的平均值和标准偏差。然后平均值加上标准偏差表示得到B 我在下一部分遇到了麻烦,我需要从将给我一个B的数字数组中找到最低分数,然后在没有得到B的数组中找到最高值。我在这一部分遇到了很多麻烦,任何帮助都将是惊人的。 当输入EOF时,我还必须使程序停止,但我也无法计算出该部分,因此对此的任何帮助也将不胜感激。现在,我只是让它适用于所有正值,并在引入负值时停止,以下是我的代码: #include <stdio.h&g

我正在完成一个程序,在这个程序中,我将一组非负的双精度读入一个数组,然后计算这些值的平均值和标准偏差。然后平均值加上标准偏差表示得到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;
}
#包括
#包括
int main(){
int-arr[100];
int y,x;
int i;
双平均值=0;
双标准=0;
双倍于此=0;
i=0;
printf(“输入下一个数字,EOF停止>”;
scanf(“%d”和&x);
而(x>=0){
arr[i++]=x;
printf(“输入下一个数字,EOF停止>”;
scanf(“%d”和&x);
}
y=i;
双和=0;
双sum1=0;
对于(i=0;iy){
printf(“**您必须输入至少10分***\n”);
返回0;
}
printf(“平均值=%.2lf,标准偏差=%.2lf\n”,平均值,sqrt(标准));
printf(“分数高于%.2lf获得B\n”,此选项);
返回0;
}

对于第二个问题,不要使用
fscan(%d,&x)
读取输入,而是创建一个字符数组(例如,
char[]str=new char[5];
)并使用
fscan(%s,&str)
。然后,使用
if(strcmp(str,eofStr)==0)break将该字符串与另一个包含“EOF”的字符串进行比较。使用atoi将字符串转换为整数

要查找B的最低分数,请存储一个用B保存最低数字的整数。将初始值设置为a等级值。迭代循环并与每次迭代的分数进行比较。如果分数较低,但仍为B,则将当前最低分数与此分数交换。完成循环,你将获得最低的B分。你可以做同样的事情,在没有B的情况下获得最高的分数

int low = this + sqrt(std);
for (int i = 0; arr[i] > 0; i++) {
    if (low > arr[i] && arr[i] >= this) low = arr[i];
}
代码:

#包括
#包括
int main(){
int-arr[100];
int y,x;
int i;
双平均值=0;
双标准=0;
双边距=0;
i=0;
printf(“输入下一个数字,EOF停止>”;
scanf(“%d”和&x);
而(x>=0){
arr[i++]=x;
printf(“输入下一个数字,EOF停止>”;
scanf(“%d”和&x);
}
y=i;
如果(10>y){
printf(“**您必须输入至少10分***\n”);
返回0;
}
双和=0;
双sum1=0;
对于(i=0;i保证金)和&(arr[i]<以上)){
以上=arr[i];
}
}
返回0;
}

首先,如果要在-ansi-pedantic C中编程,必须在块的顶部定义所有变量。e、 g:

正确: func(){

}

正确地说: func(){

}

现在谈谈你的问题: 如果希望保存双精度值数组,则该数组应为double类型,而不是-int类型

要查找数组中的最小数字,请执行以下操作: 对于这一个,有几个可能的选项,首先,您可以要求用户输入从最低到最高的值,然后直接到达数组[0](第一个位置=最低值)。但如果您不/不能,请始终使用快速排序: 要将数组从最低值排序到最高值,然后使用二进制搜索查找所需的值: 以搜索您希望的值

或者你也可以用O(N)的效率使其工作:

int heighest_小于_mean=0

int最小值小于平均值=平均值

对于(i=0;i
if(高度小于平均值
}


希望我能正确地理解您:)

在我编写最低和最高分数部分的代码时,您有没有可以参考的示例?那将是很大的帮助
#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;
}
variable v1;
variable v2;

perform_stuff();
perform_stuff()

variable v1;
if(heighest_smaller_than_mean < arr[i])
heighest_smaller_than_mean = arr[i];

if(smallest_smaller_than_mean < arr[i])
smallest_smaller_than_mean = arr[i];