1.无指针
#include <stdio.h>
#include <stdlib.h>
#define N 30
int ReadScore(int score[])
{
int i = -1;
do{
i++;
printf("Input score:");
scanf("%d",&score[i]);
}while (score[i] >= 0);
return i;
}
void PrintScore(int score[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("%4d",score[i]);
}
printf("\n");
}
void AscendingSort(int a[],int n)
{
int i,j,k,temp;
for(i=0;i<n-2;i++)
{
k=1;
for(j=i+1;j<n;j++)
{
if(a[j]<a[k])
{
k=j;
}
}
if(k!=i)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
void DescendingSort(int a[],int n)
{
int i,j,k,temp;
for(i=0;i<n-1;i++)
{
k = i;
for(j=i+1;j<n;j++)
{
if(a[j]>a[i])
{
k=j;
}
}
if(k!=i)
{
temp = a[k];
a[k] = a[i];
a[i] = temp;
}
}
}
int main()
{
int score[N],n;
int order;
n = ReadScore(score);
printf("Total students are %d\n",n);
printf("Enter 1 to sort in ascending order,\n");
printf("Enter 2 to sort in descending order:");
scanf("%d",&order);
printf("Data items in original order\n");
PrintScore(score,n);
if(order == 1)
{
AscendingSort(score,n);
printf("Data items in ascending order\n");
}
else
{
DescendingSort(score,n);
printf("Data items in descending order\n");
}
PrintScore(score,n);
return 0;
}
2.有指针
#include <stdio.h>
#include <stdlib.h>
#define N 30
int ReadScore(int score[])
{
int i = -1;
do{
i++;
printf("Input score:");
scanf("%d",&score[i]);
}while (score[i] >= 0);
return i;
}
void PrintScore(int score[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("%4d",score[i]);
}
printf("\n");
}
int AscendingSort(int a,int b)
{
return a<b;
}
int DescendingSort(int a,int b)
{
return a>b;
}
void SelectionSort( int a[],int n,int(*p)(int a,int b) )
{
int i,j,k,temp;
for(i=0;i<n-1;i++)
{
k = i;
for(j=i+1;j<n;j++)
{
if( (*p)(a[j],a[k]) )
{
k=j;
}
}
if( k!=i )
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
int main()
{
int score[N],n;
int order;
n = ReadScore(score);
printf("Total students are %d\n",n);
printf("Enter 1 to sort in ascending order,\n");
printf("Enter 2 to sort in descending order:");
scanf("%d",&order);
printf("Data items in original order\n");
PrintScore(score,n);
if(order == 1)
{
SelectionSort(score,n,AscendingSort);
//AscendingSort(score,n);
printf("Data items in ascending order\n");
}
else
{
SelectionSort(score,n,DescendingSort);
//DescendingSort(score,n);
printf("Data items in descending order\n");
}
PrintScore(score,n);
return 0;
}