1476: 删除记录(结构体专题)
描述
有一学生成绩表,包括学号、姓名、3门课程成绩。请实现如下删除功能:输入一个学生的学号,删除该学生的所有信息。Input首先输入一个整数n(1<=n<=100),表示学生人数;
输入
然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。
输出
最后一行输入一个学号num。Output若要删除的学号不存在,则输出“error!”;否则,输出删除该学生后的所有记录。
#include <stdio.h>
#include <string.h>
struct student{ //定义结构体,包含学号、名字、三门成绩。
char num[20];
char name[20];
int a,b,c;
};
int main()
{
int n,i,s=0;
char m[20];
scanf("%d",&n);
struct student data[n]; //定义结构体数组。
for(i=0;i<n;i++)
{
scanf("%s %s %d %d %d",data[i].num,data[i].name,&data[i].a,&data[i].b,&data[i].c);
}
scanf("%s",m); //输入查找的学号。
for(i=0;i<n;i++)
{ //用字符比较函数比较查找的学号与结构体中的学号长度是否相同。
if(strcmp(m,data[i].num)==0)
s=s+1;
}
if(s==0) //s为0,说明查找不到输入的学号,即输入错误。
printf("error!");
else //如果s不为零。
{
for(i=0;i<n;i++)
{
if(strcmp(m,data[i].num)==0)
continue; //如果有这个学号,就用continue语句跳过。输出剩下的学生信息。
printf("%s %s %d %d %d\n",data[i].num,data[i].name,data[i].a,data[i].b,data[i].c);
}
}
return 0;
}