C语言:输入5个数,用调用函数的方法,从小到大排序 用简单点的

如题所述

#include<stdio.h>

void sort(float *a, int n)

{

int i,j,tmp;

for(i=0; i<n-1; i++)

for(j=0; j<n-i-1; j++)

if(a[j]>a[j+1])

{

tmp = a[j];

a[j] = a[j+1];

a[j+1] = tmp;

}

}

void main()

{

float a[5];

int i;

printf("请输入五个数(逗号隔开):");

scanf("%f,%f,%f,%f,%f",&a[0],&a[1],&a[2],&a[3],&a[4]);

sort(a,5);

printf("排序后为:");

for(i=0; i<5; i++)

printf("%.2f ",a[i]);

printf("\n");

或者三个数的。

void sort(int *a, int *b, int *c)

{

int tmp;

if(*a>*b){

tmp = *b;

*b = *a;

*a = tmp;

}

if(*a>*c){

tmp = *c;

*c = *a;

*a = tmp;

}

if(*b>*c){

tmp = *c;

*c = *b;

*b = tmp;

}

return;

}

扩展资料:

C语言中没有预置的sort函数。如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序。 

一、可以编写自己的sort函数。
如下函数为将整型数组从小到大排序。void sort(int *a, int l)//a为数组地址,l为数组长度。

{    

int i, j;    

int v;    //排序主体
   

for(i = 0; i < l - 1; i ++)        

for(j = i+1; j < l; j ++)
       

{            

if(a[i] > a[j])//如前面的比后面的大,则交换。
           

{
               

v = a[i];
               

a[i] = a[j];
               

a[j] = v;
           

}
       

}

对于这样的自定义sort函数,可以按照定义的规范来调用。

二、C语言有自有的qsort函数。
功 能: 使用快速排序例程进行排序。头文件:stdlib.h
原型:

void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *)); 

参数:

1、待排序数组首地址。

2、数组中待排序元素数量。

3、各元素的占用空间大小4 指向函数的指针,用于确定排序的顺序,这个函数必须要自己写比较函数,即使要排序的元素是int,float一类的C语言基础类型。 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-26

1、在开头处定义了两个指针变量point_1和point_2。但此时他们并未指向任何一个变量,只是提供两个指针变量,规定他们可以指向整形变量,至于指向哪一个整形变量,要在程序语句中指定。程序第6,7两行的作用就是使point_1指向a,point_2指向b,此时point_1的值为&a(即a的地址),point_2的值为&b。

2、第10行输出*point_1和*point_2的值,其中的“*”表示“指向”。*point_1表示“指针变量point_1所指向的变量”,也就是变量a。*point_2表示“指针变量point_2所指向的变量”,也就是变量b。从运行结果来看他们也就是100和10.

3、程序中有两处出现*point_1和*point_2,但是两者含义不同。程序第5行的*point_1和*point_2表示定义两个指针变量*point_1和*point_2。它们前面的“*”只是表示该变量是指针变量。程序最后10行中的printf函数中的*point_1和*point_2则表示指针变量point_1和point_2所指向的变量。

本回答被网友采纳
第2个回答  推荐于2017-12-16

#include<stdio.h>

void sort(float *a, int n)

{

 int i,j,tmp;

 

 for(i=0; i<n-1; i++)

  for(j=0; j<n-i-1; j++)

   if(a[j]>a[j+1])

   {

    tmp = a[j];

    a[j] = a[j+1];

    a[j+1] = tmp;

   }

}

 

void main()

{

 float a[5];

 int i;

 

 printf("请输入五个数(逗号隔开):");

 scanf("%f,%f,%f,%f,%f",&a[0],&a[1],&a[2],&a[3],&a[4]);

 

 sort(a,5);

 printf("排序后为:");

 for(i=0; i<5; i++)

  printf("%.2f ",a[i]);

 printf("\n");

}

 

运行截图:

 

本回答被提问者采纳
第3个回答  2013-01-05
自定义一个交换两个数的函数

对5个数进行冒泡法
循环执行函数就行了
第4个回答  2013-01-05
void bubble_sort(int array[],int n)
{
int i,j,flag,temp;
for(i = 0; i < n-1; i++)
{
flag = 1;
for(j = 0; j < n-i-1; j++)
{
if(array[j] > array[j+1])
{
temp= array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = 0;
}
}
if(1 == flag)
{
printf("%d ",i); //首先打印出,在第几层循环时顺序已排好
break; //跳出循环
}
}
return;
}
调用时,n的值为5就可以了,你可以将输入的数据存储到长度为5的数组里面,然后调用这个排序方法,希望可以帮到你,望采纳
相似回答