3-2
(1/1 分数)
题目描述
P3.2 四个人比饭量小,每人说了一句话。
A说:不是我。
B说:是C。
C说:是D。
D说:他胡说。
已知这四个人只有1人说了真话。请你编程找出谁是饭量最小的人,输出相应的大写字母。
只输出大写字母
样例输入
无样例输出
B代码框
#include<iostream>
using namespace std;
int main(){
for(char eating_less_man='A';eating_less_man<='D';eating_less_man++){
int count=0;
if(eating_less_man!='A') count++;
if(eating_less_man=='C') count++;
if(eating_less_man=='D') count++;
if(eating_less_man!='D') count++;
if(count==1){
cout<<eating_less_man<<endl;
break;
}
}
return 0;
}
#include <iostream>
using namespace std;
class Student{
char _theMan;
bool _isEqual;
public:
Student(bool isEqual,char theMan):_isEqual(isEqual),_theMan(theMan){}
bool operator()(char thisMan);
};
bool Student::operator()(char thisMan){
return _isEqual?(thisMan==_theMan):(thisMan!=_theMan);
}
char solve(int number,int correct,Student*students);
int main(){
Student student[]={Student(false,'A'),
Student(true,'C'),
Student(true,'D'),
Student(false,'D')};
char theMan=solve(4,1,student);//4个同学,3句真话
if(theMan!='\0'){
cout<<"It is "<<theMan<<endl;
}else{
cout<<"Noooooooop!"<<endl;
}
return 0;
}
char solve(int number,int correct,Student*students){
for(int i=0;i<number;i++){
char thisMan='A'+i;
int count=0;
for(int j=0;j<number;j++)
count+=students[j](thisMan);
if(count==correct)
return thisMan;
}
return '\0';
}