【C语言练习(20)—酒桌小游戏】

C语言练习(20)


题目

  • 酒桌小游戏,假如有八个人一起开始报数喝酒,规则是从第一个人开始报数,报3的人获得免喝令牌退出本次游戏,剩余的人接着报数,问最后一个喝酒的是第几个?

问题解析

  • 假如有8个人喝酒,绿色表示第一圈之后1 3 6 退出,还剩2 4 5 7 8,第二圈之后2 5退出,还剩 4 7 8 ,经过第三、四圈后还剩7。
    在这里插入图片描述

  • 代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int len = 0;
	int arr[100] = { 0 };
	int people = 0;
	int baoshu = 0;
	int count = 8;
	len = sizeof(arr) / sizeof(arr[1]);
	for (int i = 1; i <= 8; i++)
	{
		arr[i] = 1;
	}
	for (int i = 1; i <= 8; i++)
	{
		printf("%-4d", arr[i]);
	}
	printf("\n");
	printf("淘汰的次序:");
	while(count>0)
	{
		people++;
		baoshu++;

		while (arr[people] == 0)
		{
			people++;
			if (people > 8)
			{
				people = 1;
			}
		}
		if (baoshu == 3)
		{
			arr[people] = 0;
			printf("%-4d",people);
			count--;
			baoshu = 0;
		}
	}
	return 0;
}

结果

在这里插入图片描述

总结

  • while与if的区别
    while语句属于循环语句,在判断时如果条件为true,则会继续判断,直到false为止,即会进行多次判断(除非一开始条件就是错的)
    if语句属于条件判断语句,如果条件是true,则继续执行,为false则跳出语句不执行,只会进行单次判断
    while与if语句的最大的相同点是都有至少一步的判断。
    最大的不同点是:if语句运行完毕后,接着运行下面的语句。而While中的执行语句运行完毕后,还要进行继续判断条件是否符合循环条件,根据判断的条件,返回执行语句或继续运行下面的程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值