匿名用户
1级
-01-16 回答
//演示输入N个数,并按大小顺序输出
#include
#define N 10
float increase(float *array,unsigned char n);//申明使数组递增函数
void main()
{
unsigned char i,quit;
float number[N];
printf("请输入%d个数据,每个数输入后以回车键结束。",N);
again: for(i=0;i
{
printf("\n请输入第%d个数:",i+1);
scanf("%f",&number[i]);
}
increase(number,N);
printf("\n您输入的数据按从大到小顺序输出如下:");
for(i=0;i
{
printf("\n %10.2f",number[i]);//保留两位小数输出最大数
}
printf("\n继续测试请按Y或y,退出请按其它任意键。\n");
quit=getch();
if(quit=='y'||quit=='Y') goto again;
getch();
}
//方法1用指针实现 冒泡排序法(大数由底部往上冒)
/*
float increase(float *array,unsigned char n)
{
unsigned char i,j;
float temp,*ip;
for(i=0;i
{
for(j=n-1;j>i;j--)//注意j的结束条件要写对
{
ip=array;
if(*(ip+j)>*(ip+(j-1) ))
{
temp=*(ip+j);
*(ip+j)=*(ip+(j-1) );
*(ip+(j-1))=temp;
}
}
}
}
*/
//方法2用指针实现 快速排序法
float increase(float *array,unsigned char n)
{
unsigned char i,j,k;
float temp,*ip;
for(i=0;i
{
k=i;
for(j=i+1;j
{
ip=array;
if(*(ip+k)
{
k=j;//记住最大数的下标(位置)
}
}
{
ip=array;
temp=*(ip+k);
*(ip+k)=*(ip+i);
*(ip+i)=temp;
}
}
}