当前位置:首页 » 编程语言 » c语言写中位数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言写中位数

发布时间: 2022-06-07 15:02:46

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

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

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

B. 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;i<n-1;i++) {
for(j=0;j<n-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;
}

C. c语言,输入一个数字,求该数字中位数最大的是哪一位(最大)

#include <stdio.h>


int main()

{

int a,max=0;

scanf("%d",&a);

while(a)

{

if(max<a%10)

max=a%10;

a/=10;

}

printf("%d ",max);

return 0;

}

D. 求中位数的一个C语言程序,不知道自己错在哪里,求指出

代码改成:
scanf("%d, %d, %d", &a, &b, &c);

输入的时候这样输入
a, b, c
例如:
7, 9, 3

E. c语言 求中位数

#include<math.h>
#include<stdio.h>
#define N 100
void median(int *p,int a)
{
int i,j;
int d0,d1;
int temp;
for(i=0;i<a-1;i++)
for(j=0;j<a-i-1;j++)
{
d0 = p[j];
d1 = p[j+1];
if(d1<d0)
{
temp=d1;
d1=d0;
d0=temp;
}
}
}

int main(){
int num,i;
int dat[N];
scanf("%d", &num);
while(num != 0)
{
for(i = 0; i<num; i++)
{
scanf("%d", &dat[i]);
}
median(dat, num);
if(num % 2 != 0)
{
printf("%lg\n", dat[num/2]*1.0);
}
else
{

printf("%lg\n",(dat[num/2] + dat[num/2 - 1]) / 2.0);
}
scanf("%d",&num);
}
return 0;
}

F. c语言中高位数,中位数,低位数的定义

这不是C语言的定义,这是统计学的定义。以工资统计为例,高位数是劳动力市场工资指导价位平均水平的一种反映。通常而言,将薪酬从高往低排,在25%处的那个数字为高位数,50%为中位数,75%为低位数。

G. c语言 调用函数求一个数组的中位数

#include<stdio.h>
#define N 4
float mid(int *a)
{
int i,j,t;
float middle;
for(i=0;i<N;i++)//对数组从小到大排序
for(j=i+1;j<N;j++)
if(a[j]<a[i])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
printf("排序后数组:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
if(N%2==1)//求中位数
middle=a[N/2];
else
middle=(a[N/2]+a[N/2-1])/2.0;
return middle;
}

void main()
{
int a[N],i;
float middle;
printf("请输入%d个数:\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
middle=mid(a);
printf("中位数是:%f\n",middle);
}

H. c语言求编程:中位数

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

明白你的意思了!

只有两个口控制步进电机的话,需要外加步进电机驱动器.
p1.0控制方向,p1.0是1(0)电机向前,p1.0是0(1)步进电机向后

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

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

I. C语言程序设计:求众数,中位数 重点看图,会采纳

这个很简单啊,设置数组报存随机生成的数,然后一个单循环求出各个数的重复次数。
或者选择排序,连续相等数最多的就是众数,中间那个数字就是中位数。

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

数组排序可以不用指针。你把数组定义成全局变量,比如说a[10001];然后调用我给你的快排程序就行了,这个程序可以背下来,很有用的。
void
qs(int
L,int
R)
{
int
i=L,j=R,mid=a[(L+R)/2],t;
while(i<j)
{
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(i<R)
qs(i,R);
if(L<j)
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);