汤武以来
#include<stdio.h>#include<stdlib.h>#include<alloc.h>#include<windows.h>struct student { char name[10];//学生姓名 char zkz[20];//准考证号char bkzy[20];//报考专业 int zheng; //政治分数 int shuxue; //数学分数 int waiyu;//外语分数 int zhuanye; //专业分数int zongfei;//学生总分 char hege; }; typedef struct node { struct student data; struct node *next; }Node,*Link;Link head,tail;//考生信息头结点和尾结点 int c=1;//记录已输入多少学生typedef struct heges//用于保存合格学生名次 {Link point;struct heges* Next;}hgNode,*hglink;hglink hghead;//保存合格学生地址链表的头指针 struct requre{int zhengr;int shuxuer;int waiyur;int zhuanyer;int zongfeir;} r;void studentinfor(void)//输入学生成绩 {int firstshow(void);void Save(Link);int i;Link q=NULL,p=NULL;system("CLS");head=p=(Link)malloc(sizeof(Node));if(p==NULL){printf("溢出错误!!程序2秒后将自动关闭!!");Sleep(2000);exit(0); }do{system("CLS"); printf("\t\t\t\t按提示输入第 %d 个考生信息\n",c);printf("输入考生姓名\n");scanf("%s",p->data.name);printf("输入考生准考证号\n");scanf("%s",p->data.zkz);printf("输入考生报考专业\n");scanf("%s",p->data.bkzy);printf("输入考生 政治 成绩\n");scanf("%d",&p->data.zheng);printf("输入考生 数学 成绩\n");scanf("%d",&p->data.shuxue);printf("输入考生 外语 成绩\n");scanf("%d",&p->data.waiyu);printf("输入考生 专业 成绩\n");scanf("%d",&p->data.zhuanye);p->data.hege='n';p->data.zongfei=p->data.zhuanye+p->data.shuxue+p->data.waiyu+p->data.zheng; printf("是否结束考生信息输入?输入1继续,输入0退出\n");scanf("%d",&i);if(i==0)break; q=p;p=(Link) malloc(sizeof(Node));if(p==NULL){printf("溢出错误!!程序2秒后将自动关闭!!");Sleep(2000);exit(0);}q->next=p;c++; }while(1);p->next=NULL;tail=p;//给尾结点赋值 system("CLS");Save(head);}void Save(Link l) //保存考生信息数据 {FILE* fp; Link p; fp=fopen("D:\\ksxx.dat","ab"); if(fp==NULL) { printf("文件不存在,是否新建?\n输入 1 新建,输入 0 退出系统\n注意,退出不保存当前输入数据\n");if(getchar()=='0')exit(0);elsefp=fopen("D:\\ksxx.dat","wb"); }p=l; while(p!=NULL) {if(fwrite(p,sizeof(Node),1,fp)==1)p=p->next;else printf("保存出错!!"); }fclose(fp); printf("考生信息已成功保存为文件3秒后返回主界面!!\n");Sleep(3000); }void requ(void)//输入录取要求分数 {system("CLS");printf("\t请依次输入政治,数学,外语,专业及总分要求,并以“空格”分开!\n");scanf("%d%d%d%d%d",&r.zhengr,&r.shuxuer,&r.waiyur,&r.zhuanyer,&r.zongfeir);printf("录取要求为:政治 数学 外语 专业 总分\n");printf("%16d%5d%5d%5d%5d\n",r.zhengr,r.shuxuer,r.waiyur,r.zhuanyer,r.zongfeir);printf("5秒钟后进入主界面\n注意,如果要修改,请先进入主界面,选择2,再次输入此数据!\n");Sleep(5000); }void choose(void)//对于合格学生进行标记 {Link p=head;while(p!=NULL){if((p->data.zheng)>=(r.zhengr)&&(p->data.shuxue)>=(r.shuxuer)&&(p->data.waiyu)>=(r.waiyur)&&(p->data.zhuanye)>=(r.zhuanyer)&&(p->data.zongfei)>=(r.zongfeir))p->data.hege='y';p=p->next;}}void sortAndOut(void)//对合格学生排序并输出 {int i,j,time=0;//用来记录有多少合格学生 Link p=head,q;hglink q1=hghead,q2,q3;while(q1!=NULL)//释放原存贮空间,因为当需要再排时原来存的顺序已经没有必要了 {q2=q1->Next;free(q1);q1=q2;}q2=hghead=(hglink)malloc(sizeof(hgNode)); while(p!=NULL)//将合格学生,全部保存到新建链表hghead {if(p->data.hege=='y'){q1=(hglink)malloc(sizeof(hgNode));q2->Next=q1;q1->point=p;q2=q1;time++;}p=p->next; }q1->Next=NULL;//结束保存指向合格学生的链表 //接下来对保存好的考生成绩进行排序q3=q1=hghead->Next;for(i=0;i<time-1;i++)//排序因为有time个考生,所以要进行如下次循环 {for(j=0;j<time-1-i;j++) { p=q1->point;q2=q1->Next;q=q2->point;if((p->data.zongfei)<=(q->data.zongfei)){q1->point=q;q2->point=p;}q1=q1->Next;}q1=q3;}q1=hghead->Next;system("CLS");q1=hghead->Next;printf("\t\t\t\t合格考生如下\n\n");while(q1!=NULL){printf("考生姓名 准考证号 报考专业\n");printf("%8s%9s%9s\n",(q1->point)->data.name,(q1->point)->data.zkz,(q1->point)->data.bkzy);printf("政治 数学 外语 专业 总分\n");printf("%4d%6d%6d%6d%6d\n\n\n",(q1->point)->data.zheng,(q1->point)->data.shuxue,(q1->point)->data.waiyu,(q1->point)->data.zhuanye,(q1->point)->data.zongfei);q1=q1->Next;}printf("5秒后进入主界面\n");Sleep(5000); }int firstshow(void){void add(void);char i;system("CLS"); printf("\t\t\t\t研究生初试录取\n");printf("\t\t\t *************************\n");printf("\t\t\t\t按 1 输入考生信息\n");printf("\t\t\t\t按 2 输入录取要求\n");printf("\t\t\t\t按 3 输出合格考生\n");printf("\t\t\t\t按 4 增加考生信息\n");printf("\t\t\t\t按 0 退出系统\n");printf("\t\t\t *************************\n");scanf("%c",&i);if(i=='0')exit(0);else if(i=='1')studentinfor();else if(i=='2')requ();else if(i=='3'){choose();sortAndOut(); }else if(i=='4')add();elsereturn 0;}void add(void){int i;Link q=tail,p;p=(Link)malloc(sizeof(Node));tail->next=p;do{system("CLS"); printf("\t\t\t\t按提示输入第 %d 个考生信息\n",c);printf("输入考生姓名\n");scanf("%s",p->data.name);printf("输入考生准考证号\n");scanf("%s",p->data.zkz);printf("输入考生报考专业\n");scanf("%s",p->data.bkzy);printf("输入考生 政治 成绩\n");scanf("%d",&p->data.zheng);printf("输入考生 数学 成绩\n");scanf("%d",&p->data.shuxue);printf("输入考生 外语 成绩\n");scanf("%d",&p->data.waiyu);printf("输入考生 专业 成绩\n");scanf("%d",&p->data.zhuanye);p->data.hege='n';p->data.zongfei=p->data.zhuanye+p->data.shuxue+p->data.waiyu+p->data.zheng; printf("是否结束考生信息输入?输入1继续,输入0退出\n");scanf("%d",&i);if(i==0)break; q=p;p=(Link) malloc(sizeof(Node));if(p==NULL){printf("溢出错误!!程序2秒后将自动关闭!!");Sleep(2000);exit(0);}q->next=p;c++; }while(1);p->next=NULL;q=tail;tail=p;//给尾结点赋值 system("CLS");Save(q); }int main(){int i;void studentinfor(void);int firstshow(void);do{firstshow();}while(1);return 0;}这是C的,你要的是什么?来自:求助得到的回答