1

我需要一个小程序:

  1. 读取自然数 n
  2. 然后读取 n 个实数 r0,r1,r2,...,rn
  3. 然后读取另一个实数 x

然后打印 x 相对于数字 r0,r1,r2,...,rn 的百分位数大小

    #include<stdio.h>


int main(){

int n, i=0;
double r[1000], x;

printf("Enter how many numbers\n");
scanf("%i", &n);

printf("Enter numbers\n");
while(i<n){
    scanf("%lf", &r[i]);
    i++;
    }

printf("Enter x:\n");
scanf("%lf", &x);
// need part here
// where percentiles are calculated

}

所以这是我的问题,我怎么能计算出百分位数?我已经阅读了很多关于百分位数的文章,但我仍然不明白,所以也许有人会向我解释我需要做什么,或者只是向我展示如何计算百分位数的模式。我对 C 语言有点了解,所以如果有人向我解释如何计算百分位数,我可以单独编写;o

PS关于来自维基百科的百分位数

在统计学中,百分位数(或百分位数)是某个变量的值,低于该值的观察值百分比。例如,第 20 个百分位是可以找到 20% 观察值的值(或分数)。第 25 个百分位数也称为第一个四分位数 (Q1),第 50 个百分位数称为中位数或第二个四分位数 (Q2),第 75 个百分位数称为第三个四分位数 (Q3)。

编辑:好的,一切正常(我认为),但我还有 1 个问题:我的代码看起来

#include<stdio.h>

void sortowanie( double r[1000], int n){
    int i,j;
    double temp;
    for(i=0; i<n; i++)
        for(j=0;j<n-1; j++){
            if (r[j]>r[j+1]){
                temp=r[j+1];
                r[j+1]=r[j];
                r[j]=temp;
                }

            }
}

int centyl(double x, int n){
int temp, wynik;
temp=n-x;
wynik=100*temp/n;
return wynik;

}


int main(){

int n, i=0;
double r[1000], x;

printf("Enter how many numbers\n");
scanf("%i", &n);

printf("Enter numbers\n");
while(i<n){
    scanf("%lf", &r[i]);
    i++;
    }

printf("Enter x:\n");
scanf("%lf", &x);

sortowanie(r, n);

printf("Centyl to %i\n", centyl(x, n) );

return 0;
}

并且想知道我可以采取什么保护措施来不破坏该程序?我可以在这里进行任何保护吗?

4

1 回答 1

2

这更与数学相关,更适合数学论坛。但是,我会为您省去麻烦,因为线程已经在这里。

要找到任何事物的百分位数,只需考虑以下事项:

如果你在 200 名学生中排在第 25 位,那么你的成绩比他们中的 175 名要好。为了找到你的百分位数,你可以用你做得比学生总数更好的学生数除以学生总数。

例如:

1. 200 - 25 = 175

2. 175 / 200 = 87.5 = 88th Percentile

这是找到百分位数的一种非常简单的方法——它很容易理解并且总是有效的。我希望这可以帮助你。

于 2012-05-21T23:11:02.093 回答