Demo2—杀人游戏
要求:
1.程序运行起来,提示用户输入游戏参与的人数,假设:7
2.依次对七个人进行编号:1 2 3 4 5 6 7
3.提示用户输入要杀的人的编号,假设:3
4.开始报数,报到编号为3的就杀掉
5.输出最后一个被杀掉的人的编号
分步编写代码
1.提示用户输入游戏参与人数
需要定义一个变量用来接收用一个变量存储这个数据:
printf("请输入游戏参与的人数:");
int num = 0;
scanf("%d", &num);
2.编号
a.每个人的编号以数组的形式存储,定义一个空间足够大的数组:
int a[100] = {};
b.对每个人进行编号:
for (int i = 0; i < num; i++){
a[i] = i+1;
}
3.提示用户输入要杀的人的编号
需要定义一个变量用来接收用一个变量存储这个数据:
printf("请输入要杀的人的编号:");
int killnumber = 0;
scanf("%d", &killnumber);
4.开始游戏
a.定义一个报数器用来记录此时报数到几:
int count = 0;
b.开始报数,但报数的条件是至少有一个人活着
每当杀死一个人时,这个人在数组中的编号就用一个无关值表示,这里统一用-1表示
而杀死一个人的条件是这个人所报的数等于killnumber
for (int i = 0; i < num; i++) {
if (a[i] != -1){
count ++;
if (count == killNumber){
printf("%d ", a[i]);
a[i] = -1;
}
}
}
c.一轮报数结束后要将报数器归零
for (int i = 0; i < num; i++) {
if (a[i] != -1){
count ++;
if (count == killNumber){
a[i] = -1;
count = 0;
}
}
}
d.输出最后一个被杀掉的人的编号
杀最后一个人之前杀掉num-1个人:
int totalKilledNumber = 0;
for (int i = 0; i < num; i++) {
if (a[i] != -1){
count ++;
if (count == killNumber){
a[i] = -1;
totalKilledNumber++;
if (totalKilledNumber == num-1) {
printf("%d ", a[i]);
break;
}
count = 0;
}
if (i == num - 1){
i = -1;
}
}
}
最终代码
#include <stdio.h>
int main(int argc, const char * argv[]) {
int num = 0;
int a[100] = {};
int killNumber = 0;
printf("请输入游戏参与人数:");
scanf("%d", &num);
for (int i = 0; i < num; i++) {
a[i] = i+1;
}
printf("请输入要杀的人的编号:");
scanf("%d", &killNumber);
int count = 0;
int totalKilledNumber = 0;
for (int i = 0; i < num; i++) {
if (a[i] != -1){
count ++;
if (count == killNumber){
printf("%d ", a[i]);
a[i] = -1;
totalKilledNumber++;
if (totalKilledNumber == num-1) {
break;
}
count = 0;
}
}
if (i == num - 1){
i = -1;
}
}
return 0;
}
到这就完成啦,一个很简单的游戏,但是却需要一定的逻辑思维能力~