为什么我得到0的输出?我认为我的角度转换和我的等式可能存在问题,但是摆弄它并移动一些东西总会给我相同的结果。为什么我得到0的输出0
我的目标是写一个C代码,将计算角度θ为任何两个给定的矢量u和v。
#include <stdio.h>
#include <math.h>
int main()
{
double ux, uy;
double vx, vy;
double inner_product(double vx, double vy, double ux, double uy);
double v;
double u;
double i;
double x;
double k;
double pi;
double angle;
double p;
ux = 1.0;
uy = 1.0;
vx = 1.0;
vy = 1.0;
printf ("input value for ux\n", ux);
scanf_s ("%f", &ux);
printf ("input value for uy\n", uy);
scanf_s ("%f", &uy);
printf ("input value for vx\n", vx);
scanf_s ("%f", &vx);
printf("input value for vy\n", vy);
scanf_s ("%f", &vy);
u = ux * vx;
v = uy * vy;
i = u * v;
x = u * u;
k = v * v;
pi = acos(-1.0);
p = acos(i/(sqrt(x * k)));
angle = ((p * 180)/pi); //converting from radians to degrees
printf("%f", angle);
return;
}
一个很好的开始将启用编译器警告,并消除它们。看看前几个'printf'调用。您传递的是未使用的值。为什么?删除它们。 –
@TomKarzes通过删除ux = ...我得到未初始化的错误,我将如何能够消除这些错误? – DanielRossi
@DanielRossi 1.初始化要读取的变量以防万一读数失败或检查读函数的返回值以检查读数是否成功。 2.删除'printf()'*的未使用*参数。请注意,'printf()'上的多余参数只是被评估和忽略,所以它们不会有害。 – MikeCAT