|
发表于 2014-4-24 20:53:30
|
显示全部楼层
发代码旁边有数字的原因是我用了 [ code]这个东西[ /code] 自己去掉空格。
我知道你的意思了。我也对C和C++也只能算是入门,刚开始可能是误解你的代码的意思。
一下是我改好的,已加新的备注。调试成功。你再看看吧- #include<stdio.h>
- #include<stdlib.h>
- #define op 90
- struct Node //这里不需要typedef。 看的懂英文可以参考下这个帖子http://stackoverflow.com/questions/18806392/typedef-struct-declarations,看不懂谷歌翻一下
- {
- int number;
- char name[op];
- int age;
- struct Node* next;
- };
- typedef Node* linklist;
- int main()
- {
- int i,w;
- char q;
- linklist l,p,s,find;
- l=(linklist)malloc(sizeof(Node));
- s=(linklist)malloc(sizeof(Node));
- find=(linklist)malloc(sizeof(Node));
- l->next=NULL;
- do //这里开始是程序的主页面,设置了循环条件,用户选择退出才能离开程序
- {
- printf("请输入选择的操作类型:\n1、存入信息\n2、查找信息\n3、退出\n");
- q=getchar();
- switch(q) //用户选择操作类型
- {
- case '1':
- printf("请分别输入学号、名字、年龄并用逗号隔开\n");
- p=(linklist)malloc(sizeof(Node));
- scanf("%d,%s,%d",&p->number,p->name,&p->age); //语法问题, &int变量
- p->next=l->next;
- l->next=p;
- printf("按下1显示所有信息记录,否则返回\n");
- scanf("%d",&i);
- if(i==1)
- {
- s=l->next;
- while(i==1&&!(s->next==NULL))
- {
- printf("学号:%d,名字:%s,年龄:%d\n",s->number,s->name,s->age);
- s=s->next; //估计是粗心。我猜应该是这样
- }
- printf("学号:%d,名字:%s,年龄:%d\n",s->number,s->name,s->age);
- } //if
- i=0;
- break;
- case '2':
- find=l;
- printf("请输入学号\n");
- scanf("%d",&s->number); // 语法问题,看上面
- while(s->number!=find->number)
- {
- find=find->next;
- }
- if(s->number!=find->number) return -1;
- else
- printf("学号:%d,名字:%s,年龄:%d\n",find->number,find->name,find->age);
- break;
- default:break;
- } //switch
- printf("继续操作请按下1\n否则退出程序\n");
- scanf("%d",&w);
- }while(w==1);
- return 0;
- }
复制代码 |
|