【问题标题】:I get the message: Cannot convert 'float' to 'float*' in assignment and i have some logical mistakes我收到消息:无法在分配中将 'float' 转换为 'float*' 并且我有一些逻辑错误
【发布时间】:2019-04-08 22:59:58
【问题描述】:

我的编译器有问题,我一定有一些逻辑错误(C语言) 我想要一个 void 函数,它可以给我最高价格、最低价格和最多 100 个价格的表的平均值。如果用户给price=-1我希望程序结束!

这是我的代码:

#include <stdio.h>

void function(float pin[],int j,float *min,float *max,float *mo,int cnt);

int main()
{

    int i=0,count=0;

    float prc[100],mo;
    for(i=0;i<=99;i++)
    {
        printf("Enter price:");
        scanf("%f",&prc[i]);
            if(prc[i]==-1)
        {
            break;
        }
        count++;
    }

    int min=prc[0];
    int max=prc[0];
    void function(float prc,int i,float *min,float *max,float *mo,int count);
    printf("Minimum price is:%f Maximum price is:%f and Mo is:%f",min,max,mo);

    return 0;
}

void function(float pin[],int j,float *min,float *max,float *mo,int cnt)
{
    float sum;

    for(j=0;j<=cnt;j++)
    {
        if(pin[j]<*min)
        {
            min=pin[j];
        }
        if(pin[j]>*max)
        {
            *max=pin[j];
        }
        sum=+pin[j];
    }
    *mo=sum/j;
}

【问题讨论】:

  • 相对于您的预期,它在做什么/不做什么?
  • 当您在其他地方处理float 值时,为什么要定义int minint max
  • 你声明了两次函数,但你从未调用它。 main() 中的声明应该是带有实际参数且没有返回类型规范的调用。复制和粘贴错误?
  • 第二个声明似乎是试图调用它,但您还必须将int min, max 更改为float min, max,并使用... &amp;min, &amp;max, ... 参数调用该函数。
  • 请改进标题。如所写,标题没有提供有关问题的信息,这意味着其他有相同问题的人将无法找到它。标题“我正在尝试使此代码正常工作”适用于该站点上的几乎所有问题。 (你也忘了问一个问题。)

标签: c dev-c++


【解决方案1】:

看起来你有很多小错误(缺少取消引用、使用超出范围的变量、错误的运算符等):

#include <stdio.h>

void function(float pin[], float *min, float *max, float *mo, int cnt);

int main()
{
    int i=0, count=0;

    float prc[100], mo;
    for (i=0; i<=99; i++)
    {
        printf("Enter price:");
        scanf("%f", &prc[i]);
        if (prc[i] == -1)
        {
            break;
        }

        count++;
    }

    float min=prc[0];
    float max=prc[0];
    function(&prc[0], &min, &max, &mo, count);
    printf("Minimum price is:%f Maximum price is:%f and Mo is:%f", min, max, mo);

    return 0;
}

void function(float pin[], float *min, float *max, float *mo, int cnt)
{
    float sum = 0.0f;

    for (int j=0; j < cnt; j++)
    {
        if (pin[j] < *min)
        {
            *min = pin[j];
        }
        if (pin[j] > *max)
        {
            *max = pin[j];
        }

        sum += pin[j];
    }

    *mo = sum / cnt;
}

【讨论】:

    【解决方案2】:

    函数有几个错误:

    我已经修改了代码,除了函数参数 mo 之外看起来还不错,决定是将其声明为浮点指针还是浮点数

    1. 看main里面的声明,你在调用一个函数但是语法是声明的。

    2. 使用 mo 作为参数,但 mo 被定义为浮点变量,而函数根据声明接受指针,并且有一些与类型相关的警告

    3. 声明了整数,但使用 float %f 的格式说明符打印它们

    包括

    void function(float pin[],int j,float *min,float *max,float *mo,int cnt);
    
    int main()
    {
    
        int i=0,count=0;
    
        float prc[100],mo;
        for(i=0;i<=99;i++)
        {
            printf("Enter price:");
            scanf("%f",&prc[i]);
                if(prc[i]==-1)
            {
                break;
            }
            count++;
        }
    
        int min=prc[0];
        int max=prc[0];
        function(prc,i,min,max,mo,count);
        printf("Minimum price is:%f Maximum price is:%f and Mo is:%f",min,max,mo);
    
        return 0;
    }
    
    void function(float pin[],int j,float *min,float *max,float *mo,int cnt)
    {
        float sum;
    
        for(j=0;j<=cnt;j++)
        {
            if(pin[j]<*min)
            {
                *min=pin[j];
            }
            if(pin[j]>*max)
            {
                *max=pin[j];
            }
            sum=+pin[j];
        }
        *mo=sum/j;
    }
    

    【讨论】:

    • 感谢您的分析!
    【解决方案3】:

    指针和类型使用错误,使用

    float min=prc[0];
    float max=prc[0];
    function(prc,i,&min,&max,&mo,count);
    

    您声明为:

    void function(float pin[],int j,float *min,float *max,float *mo,int cnt);
    

    所以你必须提供一个浮点指针,而不是一个浮点数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多