以下是一个简单的结构体,结构体,我们需要了解他的用法,他的最大特点就是,可以多种数据集合在一起,然后直接整个结构体直接进行数据的赋值,这相较于普通的数据交换,这个提供了很大的便利
#include<stdio.h>
#include<string.h>
#define N 3
struct student
{
char no[20];
char name[8];
float a[4];
};
void input(struct student s[],int n);
void menu();
void output(struct student s[],int n);
void max(struct student s[],int n);
void sortaverage(struct student s[],int n);
void sortnumber(struct student s[],int n);
int main()
{
int z;
struct student stu[100];
input(stu,N);
while(1)
{
menu();
scanf("%d",&z);
if(z==0)break;
else if(z==1)output(stu,N);
else if(z==2)max(stu,N);
else if(z==3)sortaverage(stu,N);
else if(z==4)sortnumber(stu,N);
else printf("请重新输入\n");
}
return 0;
}
void input(struct student s[],int n)
{
int i,j;
printf("学号,名字,语文,数学,英语\n");
for(i=0; i<n; i++)
{
scanf("%s %s",s[i].no,s[i].name);
s[i].a[0]=0;
for (j=1; j<4; j++)
{
scanf("%f",&s[i].a[j]);
s[i].a[0]+=s[i].a[j];
}
s[i].a[0]/=3;
}
}
void menu()
{
printf("------menu------\n");
printf("-0----结束\n");
printf("-1----输出\n");
printf("-2----最高分\n");
printf("-3----平均分排序\n");
printf("-4----学号排序\n");
}
void max(struct student s[],int n)
{
int i,j,t,temp;
for(i=1; i<4; i++)
{
t=0;temp=0;
for (j=0; j<n; j++)
if(temp<s[j].a[i])
{
temp=s[j].a[i];t=j;
}
printf("%s %s ",s[t].no,s[t].name);
for(j=1;j<4;j++)
printf("%.1f ",s[t].a[j]);
printf("\n");
}
}
void output(struct student s[],int n)
{
int i,j;
printf("学号 名字 平均分 语文 数学 英语\n");
for(i=0; i<n; i++)
{
printf("%s %s",s[i].no,s[i].name);
for (j=0; j<4; j++)
printf("%.1f ",s[i].a[j]);
printf("\n");
}
}
void sortaverage(struct student s[],int n)
{
int i,j;
struct student std;
for(i=0;i<N-1;i++)
for(j=0;j<N-i-1;j++)
{
if(s[j].a[0]>s[j+1].a[0])
{
std= s[j];
s[j]= s[j+1];
s[j+1]= std;
}
}
}
void sortnumber(struct student s[],int n)
{
int i,j;
struct student std;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(strcmp(s[j].no,s[j+1].no)<0)
{
std= s[j];
s[j]= s[j+1];
s[j+1]= std;
}
}
/*
2000 kki 89 86 91
2001 jjk 97 96 90
2002 grt 67 89 76
*/
我这只是一些简单运用,其实也可以单独进行数据的存入,后面会学到数据怎么纯放在文件里面,这样我们每次输入的数据就可以被保存下来