當前位置:首頁 » 編程語言 » c語言求中位數

c語言求中位數

發布時間: 2022-07-06 07:20:11

『壹』 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語言求編程:中位數

你描述的要求不是很明了,應該分步描述,每一步的要求分步寫出來,大家容易看懂.

明白你的意思了!

只有兩個口控制步進電機的話,需要外加步進電機驅動器.
p1.0控制方向,p1.0是1(0)電機向前,p1.0是0(1)步進電機向後

p1.1控制步數和速度,用一個PWM就可以了,直接用定時器來控制.pwm頻率越高速度越快,但要用在定時器中斷裡面計算步進的步數來確定走了多遠.

至於你說的中斷信號,可以用循環掃描的方法,在程序中掃描輸入中斷信號,當檢測到信號後改變P1.5的電平,即可點亮LED

『叄』 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);

『肆』 c語言求中位數,不知哪兒錯了

intmain()
{
intn=0,a[10000];
printf("輸入整數,在新行開頭按Crtl+Z然後回車輸入結束. ");
while(true)
{
intr=scanf("%d",&a[n]);
if(r==EOF)
{
break;
}elseif(r<=0){
printf("輸入錯誤!");
return0;
}

n++;
}

printf("輸入數據%d個. ",n);

//排序
sort(a,a+n);
//中位數
if((n&1)==0)
printf("%.1f ",(float)((a[n/2]+a[n/2-1])/2.0f));
else
printf("%.1f ",(float)(a[n/2]));
return0;
}

『伍』 c語言:求一組數據中處於中位數。

你的意思是求數組中的中位數?

先對數組排序(如冒泡排序法),然後找出中位數(中間的一個或兩個)就可以了。

『陸』 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;
}

『柒』 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;

}

『玖』 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);
}

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726