一道逻辑推理的C语言问题

题目为:四位同学中一位同学做了好事。
A说:不是我。
B说:是C。
C说:是D。
D说:他胡说。
已知四位同学中三位同学说真话,一位同学说假话,根据以上信息找出做了好事的人。
我写的代码如下:
#include
int main()
{
int sum;
char thisman;
thisman='A';
for(thisman=65;thisman<69;thisman++)
{
sum=((thisman!='A')+(thisman=='C')+(thisman=='D')+(thisman!='D'));
if (sum==3)
{
printf("做好事的是%c",thisman);
}
}
return 0;
}

请教下有没有哪里出了问题,十分感谢!
PS:老师说我程序写死了....不是很懂....

5个回答

我觉得你的代码应该没有问题。
如果要强行理解老师所说的“写死了”,我的理解是:他可能想说你的代码只能适用于这一道具体的题,若其中一个人修改了表达,或者新加了一个人,
这段代码的主程序都得改,能不能适当放松条件,做出接口的形式,让他能适应各种变化。这是我的**强行理解**,不知道对不对,仅供参考。

 #include <stdio.h>
#define A 0
#define B 1
#define C 2
#define D 3

int main()
{
    int i;
    int true_num = 0;
    for(i=0;i<4;i++)
    {
        if(A!=i)true_num++;
        if(C==i)true_num++;
        if(D==i)true_num++;
        if(D!=i)true_num++;
        if(true_num == 3)
        {
            printf("The man do the good thing is :%c\n",'A'+i);
            break;
        }
        true_num = 0;

    }   



    return 0;
}
sinat_25448971
RealDAN___ 我们的题目要求用到逻辑表达式的值。我的思路是这样的,假设做好事的是A,把四个人说的话用逻辑表达式写出来,并计算四个表达式的和,如果为3,就表示三个人说了真话,一个人说了假话,符合题目条件,利用for循环依次假设B做了好事、C做了好事、D做了好事。
接近 4 年之前 回复

准确地说,你没有理解这道题判断的过程……最笨的方法就是一个一个假设,从A做好事假设到D,随手写了个,你看看。
#include
#define A 0
#define B 1
#define C 2
#define D 3

int main()
{
int i;
int true_num = 0;
for(i=0;i<4;i++)
{
if(A!=i)true_num++;
if(C==i)true_num++;
if(D==i)true_num++;
if(D!=i)true_num++;
if(true_num == 3)
{
printf("The man do the good thing is :%c\n",'A'+i);
break;
}
true_num = 0;

}   



return 0;

}

老师只是说你写死了而已,没说你错了。没关系的。

 #include <stdio.h>
int main()
{
 int s,a,b,c,d;         /*变量s代表做好事的同学,abcd代表ABCD同学的说法的正确性*/
 for(s='A';s<='D';s++)  /*穷举可能性,用字符'A'--'D'代表4个同学*/
 {
  a=(s!='A');          /*A说不是我: s!='A'*/
  b=(s=='C');          /*B说是C : s=='C'*/
  c=(s=='D');          /*C说是D: s=='D'*/
  d=(s!='D');          /*D说C胡说: s!='D'*/
  if((a+b+c+d)==3)     /*如果有3个人说的是真的就结束循环并输出*/
  {
   printf("做好事的同学是:%c\n",s);
   break;
  }
 }
 return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐