您的位置:

怎么用c语言求中位数,c语言中求位数的函数

本文目录一览:

c语言:求一组数据中处于中位数。

你的意思是求数组中的中位数?

先对数组排序(如冒泡排序法),然后找出中位数(中间的一个或两个)就可以了。

c程序:给出A,B,C寻找中位数

没有包含头文件conio.h,

还有倒数第三行改为printf("%d\n",zws(a,b,c));

#includeconio.h

#includestdio.h

int zws(int a, int b, int c){

int ans;

if (a = b a = c) ans = a;

if (a = b a = c) ans = a;

if (b = a b = c) ans = b;

if (b = a b = c) ans = b;

if (c = a c = b) ans = c;

if (c = a c = b) ans = c;

return ans;

}

int main()

{

int a, b, c;

printf("please input 3 integar:");

scanf("%d %d %d", a, b, c);

printf("%d\n",zws(a, b, c));

getch();

}

c语言求编程:中位数

你描述的要求不是很明了,应该分步描述,每一步的要求分步写出来,大家容易看懂.

明白你的意思了!

只有两个口控制步进电机的话,需要外加步进电机驱动器.

p1.0控制方向,p1.0是1(0)电机向前,p1.0是0(1)步进电机向后

p1.1控制步数和速度,用一个PWM就可以了,直接用定时器来控制.pwm频率越高速度越快,但要用在定时器中断里面计算步进的步数来确定走了多远.

至于你说的中断信号,可以用循环扫描的方法,在程序中扫描输入中断信号,当检测到信号后改变P1.5的电平,即可点亮LED

c语言 求中位数

#includestdio.h

#define N 1001

void bubblesort(int *list,int len) //冒泡排序

{

    int i,j;

int temp;

    for(i=0;ilen - 1;i++)

        for(j=0;jlen-i - 1;j++) 

        {

            if(list[j+1]list[j])

            {

                temp=list[j+1];

                list[j+1]=list[j];

                list[j]=temp;

            }

        }

}

int main(){

int num;

int tar[N];

scanf("%d", num);

while(num != 0){

for(int i = 0; i num; i++){

scanf("%d", tar[i]);

}

bubblesort(tar, num);

if(num % 2 == 0){

printf("%lg\n",(tar[num/2] + tar[num/2 - 1]) / 2.0); 

}else{

printf("%lg\n", tar[num/2]*1.0);

}

scanf("%d",num);

}

return 0;

}

C语言 如何编个程序求一组数的中位数和众数

数组排序可以不用指针。你把数组定义成全局变量,比如说a[10001];然后调用我给你的快排程序就行了,这个程序可以背下来,很有用的。

void

qs(int

L,int

R)

{

int

i=L,j=R,mid=a[(L+R)/2],t;

while(ij)

{

while(a[i]mid)

++i;

while(a[j]mid)

--j;

if(i=j)

{

t=a[i];

a[i]=a[j];

a[j]=t;

++i;

--j;

}

}

if(iR)

qs(i,R);

if(Lj)

qs(L,j);

}

排好序之后找中位数就好办了。

至于众数,我觉得最好的方法是用bfs。但这个对你来说难度有点大,我就给你写一个hash表吧。还用上面的那个数组,且假定数组a中的最大值不超过10000,若超过,你把下面这个hash数组的范围扩大就行了。

另外,设a中有n个元素,a从1开始计数(若从0开始,你改一下就好了)

int

hash[10001]={0};

int

i,Max=0;

for(i=1;

i=n;

++i)

{

++hash[a[i]];

if(hash[a[i]]hash[Max])

Max=a[i];

}

最后输出Max就好了

刚t415422663倒是提醒我了,如果要判断众数有多个,我可以把上面的程序稍改一下

int

hash[10001]={0};

int

i,Max=-1;/*注意,这里把Max赋值为-1是为了防止数组a的元素个数为0时所有数据都被输出*/

for(i=1;

i=n;

++i)

{

++hash[a[i]];

if(hash[a[i]]Max])

Max=hash[a[i]];

}

//10000是数组a中可能出现的最大值,这个你可以自己改的

for(i=1;

i=10000;

++i)

if(hash[i]==Max)

printf("%d\n",i);

c语言求中位数的程序

#include stdio.h

void swap(int *p,int *q) {

int t;

t=*p;

*p=*q;

*q=t;

}

void sort(int a[],int n) {

int i,j,temp;

for(i=0;in-1;i++) {

for(j=0;jn-i-1;j++) {

if(a[j]a[j+1])

swap(a[j],a[j+1]);

}

}

}

int main() {

int a[] = {6,3,8,5,1};

int n = 5;

int sum,i;

sort(a,n);

n = (n+1) / 2 - 1; // -1 as array indexing in C starts from 0

printf("Median = %d ", a[n]);

return 0;

}