如何修复错误冲突类型? c编程

时间:2015-11-12 23:14:14

标签: c error-handling compiler-errors conflicting-libraries

我正在尝试创建一个程序,询问我问题,但每次都有不同的数字,以便我可以练习参加学校比赛。这只是其中一个问题的一个简单示例,但每次我尝试编译程序时都会得到错误:随机浮点数传递给函数的冲突类型。我是编程新手,不知道出了什么问题。

#include <stdio.h>
#include <stdlib.h>

float fixran1();
float fixran2();
int ovrall=0;
float question1();

int main()
{
    question1();
}

question1( )
{
    float a, b;
    float ran11=fixran1((((float)rand()/(float)(RAND_MAX))*50)+25);
    float ran12=fixran2((((float)rand()/(float)(RAND_MAX))*15)+7);
    char ques1[]="If an employee works %f hours and is paid $%f per hour, how much is their gross pay?";

printf(ques1, ran11, ran12);
scanf("%f",a);
b=ran11*ran12;

if(a==b)
{
    printf("correct");
    ovrall=ovrall+1;
}
else
    printf("incorrect, the right answer is %f", b);
}





fixran1(float ran11)
{
    float i=ran11%.1;
    ran11=ran11-i;
    return(ran11);
}

fixran2(float ran12)
{
    float i=ran12%.01;
    ran12=ran12-i;
    return(ran12);
}

以下是我的错误:

 error: conflicting types for 'fixran1'
 error: invalid operands to binary % (have 'float' and 'double')
 error: conflicting types for 'fixran2'
 error: invalid operands to binary % (have 'float' and 'double') 

使用整数我没有遇到任何麻烦,但我无法使用花车工作。

2 个答案:

答案 0 :(得分:1)

您没有函数体的返回类型,因此它们默认为int与原型返回类型float冲突。

更改示例

question1( )

float question1()

等等。

还要添加传递给函数原型中函数的参数:

float fixran1(float ran11);
float fixran2(float ran12);

或(不一定需要指定参数名称):

float fixran1(float);
float fixran2(float);

答案 1 :(得分:0)

.1更改为.1f,将.01更改为.01f。这使得数字文字成为float而不是double