这道题目很简单,考察的就是结构体数组的应用,直接贴代码了
#include <stdio.h>
#include <math.h> typedef struct color
{
int r;
int g;
int b; }color; double distance(color c1,color c2)
{
return sqrt(pow((c1.b-c2.b),2)+pow((c1.g-c2.g),2)+pow((c1.r-c2.r),2));
} int equal(color c1,color c2)
{
if(c1.r==c2.r&&c1.g==c2.g&&c1.b==c2.b)
return 1;
else
return 0;
} int main()
{
color t[16];
int i;
for(i=0;i<16;i++)
scanf("%d%d%d",&t[i].r,&t[i].g,&t[i].b);
color c[1000];
color m[1000];
int r,g,b,n=0;
while(scanf("%d%d%d",&r,&g,&b)!=EOF&&r!=-1||g!=-1||b!=-1)
{
c[n].r=r;
c[n].g=g;
c[n].b=b;
m[n].r=t[0].r;
m[n].g=t[0].g;
m[n].b=t[0].b; for(i=1;i<16;i++)
{
if(equal(c[n],t[i]))
{
m[n].r=t[i].r;
m[n].g=t[i].g;
m[n].b=t[i].b;
break;
}
if(distance(c[n],t[i])<distance(c[n],m[n]))
{
m[n].r=t[i].r;
m[n].g=t[i].g;
m[n].b=t[i].b;
}
}
n++;
} for(i=0;i<n;i++)
{
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",c[i].r,c[i].g,c[i].b,m[i].r,m[i].g,m[i].b);
}
return 0;
}