鱼C论坛

 找回密码
 立即注册
查看: 3874|回复: 11

[已解决]问问 用c语言怎么写

[复制链接]
发表于 2021-5-25 21:48:44 | 显示全部楼层 |阅读模式
3鱼币
约瑟夫环 (用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
如下:
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.     int p;
  6.     int N;
  7.     int a[3000] = {0};
  8.     int i;
  9.     int j;
  10.     int k = 0;
  11.     printf("请输入N和p\n");
  12.     scanf("%d%d",&N,&p);
  13.     for(i = 0; i < N; i++)
  14.     {
  15.         a[i] = i+1;
  16.     }
  17.     while (N > 0)
  18.     {
  19.         i = (i + p - 1) % N;
  20.         k++;
  21.         printf("%d\t",a[i]);
  22.         for(j = i+1; j < N; j++)
  23.         {
  24.             a[j-1] = a[j];
  25.         }
  26.         N--;
  27.       }
  28.     return 0;
  29. }
复制代码

最佳答案

评分

参与人数 1鱼币 +5 收起 理由
王之叹息 + 5 无条件支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-25 21:48:45 | 显示全部楼层    本楼为最佳答案   
如下:
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.     int p;
  6.     int N;
  7.     int a[3000] = {0};
  8.     int i;
  9.     int j;
  10.     int k = 0;
  11.     printf("请输入N和p\n");
  12.     scanf("%d%d",&N,&p);
  13.     for(i = 0; i < N; i++)
  14.     {
  15.         a[i] = i+1;
  16.     }
  17.     while (N > 0)
  18.     {
  19.         i = (i + p - 1) % N;
  20.         k++;
  21.         printf("%d\t",a[i]);
  22.         for(j = i+1; j < N; j++)
  23.         {
  24.             a[j-1] = a[j];
  25.         }
  26.         N--;
  27.       }
  28.     return 0;
  29. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-25 23:36:24 | 显示全部楼层

格式错误 显示
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-25 23:40:59 | 显示全部楼层

数据输出时还要有个换行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 07:03:25 | 显示全部楼层
1874971845 发表于 2021-5-25 23:40
数据输出时还要有个换行

大锅 那这也算解决了吧,我再给你送个鱼币(疯狂暗示)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 07:04:20 | 显示全部楼层


给我个最佳呗大锅


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 13:57:48 | 显示全部楼层

给了 大哥我就是就是想知道咋改
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 14:08:47 | 显示全部楼层
1874971845 发表于 2021-5-26 13:57
给了 大哥我就是就是想知道咋改

好吧,你再说清楚点,这不跟你举得例子基本一样吗,格式是哪里错误了,你的意思是按完7 3连回车都不按直接显示一串数字吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

相隔一个空格 行尾无空格 但有一个换行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 19:52:34 | 显示全部楼层
1874971845 发表于 2021-5-26 19:50
相隔一个空格 行尾无空格 但有一个换行

求求了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 20:11:43 | 显示全部楼层

第一个:
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.     int p;
  6.     int N;
  7.     int a[3000] = {0};
  8.     int i;
  9.     int j;
  10.     int k = 0;
  11.     printf("输入");
  12.     scanf("%d%d",&N,&p);
  13.     for(i = 0; i < N; i++)
  14.     {
  15.         a[i] = i+1;
  16.     }
  17.     printf("输出");
  18.     while (N > 0)
  19.     {
  20.         i = (i + p - 1) % N;
  21.         k++;
  22.         printf("%d ",a[i]);
  23.         for(j = i+1; j < N; j++)
  24.         {
  25.             a[j-1] = a[j];
  26.         }
  27.         N--;
  28.       }
  29.     return 0;
  30. }
复制代码


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

  3. int main()
  4. {
  5.     int p;
  6.     int N;

  7.     int a[3000] = {0};
  8.     int i;
  9.     int j;
  10.     int k = 0;
  11.     printf("输入");
  12.     scanf("%d%d",&N,&p);
  13.     printf("输出");
  14.     for(i = 0; i < N; i++)
  15.     {
  16.         a[i] = i+1;
  17.     }
  18.     while (N > 1)
  19.     {
  20.         i = (i + p - 1) % N;
  21.         k++;
  22.         printf("%d ",a[i]);
  23.         for(j = i+1; j < N; j++)
  24.         {
  25.             a[j-1] = a[j];
  26.         }
  27.         N--;



  28.        if(i == N)
  29.         {
  30.             i = 0;
  31.         }
  32.     }
  33.     printf("\n%d", a[i]);
  34.     return 0;
  35. }
复制代码


再要不然直接把你需要的格式打出来
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-26 23:52:53 | 显示全部楼层
OK了 OK了 麻烦你了  辛苦了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-28 11:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表