6-1 求最大的偶数和最小的奇数的差
求10个数中的最大的偶数和最小的奇数的差。
函数接口定义:
int fun(int a[],int n);
函数fun中a
、n
是用户传入的参数,函数fun的功能是求a
数组中的n
个数中的最大的偶数和最小的奇数的差,并返回此差值。
裁判测试程序样例:
#include<stdio.h>
int fun(int a[],int n);
int main()
{int b[10],i,max,k=0;
for(i=0;i<10;i++) scanf("%d",&b[i]);
printf("%d\n",fun(b,10));
return 0;
}
/* 请在这里填写答案 */
输入样例:
1 2 3 4 5 6 7 8 9 10
输出样例:
9
代码如下:
int fun(int a[],int n)
{
int max=0,min=20;
scanf("%d",&a);
for(int i=0;i<=9;i++)
{
if(a[i]%2==0 && a[i] >= max)
max=a[i];
else if(a[i]%2!=0 && a[i] <= min)
min=a[i];
}
return max-min;
}
6-6 求自定类型元素序列的中位数
本题要求实现一个函数,求N
个集合元素A[]
的中位数,即序列中第⌊(N+1)/2⌋大的元素。其中集合元素的类型为自定义的ElementType
。
函数接口定义:
ElementType Median( ElementType A[], int N );
其中给定集合元素存放在数组A[]
中,正整数N
是数组元素个数。该函数须返回N
个A[]
元素的中位数,其值也必须是ElementType
类型。
裁判测试程序样例:
#include <stdio.h>
#define MAXN 10
typedef float ElementType;
ElementType Median( ElementType A[], int N );
int main ()
{
ElementType A[MAXN];
int N, i;
scanf("%d", &N);
for ( i=0; i<N; i++ )
scanf("%f", &A[i]);
printf("%.2f\n", Median(A, N));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
3
12.3 34 -5
输出样例:
12.30
代码如下:
ElementType Median( ElementType A[], int N )
{
int gap;
for(gap=N/2;gap>0;gap=gap/2)
{
for(int i=gap;i<N;i++)
{
ElementType t=A[i];
int j;
for(j=i-gap;j>=0 && t<A[j];j=j-gap)
{
A[j+gap]=A[j];
}
A[j+gap]=t;
}
}
return A[N/2];
}