资源描述
#define N 1000
#define M 3
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char name[10];
char sex[4];
int score[M];
int total;
};
void input(struct student st[],int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d%s%s%d%d%d",&st[i].num,st[i].name,st[i].sex,&st[i].score[0],&st[i].score[1],&st[i].score[2]);
printf("\n");
}
for(i=0;i<n;i++)
{
st[i].total=st[i].score[0]+st[i].score[1]+st[i].score[2];
}
}
void sort_sum(struct student st[],int n)
{
int i,j;
struct student temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(st[i].total<st[j].total)
{
temp=st[i];
st[i]=st[j];
st[j]=temp;
}
}
}
}
void seek_1(struct student st[],int no,int n)
{
int i,j,low,mid,high;
struct student temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(st[i].num>st[j].num)
{
temp=st[i];
st[i]=st[j];
st[j]=temp;
}
}
}
low=0;high=n-1;
while (low<=high)
{
mid = (high+low)/2;
if(no>st[mid].num)
{
low=mid+1;
}
else if (no<st[mid].num)
{
high=mid-1;
}
else
{
printf("num:%d,name:%s,sex:%s,score:%d,%d,%d,total:%d\n",st[mid].num,st[mid].name,st[mid].sex,st[mid].score[0],st[mid].score[1],st[mid].score[2],st[mid].total);
break;
}
}
}
void seek_2(struct student st[],int no,int n)
{
int i;
for(i=0;i<n;i++)
{
if(no==st[i].num)
{
printf("num:%d,name:%s,sex:%s,score:%d,%d,%d,total:%d\n",st[i].num,st[i].name,st[i].sex,st[i].score[0],st[i].score[1],st[i].score[2],st[i].total);
}
}
}
void del(struct student st[],int no,int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
if(no==st[i].num)
{
for(j=i;j<n-1;j++)
{
st[j]=st[j+1];
}
}
}
}
答案补充
void ins(struct student st[],int n)
{
printf("shuru xuesheng xinxi\n");
scanf("%d%s%s%d%d%d",&st[n].num,st[n].name,st[n].sex,&st[n].score[0],&st[n].score[1],&st[n].score[2]);
st[n].total=st[n].score[0]+st[n].score[1]+st[n].score[2];
}
答案补充
void mod(struct student st[],int no,int n)
{
int i;
for(i=0;i<n;i++)
{
if(no==st[i].num)
{
printf("xiugai xuesheng xinxi\n");
scanf("%d%s%s%d%d%d",&st[i].num,st[i].name,st[i].sex,&st[i].score[0],&st[i].score[1],&st[i].score[2]);
}
}
}
答案补充
void print(struct student st[],int n)
{
int i,j;
struct student temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(st[i].num>st[j].num)
{
temp=st[i];
st[i]=st[j];
st[j]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("num:%d,name:%s,sex:%s,score:%d,%d,%d,total:%d\n",st[i].num,st[i].name,st[i].sex,st[i].score[0],st[i].score[1],st[i].score[2],st[i].total);
}
}
答案补充
void menu()
{
printf(" 1. 录入学生信息\n");
printf(" 2. 根据总分排序\n");
printf(" 3. 用折半法查找学生信息\n");
printf(" 4. 用顺序法查找学生信息\n");
printf(" 5. 根据学号删除学生信息\n");
printf(" 6. 插入学生信息\n");
printf(" 7. 根据学号修改学生信息\n");
printf(" 8. 以报表形式输出学生信息\n");
printf(" 0. 退出\n");
}
答案补充
void main()
{
int choice,i,n;
struct student st[N];
printf("-------------\n\n");
printf(" 欢迎进入学生成绩管理系统\n\n");
printf("-------------\n\n");
menu();
while(choice!=0)
{
printf("please choose\n");
scanf("%d",&choice);
switch(choice)
{
case 1:printf("please enter n\n");
scanf("%d",&n);
input(st,n);
menu();
break;
case 2:sort_sum(st,n);
menu();
break;
答案补充
case 3:printf("enter the num\n");
scanf("%ld",&i);
seek_1(st,i,n);
menu();
break;
case 4:printf("enter the num\n");
scanf("%ld",&i);
seek_2(st,i,n);
menu();
break;
case 5:printf("enter the num you want to del\n");
scanf("%ld",&i);
del(st,i,n);
menu();
break;
答案补充
case 6:ins(st,n);
menu();
break;
case 7:printf("enter the num you want to mod\n");
scanf("%ld",&i);
mod(st,i,n);
menu();
break;
case 8:print(st,n);
menu();
break;
case 0:exit(0);
default:printf("error input!print again!\n");
}
}
}
答案补充
主要是把输入输出还有预处理部分换成C++的就行了
展开阅读全文