排序问题
题目: 1.在函数中进行10个学生成绩从高到低排名 sort(int a[10])2.改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名,
3.改进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如 style 为 ‘a’按升序排,style为’d’按降序排。(a:ascending 升,d:descending 降)
#include <stdio.h>
#include <stdlib.h>
int sort1(int a[10])
{
int i,j,t;
printf("Please input 10 students performance:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
if(a[j+1]>a[j])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
int sort2(int a[],int n)
{
int i,j,t;
while(scanf("%d",&a[n])&&a[n]!='\n')
{
for(i=0;i<n;i++)
{
for(j=1;j<n-1;j++)
if(a[j+1]>a[j])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;;i++)
printf("%d\t",a[i]);
}
int sort3(int a[],int n,char style)
{
int i,j,t;
printf("Please input sort order a or d:");
style=getche();
switch(style)
{
case 'a':
while(scanf("%d",&a[n])&&a[n]!='\n')
{
for(i=0;i<n;i++)
{
for(j=1;j<n-1;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=a[j];
}
}
}
for(i=0;;i++)
printf("%d\t",a[i]);
break;
case 'd':
while(scanf("%d",&a[n])&&a[n]!='\n')
{
for(i=0;i<n;i++)
{
for(j=1;j<n-1;j++)
if(a[j+1]>a[j])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=a[j];
}
}
}
for(i=0;;i++)
printf("%d\t",a[i]);
break;
default:
printf("Input error!");
break;
}
}
main()
{
char style;
int a[10],n,i,j,k;
int s1,s2,s3;
printf("Please input 10 students performance:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
s1=sort1(a[10]);
printf("Please input n:\n");
scanf("%d",n);
s2=sort2(a,n);
printf("Please input style and n:\n");
scanf("%c%d",&style,&n);
s3=sort3(a,n,style);
printf("%d",s1);
printf("\n%d",s2);
printf("\n%d",s3);
return 0;
}
这个程序哪里错了!如果可以,就把正确的写出来。