| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1567 人关注过本帖
标题:这哪儿错了,不走
只看楼主 加入收藏
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
结帖率:100%
收藏
 问题点数:0 回复次数:8 
这哪儿错了,不走
程序代码:
#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
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我对链表不是很懂

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

DO IT YOURSELF !
2017-02-21 11:59
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
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
程序代码:
#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[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;
}

早知做人那么辛苦!  当初不应该下凡
2017-02-21 12:25
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
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 6楼 see235959850
是的, 没有具体要求, 只能这样改改了

早知做人那么辛苦!  当初不应该下凡
2017-02-21 12:36
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
以下是引用炎天在2017-2-21 12:36:01的发言:

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

可就这样不懂装懂下去真的好吗
2017-02-21 15:28
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
就帮你改正常吧,如下:
程序代码:
#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;  //这个赋值必须在if...else...外边
    }
    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;
}


这可不是用链表,只不过是数组,而用数组是不需要定义结构体的,这叫“Fart pants off”

[此贴子已经被作者于2017-2-21 19:27编辑过]

2017-02-21 19:21
快速回复:这哪儿错了,不走
数据加载中...
 
   



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

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