这道题目很简单,考察的就是结构体数组的应用,直接贴代码了
#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;
}