规则
输入玩家数量,自动编号。输入死亡编号,根据死亡编号杀人。每杀死一人,接着后面的人重新编号,继续按编号杀人。
实现
1.输入数量并编号
printf("请输入参与人数:");
scanf("%d", &count);
for(int i = 0; i < count; i++){
num[i] = i+1;
}
其中,,定义count,num【】
int count = 0 ; //保存输入的人数
int num[50] = {}; //保存每个人的编号
2.输入要杀的人的编号
printf("请输入要杀的人的编号:");
scanf("%d", &killNum);
3.开始游戏
int current = 0; //记录当前报数的位置
int totalKilled = 0; //记录当前死亡人数
for(int i = 0; i < count; i++){
//i指向的这个人开始报数
if(num[i] != KILLED){
current++;
}
//判断当前编号是不是死亡编号
if(current == killNum){
printf("死亡编号%d \n", num[i]);
//杀掉
num[i] = KILLED;
//还原
current = 0;
totalKilled++;
//当还剩一个的时候就退出循环
if(totalKilled == count-1){
break;
}
}
//判断是否到末尾了
if (i == count-1){
i = -1;
}
}
其中num[i] != KILLED等多处用到了KILLED,也就是在前面进行了宏定义,也就是取别名
define,不仅可以为类型定义别名,也能为数值定义别名。为数值定义别名时达到了定义一个常量的效果。
使用#define的好处在于,一方面加强了代码的可读性,另一方面是增强可操作性,便于代码修改
(当多处使用define定义的别名时,别名对应的值需要修改时,可以直接在#define处快速修改)
4.输出活着的人的编号
for(int i = 0; i < count; i++){
if(num[i] != KILLED) {
printf("%d ", num[i]);
}
}