C语言篇—Demo2

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;
}

到这就完成啦,一个很简单的游戏,但是却需要一定的逻辑思维能力~

猜你喜欢

转载自blog.csdn.net/weixin_43733988/article/details/86696773