| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1303 人关注过本帖
标题:麻烦下帮我看一下这个程序错在哪里了???多谢谢!!!
只看楼主 加入收藏
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
被你的执着感动了

剑栈风樯各苦辛,别时冰雪到时春
2015-05-28 22:29
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
以下是引用鱼游海底在2015-5-26 19:34:40的发言:

还剩下一个问题了label 'end' was undefined   这是什么意思???
"end"标号未定义。
2015-05-28 23:55
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
struct Student *del(struct Student *head,int old)
{
    struct Student *p1,*p2;
    int i=1;
    p1=head;
    if(head==NULL)
    {
        printf("\nlist null!\n");goto end;
    }
    while(i==1)
    {
        while(old!=p1->old&&p1->next!=NULL)
        {
            p2=p1;p1=p1->next;
        }
        if(old==p1->old)
        {
            if(p1==head)head=p1->next;
            else p2->next=p1->next;
            i=1;
        }
        else {printf("%d not been found!\n",old);i=0;}
    }
    return head;
}
上面这段程序中红色部分,"goto end;",你要求跳转到标号"end"处,但程序中并未定义"end"标号。
2015-05-28 23:59
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
回复 11楼 林月儿
不是执着,是要完成的作业。。。
2015-05-29 20:53
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
回复 13楼 取名字
那该怎样修改呢?
2015-05-29 20:54
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
直接"return head;"或者如下:
struct Student *del(struct Student *head,int old)
{
    struct Student *p1,*p2;
    int i=1;
    p1=head;
    if(head==NULL)
    {
        printf("\nlist null!\n");goto end;
    }
    while(i==1)
    {
        while(old!=p1->old&&p1->next!=NULL)
        {
            p2=p1;p1=p1->next;
        }
        if(old==p1->old)
        {
            if(p1==head)head=p1->next;
            else p2->next=p1->next;
            i=1;
        }
        else {printf("%d not been found!\n",old);i=0;}
    }
end:
    return head;
}
2015-05-29 21:33
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
直接"return head;"或者如下:
struct Student *del(struct Student *head,int old)
{
    struct Student *p1,*p2;
    int i=1;
    p1=head;
    if(head==NULL)
    {
        printf("\nlist null!\n");goto end;
    }
    while(i==1)
    {
        while(old!=p1->old&&p1->next!=NULL)
        {
            p2=p1;p1=p1->next;
        }
        if(old==p1->old)
        {
            if(p1==head)head=p1->next;
            else p2->next=p1->next;
            i=1;
        }
        else {printf("%d not been found!\n",old);i=0;}
    }
end:
    return head;
}
2015-05-29 21:35
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
回复 17楼 取名字
你编译成功了吗?为什么我就是通过不了??用的是VC++6.0
2015-06-02 18:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
总见你问错在哪里,也总没见你描述错误现象。抬头看看置顶的如何提问帖子不行吗?

授人以渔,不授人以鱼。
2015-06-02 19:12
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
#include"stdio.h"
#include"stdlib.h"
#define LEN sizeof(struct Student)
struct Student
{
    long num;
    char name[20];
    char sex[5];
    int old;
    struct Student *next;
};
int n;
struct Student *creat(void)
{
    struct Student *head,*p1,*p2;
    p1=p2=(struct Student *)malloc(LEN);
    printf("输入学生的信息(学号(学号为零就结束),姓名,性别(man or woman),年龄):");
    scanf("%ld,%s,%s,%d",&p1->num,p1->name,p1->sex,&p1->old);
    head=NULL;
    while(p1->num!=0)
    {
        n++;
        if(n==1)head=p1;
        else p2->next=p1;
        p2=p1;
        p1=malloc(LEN);
        printf("输入学生的信息(学号,姓名,性别(man or woman),年龄):");
        scanf("%ld,%s,%s,%d",&p1->num,p1->name,p1->sex,&p1->old);
    }
    p2->next=NULL;
    return head;
}
struct Student *del(struct Student *head,int old)
{
    struct Student *p1,*p2;
    int i=1;
    p1=head;
    if(head==NULL)
    {
        printf("\nlist null!\n");goto end;
    }
    while(i==1)
    {
        while(old!=p1->old&&p1->next!=NULL)
        {
            p2=p1;p1=p1->next;
        }
        if(old==p1->old)
        {
            if(p1==head)head=p1->next;
            else p2->next=p1->next;
            i=1;
        }
        else {printf("%d not been found!\n",old);i=0;}
    }
    return head;
}
void print(struct Student *head)
{
    struct Student *p;
    printf("\nnow these %d records are:\n",n);
    p=head;
    if(head!=NULL)
        do
        {
            printf("%ld,%s,%s,%d",p1->num,p1->name,p1->sex,p1->old);
            p=p->next;
        }while(p!=NULL);
}
int main(void)
{
    int old;
    struct Student *head;
    head=creat();
    printf("输入一个年龄:");
    scanf("%d",&old);
    head=del(head,old);
    print(head);
    return 0;
}
以上是楼主的程序,红色加粗部分有问题,可按如下修改:
1、第一处红色加粗部分p1=malloc(LEN)改为"p1=(struct Student *)malloc(LEN);"。因为malloc()函数默认返回的是一个(void *)指针,而p1是(struct Student *)指针,二者类型不同,不能直接赋值;
2、第二处红色加粗部分中的"p1"在该"print"函数中并未定义。
这是楼主程序中还存在的2个语法错误,改掉就可以编译成功了,至于逻辑上有没有错误,楼主自己调试看一下。
2015-06-03 00:16
快速回复:麻烦下帮我看一下这个程序错在哪里了???多谢谢!!!
数据加载中...
 
   



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

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