对任意多个实数按降序排序。
要求:
(1)在main.c文件中写main函数,在main函数中输入多个实数,并在main函数中输出最终的排序结果。
(2)在sort.c文件中写sort函数,该函数实现对多个数进行排序,其中两数交换的功能由swap.c中的swap函数实现,也即调用swap函数实现两数的交换。
(3)在swap.c函数中实现两个实数的交换。
对任意多个实数按降序排序。
要求:
(1)在main.c文件中写main函数,在main函数中输入多个实数,并在main函数中输出最终的排序结果。
(2)在sort.c文件中写sort函数,该函数实现对多个数进行排序,其中两数交换的功能由swap.c中的swap函数实现,也即调用swap函数实现两数的交换。
(3)在swap.c函数中实现两个实数的交换。
修改的话就算了,我的建议是重写。
题目里要求main函数中输入多个实数,那应该声明个float或double型数组,你声明成int型就算了,还是用%s读入,%s是读取字符串的格式。还有自定义函数不一定都得硬写个返回值的,像这种排序函数,交换函数就没必要返回值了。
参考代码如下:
#include <stdio.h>
void swap(float* a, float* b)
{
int t = *b;
*b = *a;
*a = t;
}
void sort(float a[],int n)
{//降序排序,n为元素个数
for (int i = 1; i < n; i++)
{//冒泡排序法
for (int j = 0; j < n - i; j++)
{
if (a[j] < a[j + 1])
{
swap(&a[j], &a[j + 1]);//交换顺序
}
}
}
}
int main()
{
float a[5];
int i;
for (int i = 0; i < 5; i++)
{
scanf("%f", &a[i]);
}
sort(a,5);
for (int i = 0; i < 5; i++)
{
printf("%f ", a[i]);
}
return 0;
}