2301_80242692 2023-10-16 09:48 采纳率: 0%
浏览 12

关于c语言的约瑟夫环问题输入后没有输出

img


这是用数组来解决约瑟夫环问题,但是我输入后没有输出结果,是死循环了吗?求各位专家帮我看看吧。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-16 12:48
    关注

    【以下回答由 GPT 生成】

    可以帮你分析一下这段代码,看看是否存在死循环的问题。

    首先,我们来检查一下输入输出的部分,即scanf和printf函数。从代码中可以看出,你使用了两个%d来接收输入值n和k,并使用了一个循环来输出结果。在这方面,代码是正确的。

    接下来,我们来看循环的部分。代码中使用了一个while循环来解决约瑟夫环问题。循环的条件是number>1,即当总人数大于1时继续循环。在循环体内部,我们可以看到有两个地方将number减少了1,所以理论上可以保证在合适的条件下,循环会结束。

    在while循环的内部,有一些变量的变化。count用于计数,ps用于指示当前位置,number用于表示还存活的人数。通过观察,可以发现以下问题:

    1. 在每次循环中,变量count和ps都是在一定条件下发生变化的,但number的变化是在所有条件下都会发生的。所以在某些情况下,循环会陷入一个无法结束的状态。

    2. 在变量count等于k的情况下,虽然进行了一系列的变化(例如将a[ps]置为0,重新给count赋值等),但并没有对number进行变化。我们需要在这种情况下减少number的值。

    所以,为了解决可能的死循环问题和确保约瑟夫环问题的正确解决,建议对代码做出以下修改:

    #include <stdio.h>
    
    int a[10011]={17};
    int main(){
        int n, i, k, count=1, ps=0, number;
        scanf("%d%d", &n, &k);
        number = n;
        while(number>1){
            if(a[ps]!=0){
                if(count!=k){
                    count = count+1;
                    ps = (ps+1) % n;
                }
                else{
                    a[ps]=0;
                    ps=(1+ps)%n;
                    count=1;
                    number=number-1;
                }
            }
            ps=(1+ps)%n;
        }
    
        for(i=0; i<n; i++){
            if(a[i]!=0){
                printf("%d ", i+1);
            }
        }
        return 0;
    }
    

    在修改后的代码中,我们在每次count等于k的条件下,对number进行了减少。此外,将ps=(1+ps)%n的语句放在了if-else语句的外部,这样可以保证在任何情况下都会更新ps的值。

    建议你重新运行修改后的代码,应该可以得到正确的输出结果。如果你仍然遇到问题,请提供更多信息,我将尽力帮助你解决。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月16日

悬赏问题

  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物