#include<stdio.h>
#include<math.h>
int n;
struct vector
{
int dir[100];
};
int dot(struct vector v1, struct vector v2)
{
int dp,j;
dp=0;
for(j=0;j<n;j++)
{
dp = dp + (v1.dir[j]*v2.dir[j]);
}
return dp;
}
float cosine(int vdot, float v1mod, float v2mod)
{
float cos1, vdo = vdot;
cos1 = (vdot/(v1mod*v2mod));
return cos1;
}
float modul(struct vector v1)
{
int j;
float v1mod;
float deg = 0;
for(j=0; j<n; j++)
{
deg = deg + ((v1.dir[j])*(v1.dir[j]));
}
v1mod = sqrt(deg);
}
int main()
{
int j;
scanf("%d", &n);
struct vector v1;
struct vector v2;
for(j=0;j<n;j++)
{
scanf("%d", &v1.dir[j]);
}
for(j=0;j<n;j++)
{
printf("%d/", v1.dir[j]);
}
printf("\n");
for(j=0;j<n;j++)
{
scanf("%d", &v2.dir[j]);
}
for(j=0;j<n;j++)
{
printf("%d/", v2.dir[j]);
}
printf("\n");
int vdot;
float v1mod, v2mod, cos2;
vdot = dot(v1,v2);
printf("%d\n", vdot);
v1mod = modul(v1);
printf("%f\n", v1mod);
v2mod = modul(v2);
printf("%f\n", v2mod);
cos2 = cosine(vdot, v1mod, v2mod);
printf("cosine = %f\n", cos2);
}
当我们编译代码时,余弦的输出显示“1.#QNANO。 我检查了所有的网站,但没有在哪里找到正确的原因发生 错误。 也可以指定有多少这样的错误类型。 **代码中的错误是故意的。
答案 0 :(得分:4)
Q
可能意味着它是quiet not-a-number。 O
可能意味着溢出。
您使用了什么确切的平台和编译器?
答案 1 :(得分:0)
所以我运行了一些代码并做了一些实验并遇到了这个错误。 (#QNANO) 我能提出的最有效的解释是数据说明符不匹配,即看看这个简单的代码:
#include<stdio.h>
int main()
{
int a,c;
a = 2;
float b;
b = 3;
c = a*b;
printf("%f",c);
return 0;
}
这个简单代码的输出是-1 #QNANO,所以我假设整数变量乘以浮点变量,结果存储在整数变量中,但是当我们打印c的值时,我们这样做使用%f,则整数变量无法转换为float,因此错误会被抛出。