有N个人围成一圈,顺序排号.从第一个人开始报号,(1-3报号)报到3的退出,问最后剩下的是几号?求大神帮忙看下哪个地方有错,我试了只有m=1的时候能输出10;其他的都没有输出.#includeusing namesp
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 09:37:42
有N个人围成一圈,顺序排号.从第一个人开始报号,(1-3报号)报到3的退出,问最后剩下的是几号?求大神帮忙看下哪个地方有错,我试了只有m=1的时候能输出10;其他的都没有输出.#includeusing namesp
有N个人围成一圈,顺序排号.从第一个人开始报号,(1-3报号)报到3的退出,问最后剩下的是几号?
求大神帮忙看下哪个地方有错,我试了只有m=1的时候能输出10;其他的都没有输出.
#include
using namespace std;
int main()
{
void ysf(int* p,int m,int n);
int a[10];
int i;
for(i=0;i
有N个人围成一圈,顺序排号.从第一个人开始报号,(1-3报号)报到3的退出,问最后剩下的是几号?求大神帮忙看下哪个地方有错,我试了只有m=1的时候能输出10;其他的都没有输出.#includeusing namesp
#include <stdio.h>
#define MAX 200
int fun(int a[],int n,int number) {
int i = 0,cnt = 0,m = n,res;
while(m) {
if(a[i]) ++cnt;
if(cnt == number) {
cnt = 0;
printf("%d ",a[i]);
res = a[i];
a[i] = 0;
--m;
}
i = (i + 1) % n;
}
printf("\n");
return res;
}
int main() {
int i,n,a[MAX],number = 3;
printf("n = ");
scanf("%d",&n);
if(n < 1 || n > MAX) n = MAX;
for(i = 0; i < n; ++i)
a[i] = i + 1;
printf("最后出列的是:%d\n",fun(a,n,number));
return 0;
}