本文目錄一覽:
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;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/185868.html