这道题目很简单,考察的就是结构体数组的应用,直接贴代码了
#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) ",c[i].r,c[i].g,c[i].b,m[i].r,m[i].g,m[i].b); } return 0; }