有n个人围成一圈,顺序排号。从第1个人开始报数(从1~m报数),凡报到m的人退出圈子,依次输出退圈人原来的序号,每个数3个宽度,左对齐。
输入样例:
5
输出样例:
5 10 6 2 9 8 1 4 7 3
下头这个程序输出无数个0……
求纠错
#include <stdio.h>
#define N 10
void countout (int *p,int m);
int main(){
int a[N]={0},m;
scanf("%d",&m);
countout(a,m);
return 0;
}
void countout (int *p,int m)
{
int i,k=1,n=0;
for(i=1;i<=10;i++)
*p=i; //给10人赋值
do{
for(i=0;i<10;i++)
{ if(*(p+i)!=0)
continue; //值为0报数次数不计,k不加1
if(k%m==0)
{printf("%-3d",*(p+i));
*(p+i)=0; //出圈后值为0
n++; }
else k++; //报数次数
}
}while(n!=10);
}