1874971845 发表于 2021-5-25 21:48:44

问问 用c语言怎么写

约瑟夫环 (用C语言)
N个人围成一圈顺序编号,从1号开始按1、2、3......顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。 请按退出顺序输出每个退出人的原序号。
输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。
按退出顺序输出每个退出人的原序号,数据间以一个空格分隔,但行尾无空格。
输入7 3
输出3 6 2 7 5 1 4
(用c语言)

王之叹息 发表于 2021-5-25 21:48:45

如下:
#include <stdio.h>
#include <string.h>
int main()
{
    int p;
    int N;
    int a = {0};
    int i;
    int j;
    int k = 0;
    printf("请输入N和p\n");
    scanf("%d%d",&N,&p);
    for(i = 0; i < N; i++)
    {
      a = i+1;
    }
    while (N > 0)
    {
      i = (i + p - 1) % N;
      k++;
      printf("%d\t",a);
      for(j = i+1; j < N; j++)
      {
            a = a;
      }
      N--;
      }
    return 0;
}

1874971845 发表于 2021-5-25 23:36:24

王之叹息 发表于 2021-5-25 22:22
如下:

格式错误 显示

1874971845 发表于 2021-5-25 23:40:59

1874971845 发表于 2021-5-25 23:36
格式错误 显示

数据输出时还要有个换行

王之叹息 发表于 2021-5-26 07:03:25

1874971845 发表于 2021-5-25 23:40
数据输出时还要有个换行

大锅 那这也算解决了吧{:5_104:},我再给你送个鱼币(疯狂暗示){:5_109:}

王之叹息 发表于 2021-5-26 07:04:20



给我个最佳呗大锅


1874971845 发表于 2021-5-26 13:57:48

王之叹息 发表于 2021-5-26 07:04
给我个最佳呗大锅

给了 大哥我就是就是想知道咋改

王之叹息 发表于 2021-5-26 14:08:47

1874971845 发表于 2021-5-26 13:57
给了 大哥我就是就是想知道咋改

好吧,你再说清楚点,这不跟你举得例子基本一样吗,格式是哪里错误了,你的意思是按完7 3连回车都不按直接显示一串数字吗?

1874971845 发表于 2021-5-26 19:50:54

王之叹息 发表于 2021-5-26 14:08
好吧,你再说清楚点,这不跟你举得例子基本一样吗,格式是哪里错误了,你的意思是按完7 3连回车都不按直 ...

相隔一个空格 行尾无空格 但有一个换行

1874971845 发表于 2021-5-26 19:52:34

1874971845 发表于 2021-5-26 19:50
相隔一个空格 行尾无空格 但有一个换行

求求了

王之叹息 发表于 2021-5-26 20:11:43

1874971845 发表于 2021-5-26 19:52
求求了

第一个:
#include <stdio.h>
#include <string.h>
int main()
{
    int p;
    int N;
    int a = {0};
    int i;
    int j;
    int k = 0;
    printf("输入");
    scanf("%d%d",&N,&p);
    for(i = 0; i < N; i++)
    {
      a = i+1;
    }
    printf("输出");
    while (N > 0)
    {
      i = (i + p - 1) % N;
      k++;
      printf("%d ",a);
      for(j = i+1; j < N; j++)
      {
            a = a;
      }
      N--;
      }
    return 0;
}


第二个
#include <stdio.h>
#include <string.h>

int main()
{
    int p;
    int N;

    int a = {0};
    int i;
    int j;
    int k = 0;
    printf("输入");
    scanf("%d%d",&N,&p);
    printf("输出");
    for(i = 0; i < N; i++)
    {
      a = i+1;
    }
    while (N > 1)
    {
      i = (i + p - 1) % N;
      k++;
      printf("%d ",a);
      for(j = i+1; j < N; j++)
      {
            a = a;
      }
      N--;



       if(i == N)
      {
            i = 0;
      }
    }
    printf("\n%d", a);
    return 0;
}

再要不然直接把你需要的格式打出来

1874971845 发表于 2021-5-26 23:52:53

OK了 OK了 麻烦你了辛苦了
页: [1]
查看完整版本: 问问 用c语言怎么写