有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号

xuxinang 2014-11-01 08:20:37
#include <stdio.h>
int a[n],*p=a,i,n;
int main()
{
void game(int*);
printf("input length:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
*(p+i)=i+1;
game(a);
printf("winner:\n%d",*p);
}

void game(int a[n])
{
int j,k,t;
for(i=0;i<n;i++)
{
if(i%3==0)
*(p+i)=0;
for(j=0,k=0;j<n;j++)
if(*(p+j)!=0)
*(p+(k++))=*(p+j);
*(p+k)='\0';
for(j=0;j<n&&*(p+j)!='\0';j++)
t=j;
if(t>1)
game(a[n]);
}
...全文
1694 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-11-02
  • 打赏
  • 举报
回复
//假设有n个人团团围做,从第1个人开始数数,数到第m个人时候,第m个人出列,
//然后继续从1开始数数,数到第m个人退出
#include <stdio.h>
#include <conio.h>
int i,k,t;
int n,m;
static char f[1001];//0该座位未出圈,1该座位已出圈
void main() {
    while (1) {
        printf("Input n m(1000>=n>=m>=1):");
        fflush(stdout);
        rewind(stdin);
        if (2==scanf("%d%d",&n,&m)) {
            if (1000>=n && n>=m && m>=1) break;
        }
    }
    t=0;//已出圈总人数
    i=1;//座位编号
    k=1;//当前要数的数
    while (1) {
        if (0==f[i]) {
            if (m==k) {
                t++;
                f[i]=1;
                printf("%3d ",i);
                if (0==t%10) printf("\n");
                if (t>=n) break;
            }
            k++;if (k>m) k=1;
        }
        i++;if (i>n) i=1;
    }
    cprintf("Press any key ...");
    getch();
}
百曉生 2014-11-02
  • 打赏
  • 举报
回复
引用 2 楼 xuxinang 的回复:
是否可以从scanf函数中获取数组长度?
C99的标准是可以的,gcc好像以前就支持
铖邑 2014-11-02
  • 打赏
  • 举报
回复
#include <stdio.h> #include <stdlib.h> int *a,*p,i,n; int main() { void game(int []); printf("input length:\n"); scanf("%d",&n); a=(int *)malloc(n); p=a; for(i=0;i<n;i++) *(p+i)=i+1; game(a); printf("winner:\n%d",*p); free(a); return 0; } void game(int a[]) { int j,k,t; for(i=0;i<n;i++) { if(i%3==0) *(p+i)=0; for(j=0,k=0;j<n;j++) if(*(p+j)!=0) *(p+(k++))=*(p+j); *(p+k)='\0'; for(j=0;j<n&&*(p+j)!='\0';j++) t=j; if(t>1) game(a); } }
xuxinang 2014-11-01
  • 打赏
  • 举报
回复
是否可以从scanf函数中获取数组长度?
羽飞 2014-11-01
  • 打赏
  • 举报
回复
施主,你的基础不行啊 int a[n],*p=a,i,n; #define n 50 int a[n],*p=a,i; 这样才可以使用n 还有,把game的定义提到main前面去,或者在main前面加个声明。

64,664

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧