1、合并有序数组
编写一个程序,将两个元素从小到大有序的一维数组归并成一个有序的一维数组。
#include <stdio.h>
int main()
{
int a[20],b[20],c[40];
int m,n,i,j,t;
scanf("%d",&m);
for (i=0;i<m;i++)
{
scanf("%d",&a[i]);
c[i]=a[i];
}
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d",&b[i]);
c[i+m]=b[i];
}
for (j=1;j<m+n;j++)
for (i=0;i<m+n-j;i++)
{
if (c[i]>c[i+1])
{
t=c[i];
c[i]=c[i+1];
c[i+1]=t;
}
}
for (i=0;i<m+n;i++)
printf("%d ",c[i]);
return 0;
}
2、求差集
两个集合的差集定义如下:集合A、B的差集,由所有属于A但不属于B的元素构成。
输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。
#include<stdio.h>
#define N 20
int main()
{
int a[N],b[N];
int i,j,m,n,tag;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
for(i=0;i<m;i++)
{
tag=0;
for(j=0;j<n;j++)
if(a[i]==b[j])
tag=1;
if(tag==0)
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
3、大奖赛评分
当前许多歌手大奖赛评分时,为了体现公平,在评委给出分数后统计平均得分时,都会去掉最高分和最低分。编写程序,读入评委打分(分数都是大于0的整数,评委人数大于等于5,小于等于50),去掉两个最高分和两个最低分,计算并输出平均得分(小数点后保留两位有效数字)。
#include<stdio.h>
int main ()
{
int a[50];
int i,j,k=0,t,sum=0;
double average;
scanf("%d",&a[k]);
while(a[k]!=-1)
{
k++;
scanf("%d",&a[k]);
}
for (j=1;j<k;j++)
for (i=0;i<k-j;i++)
if (a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for (i=2;i<k-2;i++)
sum=sum+a[i];
average=sum*1.0/(k-4);
printf("%.2lf",average);
return 0;
}