标题:for语句循环,怎么不会跳出
取消只看楼主
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
结帖率:100%
已结贴  问题点数:15 回复次数:7 
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
孤独城堡
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
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
得分:0 
n是全局函数,已经赋值,是13
2012-08-29 13:35
孤独城堡
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
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
得分:0 
回复 10楼 zhangduan
你先要运行creat0,得到n=13
2012-08-29 16:33
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
得分:0 
回复 13楼 刘根淼
请问为什么i=12时&p[i].code=&i
2012-08-30 12:39
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
得分:0 
回复 15楼 刘根淼
那请问一下栈是什么,我在书上没有看过(也有可能忘记了)
2012-08-30 17:38



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




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

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