帮我写一个c语言,已知ABCDEFG共7个人,围成一圈从1开始报数,输入正整数N,输出报数为N的人。
时间: 2024-05-09 19:18:17 浏览: 15
好的,我可以为您编写一个求解的程序,具体代码如下:
```
#include<stdio.h>
#define n 7
int main()
{
int a[n], i, j, k, m;
for (i = 0; i < n; i++) //初始化数组
{
a[i] = i + 1;
}
printf("请输入一个正整数N:");
scanf("%d", &k);
k--; //数组下标从0开始,减1对应输入的数
m = n; //m表示还剩下几个人报数
j = n - 1; //从最后一个人开始报数
while (m > 1) //当只剩下一个人时结束循环
{
if (a[j] != 0) //如果当前这个人还没有出列
{
k--; //k表示还需要报数的次数
}
if (k == 0) //如果已经报数N次了
{
a[j] = 0; //这个人出列
m--; //剩下的人数减1
k = n - m + 1; //重新开始报数,相当于从下一个人开始报数
}
j++; //指向下一个人
if (j == n) //如果已经到了最后一个人,则指向第一个人
{
j = 0;
}
}
for (i = 0; i < n; i++) //查找剩下的那个人
{
if (a[i] != 0)
{
printf("报数为%d的人是%d号\n",k, a[i]);
}
}
return 0;
}
```
该程序的思路是:将7个人的编号存入一个数组中,从1开始报数,当报数到N时,该人出列,再从下一个人开始重新报数,直到只剩下一个人为止。最后输出剩下那个人的编号。
如果您有任何其他问题,欢迎向我提出。