c语言修改学生信息函数 c语言修改学生成绩

c语言函数删除一组学生数据和修改学生数据第一个问题不明白你说c语言修改学生信息函数的“主函数调用输出函数”是什么意思 。是要在主函数中输出你的for循环里的东西吗c语言修改学生信息函数?那就把那个j定义为全局的变量,就是放到del函数外面 。
第二个问题,应该把j-1都改成j就可以了 。
用C语言编写学生信息管理程序(给出五个主要函数就OK啦?。?/h2>/*接上一楼*/
struct
Student
*create()
/*create函数定义,此函数实现创建单向动态链表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head , 链表的头指针;*p1,*p2,中间指针变量*/
puts("\n现在请输入学院名:");
scanf("%s",college);
puts("\n年级:");
scanf("%s",grade);
puts("\n专业和班级:");
scanf("%s",classname);
puts("\n下面请按提示依次输入数据:\n(如果要结束输入,请输入学号0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("输入第一个学生的学号:");
scanf("%ld",p1-num);
puts("输入此学生成绩:\n英语:");
scanf("%f",p1-score.english);
puts("数学:");
scanf("%f",p1-score.math);
puts("计算机:");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1-grade=mark_grade(p1);
for(;p1-num!=0;)
{
len++;
if(len==1)
head=p1;
else
p2-next=p1;
p2=p1;
p1=(struct
Student
*)malloc(LEN);
puts("输入下一个学生的学号:");
scanf("%ld",p1-num);
puts("输入此学生成绩:\n英语:");
scanf("%f",p1-score.english);
puts("数学:");
scanf("%f",p1-score.math);
puts("计算机:");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1-grade=mark_grade(p1);
}
p2-next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函数定义,此函数实现从现有链表中删除一个结点*/
{
struct
Student
*p1,*p2;
if(head==NULL)
puts("空表,没有任何数据记录 。\n");
else
{
for(p1=head;!(del_num==p1-num||p1-next==NULL);p2=p1,p1=p1-next);
if(del_num==p1-num)
{
if(p1==head)head=p1-next;
else
p2-next=p1-next;
printf("学号为%ld学生的数据删除成功 。\n",del_num);
--len;
}
else
printf("未找到学号为%ld学生的记录 。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函数定义 , 此函数实现向现有链表中插入一个结点或覆盖相同学号的数据*/
{
struct
Student
*p0=new_student,*p1=head,*p2;
char
control;
if(head==NULL)
{
head=p0;
p0-next=NULL;
puts("数据插入成功 。\n");
}
else
{
for(;((*p0).num(*p1).num)(p1-next!=NULL);p2=p1,p1=p1-next);
if((*p0).num==(*p1).num)
{
printf("已经存在一个学号为%ld的学生的数据,要覆盖原有数据吗?\n输入
Y
=覆盖原有数据\n输入其它=保留原有数据\n",p0-num);
FFLUSH;
scanf("%c",control);
FFLUSH;
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0;p0-next=p1-next;}
else
{p2-next=p0;p0-next=p1-next;}
puts("数据已经更新\n");break;
default:break;
}
len--;
}
else
if((*p0).num(*p1).num)
{
if(p1==head)head=p0;
else
p2-next=p0;
p0-next=p1;
puts("数据插入成功 。\n");

推荐阅读