| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 695 人关注过本帖
标题:请问高手,这个程序有哪些问题
只看楼主 加入收藏
给我毅刀
Rank: 1
等 级:新手上路
帖 子:30
专家分:9
注 册:2012-9-2
收藏
 问题点数:0 回复次数:11 
请问高手,这个程序有哪些问题
我今年大二了,这是我们数据结构的作业,要求是用链表定义结构体通讯录,输入删除,插入查找,输出,每次都要求返回主界面,下面是我自己写的程序,是照着教材写的,有错误,可能是我对于教材的理解还不太深,有没高手能指出我的错误,指点一下啊,大学不想空虚的度过。。


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void insert(struct note head);
void delet(struct note head,int i);
void get(struct note head);
void find(struct note head);
void exit(struct note head);

typedef int datatype;
struct note
{
    char name[20];
    long int num;
    struct note *next;

};
int n;

struct note *input()
{
    printf("please input information");
    struct note *head;
    struct note *p1,*p2;
    n=0;
    p1=p2=(note*)malloc(sizeof(note));
    scanf("%s,%ld",p1->name[20],&p1->num);
    head=NULL;
    while(p1->num!=0)
    {
        n=n+1;
        if(n==1)
            head=p1;
        else p2->next=p1;
             p2=p1;
             p1=(struct note*)malloc(sizeof(note));
             scanf("%s,%ld",p1->name[20],&p1->num);

    }
    p2->next=NULL;
    return (head);
}


void menu(struct note head)
{
    int x;
    int i;
    printf("1-insert");
    printf("2-delete");
    printf("3-get");
    printf("4-find");
    printf("5-exit");
    scanf("%d",&x);
    if(x==1)
        void insert(struct note head);
        else if(x==2)
            printf("please input i");
            scanf("%d",&i);
            delet(struct note head,int i);
            else if(x==3)
            get(struct note head);
            else if(x==4)
            find(struct note head);
            else if(x==5)
            exit(struct note head);
        
}


void insert(struct note head)
{
    printf("please insert");
    struct note *p3;
    p3=(struct note*)malloc(sizeof(note));
    scanf("%s,%ld",p3->name[20],&p3->num);
    p3->next=head;
    void menu();
}

void delet(struct note head,int i)
{
    struct note *p=head;
    struct note *s;
    int j=0;
    while(p->next!=NULL&&j<i)
    {
        p=p->next;
        j++;
    }
    if(j==i)
        s=p->next;
        p->next=s->next;
        else{
            printf("wrong");
        }
     void menu();
}


void get(struct note head)
{
    struct note *p=head;
    struct note *s;
    int j=0;
    while(p->next!=NULL&&j<i)
    {
        p=p->next;
        j++;
    }
    if(j==i)
        s=p->next;
        p->next=s->next;
        else{
            printf("wrong");
        }
    void menu();
}

void find(struct note head)
{
    string str1[20];
    scanf("%s",str1[20]);
    struct note *p=head;
    int i;
    while(strcmp(p->name,str1!=0))
    {
        p=p->next;
    }
    printf("%s,%ld",p->name[20],&p->num);
    void menu();
}

void exit(struct note head)
{
    note *p=head;
    while(p!=NULL)
    {
        printf("%s,%ld",p->name[20],&p->num);
        p=p->next;
    }
}


int main()
{
    typedef struct note;
    struct note *head;
    head=input;
    menu(head);
    return 0;
}

搜索更多相关主题的帖子: insert 通讯录 include void 
2012-09-10 13:35
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
你说的错误值的什么的 编译不过 还是运行出错
2012-09-10 13:41
给我毅刀
Rank: 1
等 级:新手上路
帖 子:30
专家分:9
注 册:2012-9-2
收藏
得分:0 
void menu(struct note head)
 {
     int x;
     int i;
     printf("1-insert");
     printf("2-delete");
     printf("3-get");
     printf("4-find");
     printf("5-exit");
     scanf("%d",&x);
     if(x==1)
         void insert(struct note head);
         else if(x==2)
             printf("please input i");
             scanf("%d",&i);
             delet(struct note head,int i);
             else if(x==3)
             get(struct note head);
             else if(x==4)
             find(struct note head);
             else if(x==5)
             exit(struct note head);
         
 }

这个程序我的设想是先构建一个结构体,然后通过主函数调用menu函数,实现功能的选择,然后每一次选择之后重新调用menu函数,最后退出,但是在这个menu函数中delet(struct note head,int i); 这一个语句不通过,显示 missing )before type note,  而且下面几个调用也是这样的问题,请问是不是我的语法出错了?是不是不能这样调用啊?我们老师开学两周就让我们写这个程序了,大一的C语言老师讲的也不精,结构体只是提了一句,还是我自学的,所以这块内容虽然重要,但是我还是有些模糊
2012-09-10 13:48
给我毅刀
Rank: 1
等 级:新手上路
帖 子:30
专家分:9
注 册:2012-9-2
收藏
得分:0 
回复 2楼 zklhp
我不想去抄袭别人的程序,所以每次作业都是自己写的,网上倒是什么都有,但是我觉得想要成为高手,必须要自己写程序,虽然错误会多,但是慢慢也许就会少了,发现自己的错误才可以改正。。。
2012-09-10 13:53
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
首先 void insert(struct note head); 这个void这里行么

其次 你这里逻辑关系很混乱啊 反正我没看懂 要学会用大括号把在一块的东西括起来 不要不用大括号

再有 exit()这个函数和系统的函数重名 貌似不行

总之 你得学会看编译器的错误信息 根据错误信息慢慢改

你也说了 老师没教 其实这个语法也没法教 一般是看书 自己写 错了 再改 改了再错 等你把全部错误都犯了 也就会了 给你讲一遍 不写 也学不会

要紧的是 学会看编译信息 好好看书
2012-09-10 13:55
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用给我毅刀在2012-9-10 13:53:19的发言:

我不想去抄袭别人的程序,所以每次作业都是自己写的,网上倒是什么都有,但是我觉得想要成为高手,必须要自己写程序,虽然错误会多,但是慢慢也许就会少了,发现自己的错误才可以改正。。。

有志气 很好 但你自己写的 如果是错的又不改 那样 写的越多 对错误的印象越深 反而有害

所以 写代码 首先要保证能编译通过 然后再保证能正常运行 这是一个程序最最基本的要求了 其次 你再考虑效率啦 可靠性啦 可移植性啦
2012-09-10 13:56
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用给我毅刀在2012-9-10 13:53:19的发言:

我不想去抄袭别人的程序,所以每次作业都是自己写的,网上倒是什么都有,但是我觉得想要成为高手,必须要自己写程序,虽然错误会多,但是慢慢也许就会少了,发现自己的错误才可以改正。。。

我倒是觉得 如果写不出来 找一个程序 看懂了 编译过了 自己改改 学习吸收变成自己的东西 可能会比闷着头【臆造】一些稀奇古怪的东西要好 为啥要学数据结构呢 就是因为有很多东西已经被研究了 形成了一些固定的套路 这样 你学习一下人家咋写的 然后再提高 比你什么都自己琢磨要好的多

呵呵 说多了 要紧的还是 写出能正常工作的代码。。
2012-09-10 14:01
给我毅刀
Rank: 1
等 级:新手上路
帖 子:30
专家分:9
注 册:2012-9-2
收藏
得分:0 
回复 7楼 zklhp
我在网上找了一个同样是通讯录的程序,正在对比。。。
不过他申请空间用的是new,我用的是malloc,这块有个错误我正在看。。希望能看懂。
2012-09-10 14:07
给我毅刀
Rank: 1
等 级:新手上路
帖 子:30
专家分:9
注 册:2012-9-2
收藏
得分:0 
回复 8楼 给我毅刀
void delet(struct note head,int i)
{
    struct note *p=head;
error C2440: 'initializing' : cannot convert from 'struct note' to 'struct note *'

请问一下这个错误是什么意思啊,感觉好像是个概念上的错误
2012-09-10 14:36
给我毅刀
Rank: 1
等 级:新手上路
帖 子:30
专家分:9
注 册:2012-9-2
收藏
得分:0 
回复 7楼 zklhp
void delet(struct note head,int i)
 {
     struct note *p=head;
 error C2440: 'initializing' : cannot convert from 'struct note' to 'struct note *'
 
请问一下这个错误是什么意思啊,感觉好像是个概念上的错误
2012-09-10 14:37
快速回复:请问高手,这个程序有哪些问题
数据加载中...
 
   



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

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