我需要一个小程序:
- 读取自然数 n
- 然后读取 n 个实数 r0,r1,r2,...,rn
- 然后读取另一个实数 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;
}
并且想知道我可以采取什么保护措施来不破坏该程序?我可以在这里进行任何保护吗?