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

 我来答
博学小赵爱生活
高能答主

2019-09-27 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:456 获赞数:111889

向TA提问 私信TA
展开全部

#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语言基础类型。 

小周爱唠叨
高粉答主

2018-06-26 · 说的都是干货,快来关注
知道小有建树答主
回答量:966
采纳率:100%
帮助的人:34万
展开全部

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所指向的变量。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
晨扬钟m
推荐于2017-12-16 · TA获得超过101个赞
知道答主
回答量:128
采纳率:0%
帮助的人:72.3万
展开全部

#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");

}

 

运行截图:

 

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IronAge
2013-01-05 · TA获得超过1771个赞
知道小有建树答主
回答量:352
采纳率:0%
帮助的人:198万
展开全部
自定义一个交换两个数的函数

对5个数进行冒泡法
循环执行函数就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
系榆6I
2013-01-05 · TA获得超过389个赞
知道小有建树答主
回答量:359
采纳率:0%
帮助的人:253万
展开全部
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的数组里面,然后调用这个排序方法,希望可以帮到你,望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式