3-2

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';
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值