报数问题,用c语言编写程序

来源:百度知道 编辑:UC知道 时间:2024/05/10 15:07:24
用c语言编写程序。有n个人a1,a2…,an围成一圈报数,每报到m的人就出队,请问最后一个出队的人编号是多少。用数组编写一个函数模拟该过程。

#include <stdio.h>
void main()
{
int i,j,count=0;
int cave[100],n,m;
printf("input n:");
scanf("%d",&n);
int k=n;
printf("input m:");
scanf("%d",&m);
for(j=0;j<n;j++)
{
cave[j]=j+1;
}
j=0;
while(n>1)
{

if(cave[j]!=0)
{
count++;
if(count==m)
{
cave[j]=0;
n--;
count=0;
}
}
j=(j+1)%k;//k is the n at first
}
for(i=0;i<k;i++)
{
if(cave[i]!=0)
printf("the last one is %d\n",cave[i]);

}

}

这个程序不难
看看我写的行吧

#include <stdio.h>
#include <conio.h>
int fun(int n)
{
int i = 0, p, tmp;

while( ++i <= n )
{
p = i * 3;
while (p > n)
p = p - n + (p - n - 1)/(3 - 1); <