/*请大家看看,这是一段输入学生成绩的程序,
结果是自动排列大小,统计出优,中,差等级,
但到了按大小排列时就出错,为什么?*/
#include <stdio.h>
#include <string.h>
sort(int a[],int n, char style)
{
int i,j,m,k,max,min,sum,aver,e1,e2,e3,e4,e5;
printf("请输入分数\n");
for(k=0;k<n;k++)
{
scanf("%d",&a[k]);
if (a[k]<0 || a[k]>100)
{ printf("error!\n");
scanf("%d",&a[k]);
}
}
for(j=0;j<n-1;j++)
{
for(i=0;i<=j;i++)
{
if(a[i]>a[i+1])
{
m=a[i];
a[i]=a[i+1];
a[i+1]=m ;
}
}
}
if (style=='a')
{
printf("从高到低\n");
for(k=n-1;k>=0;k--)
printf("%d ",a[k]);
printf("\n");
}
else if(style=='d')
{
printf("从低到高\n");
for (k=0;k<n;k++)
printf("%d ",a[k]);
printf("\n");
}
max=a[0];
min=a[0];
sum=0;
for(i=0;i<n;i++)
{
sum=sum+a[i];
if (max <=a[i]) max=a[i];
if (min >=a[i]) min=a[i];
}
printf("sum=%d\n max=%d\n max=%d\n aver=%d\n",sum,max,min,sum);
e1=e2=e3=e4=e5=0;
for(i=0;i<n;i++)
{
if (a[i]>=90) e1=e1+1;
else if(a[i]>=80 && a[i]<90) e2=e2+1;
else if(a[i]>=70 && a[i]<80) e3=e3+1;
else if(a[i]>=60 && a[i]<70) e4=e4+1;
else if(a[i]<60) e5=e5+1;
}
printf("优=%d,良=%d,中=%d,及格=%d,不及格=%d",e1,e2,e3,e4,e5 );
}
main()
{
char x;
int z;
int s[30];
printf("请输入学生个数\n");
scanf("%d",&z);
printf("输入小写字母d为降序方式,输入小写字母a为升序方式\n");
scanf("%s",&x);
if (x!='a' && x!='d')
{
printf("出错!一定要是a或d,请修正\n");
printf("输入d为降序方式,输入a为升序方式\n");
scanf("%s",x);
}
sort(s,z,x);
}