题目描述
有一学生成绩表,包括学号、姓名、3门课程成绩。请实现如下删除功能:输入一个学生的学号,删除该学生的所有信息。
输入
首先输入一个整数n(1<=n<=100),表示学生人数;
然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。
最后一行输入一个学号num。
输出
若要删除的学号不存在,则输出“error!”;否则,输出删除该学生后的所有记录。
样例输入
3
541207010188 Zhangling 78 95 55
541207010189 Wangli 87 99 88
541207010190 Fangfang 68 76 75
541207010188
样例输出
541207010189 Wangli 87 99 88
541207010190 Fangfang 68 76 75
1.用结构体数组实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct score{
int chinese;
int math;
int english;
};
typedef struct node{
char id[20];
char name[20];
struct score chengji;
}link;
int main()
{
int i,j=0,n;
char del[20];
link stu[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s%d%d%d",stu[i].id,stu[i].name,&stu[i].chengji.chinese,&stu[i].chengji.math,&stu[i].chengji.english);
}
scanf("%s",del);
for(i=0;i<n;i++)
{
if(strcmp(del,stu[i].id)==0)
{
j=1;
}
}
if(j==0)
{
printf("error!");
}
for(i=0;i<n;i++)
{
if(strcmp(del,stu[i].id)==0)
{
continue;
}else{
printf("%s %s %d %d %d\n",stu[i].id,stu[i].name,stu[i].chengji.chinese,stu[i].chengji.math,stu[i].chengji.english);
}
}
return 0;
}
2.用单链表实现
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
struct score{
int x;
int y;
int z;
};
typedef struct student{
char id[20];
char name[20];
struct score s;
struct student* next;
}link;
void createlink(link* head,int n);
void printlink(link* head,int n);
int main()
{
link* head;
head=(link*)malloc(sizeof(link));
int i,n;
scanf("%d",&n);
createlink(head,n);
printlink(head,n);
return 0;
}
void createlink(link* head,int n)
{
link* p;
p=head->next;
link* rear=head;
for(int i=0;i<n;i++)
{
p=(link*)malloc(sizeof(link));
scanf("%s%s%d%d%d",p->id,p->name,&p->s.x,&p->s.y,&p->s.z);
rear->next=p;
rear=p;
}
rear->next=NULL;
}
void printlink(link* head,int n)
{
int i,t=0;
char str[20];
scanf("%s",str);
link* p1=head->next;
link* p2=head->next;
for(i=0;i<n;i++)
{
if(strcmp(p1->id,str)==0)
{
t=1;
}
p1=p1->next;
}
if(t==0){
printf("error!");
return;
}else{
for(i=0;i<n;i++)
{
if(strcmp(p2->id,str)==0)
{
p2=p2->next;
continue;
}else{
printf("%s %s %d %d %d\n",p2->id,p2->name,p2->s.x,p2->s.y,p2->s.z);
p2=p2->next;
}
}
}
}