200分求C语言程序

来源:百度知道 编辑:UC知道 时间:2024/04/20 12:26:18
输入M个浮点数(例如M有10个),记为X1,X2,…,XM,其中XK是第K个输入的数
再输入一个百分数P(例如P可为0.75或0.5),求一个K值,
K的条件是 K/M < P <= (K+1)/M,其中K/M要尽量大,仅小于P。求这个K值是多少

求高手帮帮忙,急用!
不好意思,漏了一点,输入那M个数后,先将M个数从小到大排序,然后再定义为X1,X2,…,XK,…,XM,就是说X1为最小,XM为最大(M是大于等于3的)

刚开始输入的M个数是没有排过序的,要用程序来排序,按从小到大的顺序。M可为任意大于3的数,是个变量。条件没有错,就是这样的,K/M < P <= (K+1)/M

非常感谢各位鼎力支持!感激不尽!可惜只能选一个最佳答案,就给godiq兄了,他根据我的意思改了两次,辛苦了。也真的衷心感谢其他朋友(outsky,jeff8888,依旧飘流)

修改后:

#include<stdio.h>
#include<malloc.h>

void main()
{
int m;
int k,i;
float *arr,p,temp;

do
{
printf("\nHow many numbers you want to input:");
scanf("%d",&m);
}while(m<=3);

arr=(float*)malloc(m*sizeof(float));
for (i=0;i<m;i++)
{
printf("\nThe %d :",i+1);
scanf("%4f",&arr[i]);
}

/***********************sort***************************/

for(k=0;k<m-1;k++)
{
for(i=k+1;i<m;i++)
{
if(arr[k]>arr[i])
{
temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
}

for(i=0;i<m;i++)
printf("%f",arr[i]);
/***********************sort over*********************************/
printf("\nPlease input a percent:");
scanf("%f",&p);<