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中的执行语句运行完毕后,还要进行继续判断条件是否符合循环条件,根据判断的条件,返回执行语句或继续运行下面的程序。