使用 2 函数进行冒泡排序排序

sorting with bubble sort using 2 function

起初我使用冒泡排序对一些 numbers.It worked.And 进行排序,然后我再次尝试使用具有相同 logic.but 的 2 个函数的冒泡排序进行排序,但不是 working.I 我是 2/3 的新手 function.So 谁能帮我找出我逻辑中的问题?

First source

#include<stdio.h>
main()
{
    int i,j;
    float num[5], c;

    for(i=0;i<5;i++)
    {
        scanf("%f",&num[i]);
    }
    for(j=0;j<4;j++)
    {
        for(i=0;i<5;i++)
        {
            if(num[i]<num[i+1])
            {
                c=num[i];
                num[i]=num[i+1];
                num[i+1]=c;
            }
        }
    }
    for(i=0;i<5;i++)
    {
        printf("%.2f\n",num[i]);
    }
}

Second source w/function

#include<stdio.h>
void sort(int a[]);
void main()
{
    int i;
    double a[3], A, B, C;

    for(i=0;i<3;i++)
    {
        scanf("%lf",&a[i]);
    }

    sort(a);

    printf("In The Function\n");
    for(i=0;i<3;i++)
    {
        printf("%.2lf\n",a[i]);
    }

    return;
}

void sort(int a[])
{
    int i, n;
    double temp;

    for(n=0;n<2;n++)
    {
        for(i=0;i<3;i++)
        {
            if(a[i]<a[i+1])
            {
                temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
            }
        }
    }
    return;
}

不要忽略警告。

warning: passing argument 1 of ‘sort’ from incompatible pointer type [enabled by default]
     sort(a);
     ^
sort.c:2:6: note: expected ‘int *’ but argument is of type ‘double *’
 void sort(int a[]);
  ^

您已将 a 声明为 double,但您的 function 收到 a 作为 int。 改成如下。

void sort(double a[]);

你通过了双倍

double a;
sort(a);

主函数中的值,但在函数声明部分你的数据类型是整数

void sort(int a[])

更正为

void sort(double a[])