//数学模型中包括多个变量的例子:称硬币 #include<stdio.h> #include<string.h> char left[3][7],right[3][7],result[3][7]; bool isHeavy(char); bool isLight(char); int main() { int n; char c; scanf("%d",&n); while(n>0) { for(int i=0;i<3;i++) scanf("%s%s%s",left[i],right[i],result[i]); for(c='A';c<='L';c++) { if(isLight(c)) { printf("%c is the counterfeit coin and it is light. ",c); break; } if(isHeavy(c)) { printf("%c is the counterfeit coin and it is heavy. ",c); break; } } n--; } return 0; } bool isLight(char x) { int i; for(i=0;i<3;i++) { switch(result[i][0]) { case 'u':if(strchr(right[i],x)==NULL) return false; break; case 'e':if(strchr(right[i],x)!=NULL||strchr(left[i],x)!=NULL) return false; break; case 'd':if(strchr(left[i],x)==NULL) return false; break; } } return true; } bool isHeavy(char c) { int i; for(i=0;i<3;i++) { switch(result[i][0]) { case 'u':if(strchr(left[i],c)==NULL) return false; break; case 'e':if(strchr(left[i],c)!=NULL||strchr(right[i],c)!=NULL) return false; break; case 'd':if(strchr(right[i],c)==NULL) return false; break; } } return true; }