| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1554 人关注过本帖
标题:这哪儿错了,不走
取消只看楼主 加入收藏
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
结帖率:100%
收藏
 问题点数:0 回复次数:4 
这哪儿错了,不走
程序代码:
#include<stdio.h>
#define N 13
struct person
{
    int number;
    int nextp;
}link[N+1];

int main()
{
    int i, count, h;
    for (i = 1; i < N; i++)
    {
        if (i == N)
            link[i].nextp = 1;
        else
        {
            link[i].nextp = i + 1;
            link[i].number = i;
        }
    }
    printf("\n");
    h = N;
    count = 0;
    printf("sequence that person leave the circle:\n");
    while (count < N - 1)
    {
        i = 0;
        while (i != 3)
        {
            h = link[h].nextp;
            if (link[h].number)
                i++;
        }
        printf("%4d", link[h].number);
        link[h].number = 0;
        count++;
    }
    printf("\nthe last one is:\n");
    for (i = 1; i < N; i++)
        if (link[i].number)
            printf("%3d\n", link[i].number);
    return 0;
}
搜索更多相关主题的帖子: count number person 
2017-02-21 09:59
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
没人会吗
2017-02-21 11:40
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
以下是引用wp231957在2017-2-21 11:59:26的发言:

我对链表不是很懂

但是你循环体里面的  if (link[h].number)
                i++;
这句代码肯定没有机会呗执行  所以该循环是一个死循环

说不定改一改就能执行了呢
2017-02-21 12:06
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
以下是引用炎天在2017-2-21 12:25:37的发言:

#include<stdio.h>
#define N 13
struct person
{
    int number;
    int nextp;
}link[N+1];

int main()
{
    int i, count, h;
    for (i = 1; i <= N; i++)             //i<=N
    {
        if (i == N)
            link.nextp = 1;
        else
        {
            link.nextp = i + 1;
            link.number = i;
        }
    }
    printf("\n");
    h = N;
    count = 0;
    printf("sequence that person leave the circle:\n");
    while (count < N - 1)
    {
        i = 0;
        while (i != 3)
        {
            h = link[h].nextp;
            if (link[h].number)
                i++;
        }
        printf("%4d", link[h].number);
       // link[h].number = 0;                    //去掉这一行
        count++;
    }
    printf("\nthe last one is:\n");
    for (i = 1; i < N; i++)
        if (link.number)
            printf("%3d\n", link.number);
    return 0;
}

运行起来了
2017-02-21 12:35
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
以下是引用炎天在2017-2-21 12:36:01的发言:

是的, 没有具体要求, 只能这样改改了

可就这样不懂装懂下去真的好吗
2017-02-21 15:28
快速回复:这哪儿错了,不走
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030042 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved