#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct list
{
char name[20];
char num[12];
char telephone[12];
int score;
struct list *next;
}list,*lnode;
lnode init()
{
lnode L=(lnode)malloc(sizeof(list));
L->next=NULL;
return L;
}
void insert(lnode L,char name[],char num[],char telephone[],int score)
{
lnode p,q=L->next;
p=(lnode)malloc(sizeof(list));
p->next=NULL;
strcpy(p->name,name);
strcpy(p->num,num);
strcpy(p->telephone,telephone);
p->score=score;
while(!q->next)
q=q->next;
q->next=p;
}
void deletel(lnode L)
{
int n=0;
char a[20],b[20];
lnode p=L,pre=NULL;
if(p->next)
{
printf("请选择:/n1:姓名删除\t2:按学号删除\t");
scanf("%d",&n);
switch(n)
{
case 1:
printf("请输入姓名");
scanf("%s",b);
for(p=L->next;strcmp(p->name,b)&&!p;pre=p,p=p->next);
pre=p->next;
free(p);
printf("删除成功");
break;
case 2:
printf("请输入学号");
scanf("%s",a);
for(p=L->next;strcmp(L->num,a)&&(!p);pre=p,p=p->next);
pre=p->next;
free(p);
printf("删除成功");
break;
default:
printf("输入错误,请重新选择");
break;
}
}
else
printf("该联系人不存在,请重新选择");
}
void display(lnode L)
{
lnode p;
for(p=L->next;p!=NULL;p=p->next)
{
printf("姓名\t学号\t电话\t学分\n");
printf("%s\t%s\t%s\t%d\n",p->name,p->num,p->telephone,&p->score);
}
}
void main()
{
int n,score,k=1;
char name[20],num[20],telephone[20];
lnode L;
L=init();
printf("*****************************请选择***************************************\n");
printf("\t\t\t1: 插入联系人\n\t\t\t2:删除联系人\n");
printf("\t\t\t3:显示所有联系人\n****************************其他键退出***********************************\n");
while(k)
{ scanf("%d",&n);
switch(n)
{
case 1:
printf("请输入姓名");
scanf("%s",name);
printf("请输入学号");
scanf("%s",num);
printf("请输入电话");
scanf("%s",telephone);
printf("请输入学分");
scanf("%d",&score);
insert(L,name,num,telephone,score);
printf("添加成功");
break;
case 2:
deletel(L);
break;
case 3:
display(L);
break;
default:
k=0;
}
}
printf("************************谢谢使用****************************");
}
运行过程中中出现问题,是怎么回事\
好像没有语法错误
能不能具体说说程序漏洞在哪儿?急求
|