这个C++程序怎么编?

来源:百度知道 编辑:UC知道 时间:2024/06/25 22:10:16
谁做的好事?
四人中有一人做了好事没有留名,表扬信来后,问是谁做的好事,四人说道:
A:不是我
B:是C做的
C:是D做的
D:他胡说。
已知有三人说真话,一人说了假话,请问谁做的好事。

分析提示:
转换为关系表达式
A: thisman!=‘A’
B: thisman==‘C’
C: thisman==‘D’
D: thisman!=‘D’
假设为A即 thisman==‘A’,则代入上面四句话看几个为真几个为假。依次将 thisman==‘B’ 、‘C’、’D’ 代入看上面四句话的真假.

练习使用数据类型的强制转换.
答案知道,关键是程序怎么写啊?
再加分~~~~~

核心算法:
for(int i=0;i<=4;i++)
{
thisman=64+k;
sum=(thisman!='A')+(thisman=='C')+(thisman=='D')+(thisman!='D');
if(sum==1)
{
char ch=thisman;//强制转换为字符
cout<<"this man is "<<ch<<endl;
break;
}
}

b c 肯定有一个人说了假话 答案是c

分析: C:是D做的 为真话,则D说了假话
D:他胡说 为真话,则C说了假话
所以 C,D里面一定有个一人说了真话,一个假话,要三个人说得是真话,所以 A,B 只能说真话了,再看看 C, D那个能够跟A,B真话符合,
显然答案是:C说了假话。

给:

#include <iostream>
using namespace std;

int main()
{
int flag=0;
char thisman;

for(thisman='A';thisman<='D';thisman++)
{//thisman='A','B','C','D'表示A,B,C,D四人
if( (thisman!='A')+(thisman=='C')+(thisman=='D')+(thisman!='D')==3 )
{
cout<<"做好事者是:"