#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 10
struct student
{
char Name[10];
char ID[10];
int Math;
int English;
int Chinese;
}stu[50];
void Input()
{
printf("请输入学生信息\n");
printf("\t\t姓名 学号 Math English Chinese\n");
for(int i=0;i<SIZE;i++)
{
printf("\t\t");
scanf("%s%s%d%d%d",stu[i].Name,stu[i].ID,&stu[i].Math,&stu[i].English,&stu[i].Chinese);
}
}
void save()
{
FILE *fp;
int i;
if((fp=fopen("student.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
int main()
{
Input();
save();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
char Name[10];
char ID[10];
int Math;
int English;
int Chinese;
}stu[50];
void Chinese_sort(struct student *p,int n);
void Math_sort(struct student *p,int n);
void English_sort(struct student *p,int n);
void Chinese_sort(struct student *p,int n)
{
int i,j;
struct student temp;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++){
if((p+j)->Chinese>(p+j+1)->Chinese){
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void English_sort(struct student *p,int n)
{
int i,j;
struct student temp;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++){
if((p+j)->English>(p+j+1)->English){
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void Math_sort(struct student *p,int n)
{
int i,j;
struct student temp;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++){
if((p+j)->Math>(p+j+1)->Math){
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
int main()
{
struct student stu[50],*p;
p=stu;
int n=10;
printf("语文排序如下:\n\n");
Chinese_sort(p,n);
for(int i=0;i<10;i++)
{
printf("\t\t姓名\t学号\t成绩\n");
printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].Chinese);
}
printf("数学排序如下:\n\n");
Math_sort(p,n);
for(int i=0;i<10;i++)
{
printf("\t\t姓名\t学号\t成绩\n");
printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].Math);
}
printf("英语排序如下:\n\n");
English_sort(p,n);
for(int i=0;i<10;i++)
{
printf("\t\t姓名\t学号\t成绩\n");
printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].English);
}
return 0;
}