一道c语言逻辑题目,求大神帮一下!

第九题怎么做,思路,和主要关键程序写一下。。。谢谢了
2024年12月04日 03:47
有2个网友回答
网友(1):

逐一验证即可,伪代码

实验代码:

#include

int main() {

int res;  //res记录做好事的人,1表示A,2表示B,3表示C,4表示D

//假设A说的是真的,验证:

res = 4;

if (res != 4 && res != 2)

{

printf("A is true!");

return 0;

}

//假设B说的是真的,验证:

res = 1;

if (res != 2 && res == 4) {

printf("B is true!");

return 0;

}

//假设C说的是真的,验证:

res = 1;

if (res != 4 && res == 4) {

printf("C is true!");

return 0;

}

//假设D说的是真的,验证:

res = 1;

if (res != 4 && res != 2) {

printf("D is true!");

return 0;

}

}

实验结果

网友(2):

#include

int main()

{ int i,a[4];

  for(a[0]=0;a[0]<2;a[0]++)        //四重循环,穷举所有可能

  for(a[1]=0;a[1]<2;a[1]++)

  for(a[2]=0;a[2]<2;a[2]++)

  for(a[3]=0;a[3]<2;a[3]++)

  if((a[0]==0)+(a[3]==1)+(a[1]==1)+(a[3]==0)==1&&a[0]+a[1]+a[2]+a[3]==1)

//检测如果四人中只有一人说真话,且只有一人做了好事

    for(i=0;i<3;i++)        //检查是谁做了好事

      if(a[i])printf("%c did it.\n",'A'+i);        //输出结论

  return 0;

}