C++中for循环的简单应用

题目:谁在说谎?
一 个侦探逮捕了5个嫌疑人。这5个人因为供出的作案地点各有出入,进一步审讯了他们之后,他们分别提出了如下的申诉:
A:“5个人当中有1个人说了谎。”
B:“5个人当中有2个人说了谎。”
C:“5个人当中有3个人说了谎。”
D:“5个人当中有4个人说了谎。”
E:“5个人全说谎。”
问:谁在说谎?
思路:利用for循环对每种情况进行遍历,找出其中符合条件的情况。

#include <iostream>
using namespace std;

bool judge(int A, int B, int C, int D, int E) {
	//判断假设是否符合要求
	int sum = A + B + C + D + E;
	int t = 0;
	if (A == 0 && sum != 1) { return false; }
	if (B == 0 && sum != 2) { return false; }
	if (C == 0 && sum != 3) { return false; }
	if (D == 0 && sum != 4) { return false; }
	if (E == 0 && sum != 5) { return false; }
	return true;
}

void show(int A, int B, int C, int D, int E) {
	//打印最终结果
	if (A == 0) cout << "A没说谎"<<endl;
	else cout << "A说谎了"<<endl;
	if (B == 0) cout << "B没说谎"<<endl;
	else cout << "B说谎了"<<endl;
	if (C == 0)cout << "C没说谎"<<endl;
	else cout << "C说谎了"<<endl;
	if (D == 0)cout << "D没说谎"<<endl;
	else cout << "D说谎了"<<endl;
	if (E == 0) cout << "E没说谎"<<endl;
	else cout << "E说谎了"<<endl;
}
int main()
{
	int count = 0;
	int A, B, C, D, E;
	//用0表示没有说谎,用1表示说谎
	for (A = 0; A <= 1; A++) {
		for (B = 0; B <= 1; B++) {
			for (C = 0; C <= 1; C++) {
				for (D = 0; D <= 1; D++) {
					for (E = 0; E <= 1; E++) {
						if (judge(A, B, C, D, E)) {
							count++;
							cout << "第 " << count << " 种情况:" << endl;
							show(A, B, C, D, E);
							cout << "-----------------------------------------" <<endl;
						}
					}
				}
			}
		}
	}
	return 0;
}

结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值