C语言. 用指针与数组作为函数参数,按下面四种情况对数组float a[10]进行降序排序:

用指针与数组作为函数参数,按下面四种情况对数组float a[10]进行降序排序:
(1)函数的实参为数组名,形参为数组。
(2)函数的实参为数组名,形参为指针变量,。
(3)函数的实参为指针变量,形参为数组。
(4)函数的实参为指针变量,形参为指针变量。

需要可以正确运行并有结果的. 不要照搬些不能用的代码 谢谢

楼主,我只能实现1、4,我想,在C中应该不存在有2,3两种情况吧,稍后来写代码。

第一种:

#include<stdio.h>

void Calculate(float *pfloat);

int main()
{
    float a[10];
    int i;

    for(i=0;i<10;i++)
    {
        printf("Please Enter %d Data\n",i+1);
        scanf("%f\n",&a[i]);
    }
    Calculate(a);
    printf("Calculate After");
    for(i=0;i<10;i++)
    {
        printf("%f ",a[i]);
    }
    getch();
    return 0;
}

void Calculate(float *pfloat)
{
    int i,j;
    float ftemp;
    for(j=0;j<10;j++)
    {
        for(i=1;i<10-j;i++)
        {
            if (*(pfloat+i-1) > *(pfloat+i))
            {
               ftemp=*(pfloat+i-1);
               *(pfloat+i-1)= *(pfloat+i);
               *(pfloat+i)=ftemp;
            }
        }
    }
}

第四种

#include<stdio.h>

void Calculate(float *pfloat);

int main()
{
    float a[10],*pfloat;
    int i;

    for(i=0;i<10;i++)
    {
        printf("Please Enter %d Data\n",i+1);
        scanf("%f\n",&a[i]);
    }
    pfloat=a;
    Calculate(pfloat);
    printf("Calculate After");
    for(i=0;i<10;i++)
    {
        printf("%f ",a[i]);
    }
    getch();
    return 0;
}

void Calculate(float *pfloat)
{
    int i,j;
    float ftemp;
    for(j=0;j<10;j++)
    {
        for(i=1;i<10-j;i++)
        {
            if (*(pfloat+i-1) > *(pfloat+i))
            {
               ftemp=*(pfloat+i-1);
               *(pfloat+i-1)= *(pfloat+i);
               *(pfloat+i)=ftemp;
            }
        }
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-31
这个1234有区别吗?形参是数组名和指针不是一回事?
第2个回答  2013-05-31
问题倒是不难,
但是就是太简单但很繁琐
又没分的说做啊
相似回答
大家正在搜