该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#define STU_NUM 30
int Menu(void);
void ReadScore(long num[],float score[],int n);
void AverSumofScore(float score[],int n);
void SortbyScore(long num[],float score[],int n,
int(*compare)(float a,float b));
int Ascending(float a,float b);
int Descending(float a,float b);
void AsSortbyNum(long num[],float score[],int n);
void SearchbyNum(long num[],float score[],int n);
void StatisticAnalysis(float score[],int n);
void PrintScore(long num[],float score[],int n);
int main()
{
char itemSelected;
int n;
float score[STU_NUM];
long num[STU_NUM];
printf("Input student number(n
scanf("%d",&n);
while (1)
{
itemSelected=Menu();
switch(itemSelected)
{
case 1:ReadScore(num,score,n);
break;
case 2:AverSumofScore(score,n);
break;
case 3:SortbyScore(num,score,n,Descending);
printf("\nSort in descending order by score:\n");
PrintScore(num,score,n);
break;
case 4:SortbyScore(num,score,n,Ascending);
printf("\nSort in ascending order by score:\n");
PrintScore(num,score,n);
break;
case 5:AsSortbyNum(num,score,n);
printf("\nSort in ascending order by score:\n");
PrintScore(num,score,n);
break;
case 6:SearchbyNum(num,score,n);
break;
case 7:StatisticAnalysis(score,n);
break;
case 8:PrintScore(num,score,n);
break;
case 0:
printf("End of program!");
exit(0);
default:printf("Input error!");
break;
}
}
return 0;
}
int Menu(void)
{
int itemSelected;
printf("\nManagement for Stutents' scores\n");
printf("1. Append record\n");
printf("2. Caculate total and average score of course\n");
printf("3. Sort in descending order by score\n");
printf("4. Sort in ascending order by number\n");
printf("5. Search by number\n");
printf("6. Statistic analysis\n");
printf("7. List record\n");
printf("0. Exit\n");
printf("Please enter your choice:");
scanf("%d",&itemSelected);
return itemSelected;
}
void ReadScore(long num[],float score[],int n)
{
int i;
printf("Input student's ID and score:\n");
for (i=1;i
{
scanf("%ld%f",&num[i],&score[i]);
}
}
void AverSumofScore(float score[],int n)
{
int i;
float sum=0;
for(i=0;i
{
sum=sum+score[i];
}
printf("sum=%.0f,aver=%.2f\n",sum,n>0?sum/n:0);
}
void SortbyScore(long num[],float score[],int n,
int(*compare)(float a,float b))
{
int i,j,k;
float temp1;
long temp2;
for(i=0;i
{
k=i;
for(j=i+1;j
{
if((*compare)(score[j],score[k]))
{
k=j;
}
}
if(k!=i)
{
temp1=score[k];score[k]=score[i];score[i]=temp1;
temp2=num[k];num[k]=num[i];num[i]=temp2;
}
}
}
int Ascending(float a,float b)
{
return a
}
int Descending(float a,float b)
{
return a
}
void AsSortbyNum(long num[],float score[],int n)
{
int i,j,k;
float temp1;
float temp2;
for(i=0;i
{
k=i;
for(j=i+1;j
{
if(num[j]
{
k=j;
}
}
}
if(k!=i)
{
temp1=score[k];score[k]=score[i];score[i]=temp1;
temp2=num[k];num[k]=num[i];num[i]=temp2;
}
}
void SearchbyNum(long num[],float score[],int n)
{
long number;
int i;
printf("Inpur the number you want to search:");
scanf("%ld",&number);
for(i=0;i
{
if(num[i]==number)
{
printf("%ld\t%.0f\n",num[i],score[i]);
return;
}
}
printf("\nNot found!\n");
}
void StatisticAnalysis(float score[],int n)
{
int i,total=0,t[6]={0,0,0,0,0,0};
for(i=0,i
{
if(score[i]>=0&&score[i]<60)
{
t[0]++;
}
else if(score[i]<70)
{
t[1]++;
}
else if(score[i]<80)
{
t[2]++;
}
else if(score[i]<90)
{
t[3]++;
}
else if(score[i]<100)
{
t[4]++;
}
else if(score[i]==100)
{
t[5]++;
}
}
for (total=0,i=0;i<=5;i++)
{
total=total+t[i];
}
if(total!=n)
{
printf("Scores inputed are not in right scope!\n");
break;
}
for(i=0;i<=5;i++)
{
if(i==0)
{
printf("<60\t%d\t%.2f%%\n",t[i],(float)t[i]/n*100);
}
else if(i==5)
{
printf("%d\t%d\t%.2f%%\n",(i+5)*10,t[i],(float)t[i]/n
*100);
}
else
{
printf("%d-%d\t%D\t%.2f%%\n",(i+5)*10,(i+5)*10+9,t[i],
(float)t[i]/n*100);
}
}
}
void PrintScore(long num[],float score[],int n)
{
int i;
for(i=0;i
{
printf("%ld\t%.0f\n",num[i],score[i]);
}
}
}