问题描述:给你N个站成一列的士兵和一个整数M,士兵编号是1-'N。每次士兵按编号从小到大的顺序依次报数,如果报的数不是M的倍数,则该士兵出列这样重复几次直到士兵数量小于等于M为止。'问最后剩下的士兵有几个,他们的变化分别是多少?用c语言实现
时间: 2024-02-25 19:53:03 浏览: 36
好的,下面是一个简单的C语言代码实现,用来解决这个问题:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, m, i, j, k, count;
int *soldier;
printf("请输入士兵的数量:");
scanf("%d", &n);
printf("请输入报数的倍数:");
scanf("%d", &m);
soldier = (int *)malloc(n * sizeof(int)); // 动态分配数组空间
for (i = 0; i < n; i++)
{
soldier[i] = i + 1; // 初始化士兵的编号
}
i = 0; // 从第一个士兵开始报数
j = n; // 士兵总数为n
k = 0; // 记录出列的士兵数量
while (j > m)
{
count = 0;
while (count != m)
{
if (soldier[i] > 0)
{
count++; // 报数
}
if (count != m)
{
i++; // 换下一个士兵
}
if (i == n)
{
i = 0; // 若到了队尾,则重新从头开始报数
}
}
soldier[i] = -1; // 标记出列的士兵
i++;
if (i == n)
{
i = 0; // 若到了队尾,则重新从头开始报数
}
k++; // 记录出列的士兵数量
j--; // 更新士兵总数
}
printf("剩下的%d个士兵的编号为:", j);
for (i = 0; i < n; i++)
{
if (soldier[i] > 0)
{
printf("%d ", soldier[i]);
}
}
printf("\n");
free(soldier); // 释放数组空间
return 0;
}
```
这个代码使用了动态分配数组空间和循环队列的思想来实现士兵的出列操作,并且记录了出列的士兵数量和剩余的士兵编号。你可以根据自己的需要进行修改和优化。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)