【C语言】——小程序(猜凶手、猜名次、烧香问题)

1.猜凶手问题

具体代码实现如下:

//猜凶手
/*
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个
以下为四个嫌疑犯的供词:
A说:不是我;
B说:是C
C说:是D
D说:C在胡说
已知3个人说了真话,1个人说的是假话
现在请根据这些信息,写一个程序来确定到底谁是杀手

*/


int main(){
	int killer = 'a'; 
	for (killer = 'a'; killer <= 'd';killer++){
		if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3){
			printf("凶手是:%c\n", killer);
		}
	}
	return 0;
}

2.猜名次问题

具体代码实现如下:

//猜名次:5位运动员参加了10米跳水比赛,有人让他本预测比赛结果:
/*
A选手说:B第二,我第三
B选手说:我第二,E第三
C选手说:我第一,D第二
D选手说:C最后,我第三
E选手说:我第四,A第一
比赛结束后,每位选手都说对了一半,请编确定比赛名次
*/
int main(){
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	int e = 0;
	for (a = 1; a <= 5; a++){
		for (b = 1; b <= 5; b++){
			for (c = 1; c <= 5; c++){
				for (d = 1; d <= 5; d++){
					for (e = 1; e <= 5; e++){
						if (((b == 2) + (a == 3) == 1)&&
							((b == 2) + (e == 4)== 1)&&
							((c == 1) + (d == 2) == 1)&&
							((c == 5) + (d == 3) == 1)&&
							((e == 4) + (a == 1) == 1)){
							if (a * b * c * d* e == 120){
								printf("a = %d  b = %d  c = %d  d = %d  e = %d\n",a,b,c ,d,e);
							}
						}
					}
				}
			}
		}
	}
	return 0;
}

3.喝汽水问题

喝汽水,1瓶汽水1元钱,2个空瓶可以换1一瓶汽水,给20元,问可以喝到多少瓶汽水。     39瓶

具体代码实现如下:

//喝汽水问题
//喝汽水,1瓶汽水1元钱,2个空瓶可以换1一瓶汽水,给20元,问可以喝到多少瓶汽水。	 39瓶
int main(){
	int money =0;
	int total = 0;
	int empty = 0;

	printf("请输入您的钱数:");
	scanf("%d", &money);
	//解法1	
	if (money == 0){
		total = 0;
	}
	else{
		total = money * 2 - 1;
	}
	
	/*
	//解法2
	total += money;		   //买的汽水
	empty = money;

	while (empty >= 2){
		total += empty / 2;	//换回来的汽水,喝掉了
		empty = empty / 2 + empty % 2; //计算手里的空瓶
	}
	*/
	printf("可以喝到的汽水数total= %d\n",total);
	return 0;
}

4.烧香问题:有两根不均匀分布的香,每根香烧完的时间是1个小时,请用两根香确定一段15分钟的时间

 解题思路:从香的两端开始点燃,可确定一段30分钟的而时间
                 一根香燃烧的总时间是60分钟,可以用另一根香先确定30分钟,
                然后再把另一根香的两头都点燃,则此时再燃烧完就正好是15分钟了
                同时点两头就是半小时烧完
 具体步骤:
                 点燃第一根香的两端和第二根香的一段;
                 等第一根香燃尽以后,把第二根香的另一端点燃,
                从第一根香燃尽开始算起,知道第二根香燃尽,正好是15分钟
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值