
请教一道编程题,使用java编写,简短最好,谢谢!
清华附中有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。A说:不是我。B说:是C。C说:是D。D说:他胡说。已知三个人说的是真话,一个人说的...
清华附中有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。
A说:不是我。
B说:是C。
C说:是D。
D说:他胡说。
已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。 展开
A说:不是我。
B说:是C。
C说:是D。
D说:他胡说。
已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。 展开
展开全部
public class Test13 {
public static void main(String[] args) {
int a, b, c, d; //4位同学
boolean[] done = new boolean[]{true, false}; //每位同学的做好事情况,只有1人做好事
boolean A, B, C, D; //每位同学说话的真假情况,3人说真话,1人说假话
int len = done.length;
int count_done; //做好事的人数
int count_say; //话真话的人数
for(a=0; a<len; a++)
for(b=0; b<len; b++)
for(c=0; c<len; c++)
for(d=0; d<len; d++){
A = !done[a];
B = done[c];
C = done[d];
D = !C;
count_say = 0;
if(A == true)
count_say++;
if(B == true)
count_say++;
if(C == true)
count_say++;
if(D == true)
count_say++;
count_done = 0;
if(done[a] == true)
count_done++;
if(done[b] == true)
count_done++;
if(done[c] == true)
count_done++;
if(done[d] == true)
count_done++;
if(count_say == 3 && count_done == 1){
System.out.println("Say : ");
System.out.println("A : " + A + "\tB : " + B + "\tC : " + C + "\tD : " + D);
System.out.println("Done : ");
System.out.println("A : " + done[a] + "\tB : " + done[b] + "\tC : " + done[c] + "\tD : " + done[d]);
}
}
}
}
运行结果:
Say :
A : true B : true C : false D : true
Done :
A : false B : false C : true D : false
public static void main(String[] args) {
int a, b, c, d; //4位同学
boolean[] done = new boolean[]{true, false}; //每位同学的做好事情况,只有1人做好事
boolean A, B, C, D; //每位同学说话的真假情况,3人说真话,1人说假话
int len = done.length;
int count_done; //做好事的人数
int count_say; //话真话的人数
for(a=0; a<len; a++)
for(b=0; b<len; b++)
for(c=0; c<len; c++)
for(d=0; d<len; d++){
A = !done[a];
B = done[c];
C = done[d];
D = !C;
count_say = 0;
if(A == true)
count_say++;
if(B == true)
count_say++;
if(C == true)
count_say++;
if(D == true)
count_say++;
count_done = 0;
if(done[a] == true)
count_done++;
if(done[b] == true)
count_done++;
if(done[c] == true)
count_done++;
if(done[d] == true)
count_done++;
if(count_say == 3 && count_done == 1){
System.out.println("Say : ");
System.out.println("A : " + A + "\tB : " + B + "\tC : " + C + "\tD : " + D);
System.out.println("Done : ");
System.out.println("A : " + done[a] + "\tB : " + done[b] + "\tC : " + done[c] + "\tD : " + done[d]);
}
}
}
}
运行结果:
Say :
A : true B : true C : false D : true
Done :
A : false B : false C : true D : false
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询