请大佬帮忙看看这个约瑟夫环问题,不知道为什么我这个代码没有输出结果 呜呜

三花打豆豆 2021-11-27 19:48:40

这里是刚刚接触编程的菜鸟一枚

非常非常感谢!!

小孩报数问题。有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。

#include<stdio.h>
int main()
{
	int i,j,k,m,n,x,nout;
	int N,S,W;
	printf("请输入小孩数N:\n");
	scanf("%d",&N);
	int people[N+1];
	char result[N];
	char name[N];
	printf("请依次输入他们的名字:\n");
	for(m=0;m<N;m++)
	{
		scanf("%s",&name[m]);
	}
	printf("请输入W,S。输入时用','隔开\n");
	scanf("%d,%d",&W,&S); 
	for(i=0;i<N;i++)
	{
		people[i]=0;
	}
	k=0;
	x=W-1;
	nout=0;
	while(nout!=N)
	{
		x++;
		if(x=N+1)
		{
			x=0;
		}
		if(people[x]==0)
		{
			k++;
			if(k==S)
			{
				people[x]=1;
				nout++;
				k=0;
				for(j=0;j<N;j++)
				{
					result[j]=name[x];
				}
			}
		}
	}
	for(n=0;n<N;n++)
	{
		printf("%s",result[n]);
	}
	
	return 0;
	
} 

我的代码就一直卡在这步,没法输出结果 

请问是怎么回事捏

 

...全文
162 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂刷题中 2021-11-27
  • 打赏
  • 举报
回复

同学,你的代码有些地方出错了,也有些不合理,我已修改,请参考:

#include <stdio.h>

int main() {
    int i, j, k, m, n, x, nout;
    int N, S, W;
    printf("请输入小孩数N:\n");
    scanf("%d", &N);
    // int people[N + 1]; // 原式:N + 1是什么意思呢?
    int people[N];
    char result[N];
    char name[N];
    printf("请依次输入他们的名字:\n");
    for (m = 0; m < N; m++) {
        scanf("%s", &name[m]);
        people[m] = 0; // 在这里初始化,不需要多一个for循环
    }
    printf("请输入W,S。输入时用','隔开\n");
    scanf("%d,%d", &W, &S);
    // for (i = 0; i < N; i++) { // 原式:多余的循环
    //    people[i] = 0;
    // }
    k = 0;
    x = W - 1;
    nout = 0;
    while (nout != N) {
        x++;
        // if (x = N + 1) { // 原式:逻辑表达式错误了
        if (x >= N) { // 改为这个就可以了
            x = 0;
        }
        if (people[x] == 0) {
            k++;
            if (k == S) {
                people[x] = 1;
                k = 0;
//                for (j = 0; j < N; j++) { // 不明白想表达什么?
//                    result[j] = name[x];
//                }
                result[nout++] = name[x];
            }
        }
    }
    for (n = 0; n < N; n++) {
        // printf("%s", result[n]); // 原式:你定义的是char数组!
        printf("%c", result[n]);
    }

    return 0;

}

三花打豆豆 2021-11-28
  • 举报
回复
@疯狂刷题中 非常感谢大佬的修改与指正!☺️ 感激不尽
疯狂刷题中 2021-11-28
  • 举报
回复
@三花打豆豆 我还是小学生
三花打豆豆 2021-11-28
  • 举报
回复
@疯狂刷题中 哇!那你也太厉害了
2条回复

69,430

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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