还有倒数第三行改为printf("%d\n",zws(a,b,c))
#include<conio.h>
#include<stdio.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()
}
数组排序可以不用指针。你把数组定义成全局变量,比如说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)
#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=0i<n-1i++) {
for(j=0j<n-i-1j++) {
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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)