错误:'组件的冲突类型'

时间:2018-01-08 17:49:32

标签: c compiler-errors

有人可以指出我做错了什么,我对c编程很新。 我一直在为“组件”提供相互冲突的类型。错误。

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

int main()
{
    float Vo,ang;
    printf("Enter Velocity:");
    scanf("%f",&Vo);
    printf("Enter Angle:");
    scanf("%f",&ang);
    printf("The x component is %f and the y component is %f",components(Vo,ang));

}

float components(float Vo, float ang,float Vx, float Vy)
{
    Vx=Vo*cos(ang);
    Vy=Vo*sin(ang);
    return Vx,Vy;
}

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

在您调用它的位置之前移动被调用函数的定义。 或者在main()之前提供原型,即插入

float components(float Vo, float ang,float Vx, float Vy);

之前

int main()

这样编译器就不必猜测调用该函数所涉及的类型。由于编译器猜测错误,它后来抱怨不匹配的类型。在修复该问题时更改编译器看到的顺序。

此外,

components(Vo,ang)
提供给printf的值中的

只给出一个值,而带有格式字符串的printf()则需要两个值 您需要将两个单独的值写入两个变量,然后将这些变量赋予printf。例如,您可以为函数提供两个参数,指向合适变量的指针。

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

void components(float Vo, float ang, float* outpVx, float* outpVy)
{
    *outpVx=Vo*cos(ang);
    *outpVy=Vo*sin(ang);
}

int main(void)
{
    float Vo,ang;
    float outVx=0.0;
    float outvy=0.0;

    printf("Enter Velocity:");
    scanf("%f",&Vo);
    printf("Enter Angle:");
    scanf("%f",&ang);
    components(Vo,ang, &outVx, &outVy);
    printf("The x component is %f and the y component is %f", outVx, outVy);

    return 0;    
}