#include
#include
#include
#define MAXLEN 100
#define Null 0
typedef struct node {
int num; // 学号
char name[MAXLEN]; // 姓名
int score; // 分数
struct node *next; // 指针域
}list;
list *creat() // 新增成绩
{
list *head,*p,*r;
int i,n; // n 为学生没禅咐人数
head=(list *)malloc(sizeof(list));
head->next=Null;
r=head;
printf("请输入学生人数.\n");
scanf("%d",&n);
for(i=1;i<=n;i++) {
p=(list *)malloc(sizeof(list));
printf("请输入学生学号:\n");
scanf("%d",&p->num);
printf("请输入学生姓名:\n");
scanf("%s",&p->name);
printf("请输入学生成绩:\n");
scanf("%d",&p->score);
p->next=Null;
r->next=p;
r=r->next;
}
return (head);
}
list *del (list *h) // 删除成绩
{
int k; // 要删除的学生学号
list *p,*q; // 为什么要两个指针呢?
q=h;
p=h->next;
printf("请袭凯输入待删除的学生学号:\n");
scanf("%d",&k);
while (p && p->num!=k) {
q=p;
p=p->next;
}
if(p) {
q->next=p->next;
free(p);
}
else
printf("没有此学生的记录,无法删除!\n");
return (h);
}
void output(list *h) // 输出成绩
{
list *p;
printf("学号\t姓名\t成绩\n");
p=h->next;
while (p!=NULL) {
printf("%d\t%s\t%d\n",p->num,p->name,p->score);
p=p->next;
}
}
void main()
{
list *p;
int k; // 控制循环的标志
while (1) {
printf(" ---------------------------------------\n");
printf(" | 学生成绩管理系统 |\n");
printf(" ---------------------------------------\n");
printf(" | 1. 登记成绩 |\n");
printf(" | 2. 删除成绩 |\n");
printf(" | 3. 输出所有学生成绩 |\枯纯n");
printf(" | 0. 退出系统 |\n");
printf(" ---------------------------------------\n");
printf("请输入你的选择:\n");
scanf("%d",&k);
switch(k) {
case 1: p=creat(); break;
case 2: p=del(p); break;
case 3: output(p); break;
case 0: exit(0);
default : printf("选择错误,重新开始!\n");
}
}
}
数组把学知唯生的成绩定义成一个数组a[k] k值为学生个数 例如为10 a[10]
需加入放到最后new,删除最备简开始的
int i,j;
long sum;
for(i=0;i<仿猛裤9;i++)
{a[i]=a[i+1];}
a[9]=new;
for(j=0;j<10;j++)
{sum=sum+a[i];}