甲:乙说谎 ,乙:丙说谎,丙:甲乙都说谎
int main(int argc, const char *argv[]) {
int a, b, c;
for (a = 0; a <= 1; ++a) {
for (b = 0; b <= 1; ++b) {
for (c = 0; c <= 1; ++c) {
if (((a && !b) || (!a && b)) && ((b && !c) || (!b && c)) && ((c && a + b == 0) || (!c && a + b != 0))) {
printf("甲 told a %s\n", a ? "true" : "line");
printf("乙 told a %s\n", b ? "true" : "line");
printf("丙 told a %s\n", c ? "true" : "line");
}
}
}
}
return 0;
}
结果:
思考:
假如是其他的判断规则呢,根据开放封闭原则,或者面向对象,如何进行更好的封装以便于维护?