标题:for语句循环,怎么不会跳出
只看楼主
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
结帖率:100%
已结贴  问题点数:15 回复次数:16 
for语句循环,怎么不会跳出
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct person)
#define NULL 0
struct person
{
    int num;
    int code;
    struct person *next;
};
int j=1,n=0;

struct person *creat0()
{
    struct person p[13];
    int i;
    i=0;
    while(i<13)
    {
        n++;
        p[i].num=i+1;
        i++;
    }
    return p;
}
//下面的for循环怎么i=n时,i自动变为0
struct person *creat1(struct person p[])
{
    int i;
    for(i=0;i<13;i++)
    {
        p[i].code=j;
        j++;
        if(j==3) j=0;
    }
    return p;
}


void print(struct person head[])
{
    struct person *p;
    printf("Now,these records are:\n");
    if(head!=NULL)
        do{
            printf("%d %d",p->num,p->code);
            p=p->next;
        }while(p!=NULL);
}

struct person *del(struct person head[])
{
    struct person *p1,*p2;
    p1=head;
    while(p1->code!=0&&p1->next!=NULL)
    {
        p2=p1;
        p1=p1->next;
    }
    if(p1->code==0)
    {
        if(p1==head) head=p1->next;
        else p2->next=p1->next;
        n--;
    }
    return head;
}

void main()
{
    struct person *head;
    head=creat0();
    head=creat1(head);
    while(n>1)
    {
        head=del(head);
        head=creat1(head);
    }
    print(head);
}

for语句怎么会无限循环,请问时什么原因

[ 本帖最后由 孤独城堡 于 2012-8-29 15:34 编辑 ]
搜索更多相关主题的帖子: return person include next 
2012-08-29 10:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
第二个for语句在哪里?

授人以渔,不授人以鱼。
2012-08-29 10:53
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
得分:0 
写错了是
程序代码:
struct person *creat1(struct person p[])
{
    int i;
    for(i=0;i<n;i++)
    {
        p[i].code=j;
        j++;
        if(j==3) j=0;
    }
    return p;
}

里面的for怎么每次i运行到n值时,都自动变0
2012-08-29 13:10
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
得分:0 
你妹  跳不出去 肯定是 条件判定+促成条件成立的表达式有问题 了。

这种问题 以后就不要拿出来 求解了。 对你不好

完全自己解决

我要成为嘿嘿的黑客,替天行道
2012-08-29 13:18
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
得分:0 
回复 3楼 孤独城堡
N没初始化     是个无效值

我要成为嘿嘿的黑客,替天行道
2012-08-29 13:20
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
得分:0 
n是全局函数,已经赋值,是13
2012-08-29 13:35
姻脂梦
Rank: 6Rank: 6
等 级:侠之大者
帖 子:264
专家分:424
注 册:2012-7-3
得分:0 
当0<0时,此题何解?
2012-08-29 15:09
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
得分:0 
好吧,我已把n改成13了(其实n本来就等于13)
程序代码:
struct person *creat1(struct person p[])
{
    int i;
    for(i=0;i<13;i++)
    {
        p[i].code=j;
        j++;
        if(j==3) j=0;
    }
    return p;
}
每当i运行到12时,下个值i变成0了
2012-08-29 15:37
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
得分:0 
回复 7楼 姻脂梦
无解,而且我程序中也没出现这个问题
不行你可以用“F11”运行一下
2012-08-29 15:39
zhangduan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-8-29
得分:0 
int j=1,n=0;

你在全局变量中已经给n赋值 n=0,所以当 i=n 是 i=0
2012-08-29 15:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-380286-1-1.html




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

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