#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
typedef int datatype;
typedef struct
{
datatype num;
char name[20];
float china;
float math;
float english;
}recordtype;
typedef struct
{
recordtype r[maxsize+1];
int length;
}table;
void menu()
{
printf("\n\n\n");
printf("\t\t\t\t* * * * * * * * student system * * * * *\n");
printf("\t\t\t\t* 0.exit *\n");
printf("\t\t\t\t* 1.input *\n");
printf("\t\t\t\t* 2.number sort *\n");
printf("\t\t\t\t* 3.name sort *\n");
printf("\t\t\t\t* 4.math sort *\n");
printf("\t\t\t\t* 5.china sort *\n");
printf("\t\t\t\t* 6.English sort *\n");
printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t\t\tChoose0-7:");
}
void myexit()
{
int a;
char ch;
printf("\t是否确定退出?请选择 y or n: ");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
exit(0);
else
menu();
}
void input(table *tab)
{
int i=1;
printf("please enter name number china math English 空格隔开,#号结束:\n");
while(1)
{
scanf("%s",&tab->r[i].name);
if(!strcmp(tab->r[i].name,"#"))
break;
scanf("%d",&tab->r[i].num);
scanf("%f",&tab->r[i].china);
scanf("%f",&tab->r[i].math);
scanf("%f",&tab->r[i].english);
i++;
}
tab->length=i-1;
}
void output(table tab)
{
int i;
printf("\t\tname\tnumber\tmath\tchina\tEnglish\n");
for(i=1;i<=tab.length;i++)
{
printf("\t\t%s\t%d\t%.2f\t%.2f\t%.2f\n",tab.r[i].name,tab.r[i].num,tab.r[i].china,tab.r[i].math,tab.r[i].english);
}
printf("\n");
}
void numbersort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(tab->r[0].num<tab->r[j].num&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
void namesort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(strcmp(tab->r[0].name,tab->r[j].name)&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
void mathsort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(tab->r[0].math<tab->r[j].math&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
void chinasort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(tab->r[0].china<tab->r[j].china&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
void englishsort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(tab->r[0].english<tab->r[j].english&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
int main()
{
int n;
table t;
menu();
scanf("%d",&n);
while(n)
{
switch(n)
{
case 0:
myexit();
break;
case 1:
input(&t);
break;
case 2:
numbersort(&t);
output(t);
break;
case 3:
namesort(&t);
output(t);
break;
case 4:
mathsort(&t);
output(t);
break;
case 5:
chinasort(&t);
output(t);
break;
case 6:
englishsort(&t);
output(t);
break;
default:
break;
}
getch();
menu();
scanf("%d",&n);
}
return 0;
}
#include <stdlib.h>
#define maxsize 100
typedef int datatype;
typedef struct
{
datatype num;
char name[20];
float china;
float math;
float english;
}recordtype;
typedef struct
{
recordtype r[maxsize+1];
int length;
}table;
void menu()
{
printf("\n\n\n");
printf("\t\t\t\t* * * * * * * * student system * * * * *\n");
printf("\t\t\t\t* 0.exit *\n");
printf("\t\t\t\t* 1.input *\n");
printf("\t\t\t\t* 2.number sort *\n");
printf("\t\t\t\t* 3.name sort *\n");
printf("\t\t\t\t* 4.math sort *\n");
printf("\t\t\t\t* 5.china sort *\n");
printf("\t\t\t\t* 6.English sort *\n");
printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t\t\tChoose0-7:");
}
void myexit()
{
int a;
char ch;
printf("\t是否确定退出?请选择 y or n: ");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
exit(0);
else
menu();
}
void input(table *tab)
{
int i=1;
printf("please enter name number china math English 空格隔开,#号结束:\n");
while(1)
{
scanf("%s",&tab->r[i].name);
if(!strcmp(tab->r[i].name,"#"))
break;
scanf("%d",&tab->r[i].num);
scanf("%f",&tab->r[i].china);
scanf("%f",&tab->r[i].math);
scanf("%f",&tab->r[i].english);
i++;
}
tab->length=i-1;
}
void output(table tab)
{
int i;
printf("\t\tname\tnumber\tmath\tchina\tEnglish\n");
for(i=1;i<=tab.length;i++)
{
printf("\t\t%s\t%d\t%.2f\t%.2f\t%.2f\n",tab.r[i].name,tab.r[i].num,tab.r[i].china,tab.r[i].math,tab.r[i].english);
}
printf("\n");
}
void numbersort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(tab->r[0].num<tab->r[j].num&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
void namesort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(strcmp(tab->r[0].name,tab->r[j].name)&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
void mathsort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(tab->r[0].math<tab->r[j].math&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
void chinasort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(tab->r[0].china<tab->r[j].china&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
void englishsort(table *tab)
{
int i,j,d;
d=tab->length/2;
while(d>=1)
{
for(i=d+1;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
j=i-d;
while(tab->r[0].english<tab->r[j].english&&j>0)
{
tab->r[j+d]=tab->r[j];
j=j-d;
}
tab->r[j+d]=tab->r[0];
}
d=d/2;
}
}
int main()
{
int n;
table t;
menu();
scanf("%d",&n);
while(n)
{
switch(n)
{
case 0:
myexit();
break;
case 1:
input(&t);
break;
case 2:
numbersort(&t);
output(t);
break;
case 3:
namesort(&t);
output(t);
break;
case 4:
mathsort(&t);
output(t);
break;
case 5:
chinasort(&t);
output(t);
break;
case 6:
englishsort(&t);
output(t);
break;
default:
break;
}
getch();
menu();
scanf("%d",&n);
}
return 0;
}