我收到消息:无法在分配中将 'float' 转换为 'float*' 并且我有一些逻辑错误
Posted
技术标签:
【中文标题】我收到消息:无法在分配中将 \'float\' 转换为 \'float*\' 并且我有一些逻辑错误【英文标题】: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 min
和int max
?
你声明了两次函数,但你从未调用它。 main() 中的声明应该是带有实际参数且没有返回类型规范的调用。复制和粘贴错误?
第二个声明似乎是试图调用它,但您还必须将int min, max
更改为float min, max
,并使用... &min, &max, ...
参数调用该函数。
请改进标题。如所写,标题没有提供有关问题的信息,这意味着其他有相同问题的人将无法找到它。标题“我正在尝试使此代码正常工作”适用于该站点上的几乎所有问题。 (你也忘了问一个问题。)
【参考方案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 之外看起来还不错,决定是将其声明为浮点指针还是浮点数
看main里面的声明,你在调用一个函数但是语法是声明的。
使用 mo 作为参数,但 mo 被定义为浮点变量,而函数根据声明接受指针,并且有一些与类型相关的警告
声明了整数,但使用 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);
所以你必须提供一个浮点指针,而不是一个浮点数。
【讨论】:
以上是关于我收到消息:无法在分配中将 'float' 转换为 'float*' 并且我有一些逻辑错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中将非 mime 消息转换为 mime 邮件消息
无法在测试中将 App Delegate 强制转换为 App Delegate