该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不知道对不对,实验了下应该没问题,拿去用,实现了1,2个部分,不想写了,我头有点痛。
#include
#include
#include
typedef struct student
{
char name[20];
char numble[20];
int Basic;/*基础课学分*/
int Profess;/*专业课学分*/
int Elect;/*选修课学分*/
int HumCulture;/*人文课学分*/
int Experiment;/*实验课学分*/
char Class[20];/*班级*/
struct student *next;
}Linklist;
Linklist *Init(Linklist *head)/*初始化*/
{
head=(Linklist *)malloc(sizeof(Linklist));
head->next=NULL;
return head;
}
Linklist *add(Linklist *head)/*添加学生信息*/
{
Linklist *q,*p;
int i,j,n;
i=0;
p=head->next;
printf("请输入你要添加的学生的数量:\n");
scanf("%d",&n);
while(i
{
while(1)
{
q=(Linklist *)malloc(sizeof(Linklist));
if(q==NULL)
{
printf("添加失败!\n");
return head;
}
printf("请输入该学生的姓名:\n");
scanf("%s",&q->name);
printf("请输入该学生的学号:\n");
scanf("%s",&q->numble);
while(p!=NULL)
{
if(strcmp(q->numble,p->numble)==0)
{
printf("这个学生信息已经添加过,请重新输入!\n");
free(q);
j=0;
break;
}
p=p->next;
}
if(j==0)
break;
printf("请输入该学生的基础学分:\n");
scanf("%d",&q->Basic);
printf("请输入该学生的专业学分:\n");
scanf("%d",&q->Profess);
printf("请输入该学生的选修学分:\n");
scanf("%d",&q->Elect);
printf("请输入该学生的人文学分:\n");
scanf("%d",&q->HumCulture);
printf("请输入该学生的实验学分:\n");
scanf("%d",&q->Experiment);
printf("请输入该学生所在班级:\n");
scanf("%s",&q->Class);
q->next=head->next;
head->next=q;
i++;
break;
}
}
return head;
}
void find(Linklist *head)/*查找学生信息*/
{
char num[20];
printf("请输入你要查找的学生学号:\n");
scanf("%s",num);
Linklist *q;
q=head->next;
while(q!=NULL)
{
if(strcmp(q->numble,num)==0)
{
printf("该名学生的姓名:%s,基础课学分:%d,专业课学分:%d,选修课学分:%d,人文课学分:%d,实验课课学分:%d\n",q->name,q->Basic,q->Profess,q->Elect,q->HumCulture,q->Experiment);
return ;
}
q=q->next;
}
printf("没有找到该名学生!\n");
}
void main()
{
Linklist *stu;
stu=Init(stu);
add(stu);
find(stu);
}