增加或删除学生信息在C语言的程序中如何编写?
#include "stdio.h"
struct student
{
int ID;
char name[20];
struct
{
int year,month,day;
}birthday;
float scores[3];
char address[100];
};
void stud_out(struct student *a,int n);
int stud_ins(struct student *a,int n);
void stud_del(struct student *a,int *n,int j);
int main()
{
struct student stu[50]={
{1001,"李天骄",1990,12,3,87.5,93.6,79.5,"北京联合大学信息学院97号"},
{1002,"张璍萸",1991,2,13,97.5,83.6,89.5,"北京联合大学信息学院97号"},
{1003,"陈自逸",1989,10,31,77.5,88.6,79.5,"北京联合大学信息学院97号"}};
int num=3;
int n,k;
stud_out(stu,num);
while(1)
{
printf("请选择操作内容:1.增加学生;2.删除学生;0.退出系统!\n");
scanf("%d",&k);
if(k==1)
{
num=stud_ins(stu,num);
stud_out(stu,num);
}
else if(k==2)
{
printf("请选择删除第几个学生\n");
scanf("%d",&n);
stud_del(stu,&num,n);
printf("删除第%d个学生后\n",n);
stud_out(stu,num);
}
else
{
break;
}
}
return 0;
}
int stud_ins(struct student *a,int n)
{
int i;
struct student tmp;
printf("输入学号\n");
scanf("%d",&tmp.ID);
printf("输入姓名\n");
fflush(stdin);
scanf("%s",tmp.name);
printf("输入生日(年月日)\n");
scanf("%d",&tmp.birthday.year);
scanf("%d",&tmp.birthday.month);
scanf("%d",&tmp.birthday.day);
printf("请输入C实验、C语言理论、C笔试成绩\n");
for(i=0;i<3;i++)
scanf("%f",&tmp.scores[i]);
printf("请输入地址\n");
fflush(stdin);
scanf("%s",&tmp.address);
a[n]=tmp;
return n+1;
}
void stud_del(struct student *a,int *n,int j)
{
int i;
for(i=j-1;i<*n-1;i++)
a[i]=a[i+1];
(*n)--;
}
void stud_out(struct student *a,int n)
{
int i,k;
printf(" 学号 姓名 生日 C实验 C理论 C笔试 地 址\n");
for(i=0;i<n;i++)
{
printf("%5d",a[i].ID);
printf("%7s",a[i].name);
printf("%5d",a[i].birthday.year);
printf("%3d",a[i].birthday.month);
printf("%3d",a[i].birthday.day);
for(k=0;k<3;k++)
printf("%7.1f",a[i].scores[k]);
printf("\t%s",a[i].address);
printf("\n");
}
}
点击加载更多评论>>