基于线性表存储结构,用c语言编程求两个向量夹角的余弦
时间: 2023-03-28 15:02:59 浏览: 105
线性表-数据结构与算法(C语言版) 定义线性表节点的结构.pdf
可以回答这个问题。假设两个向量分别为a和b,它们的长度分别为n,那么它们的夹角余弦可以通过以下公式计算:
cosθ = (a·b) / (|a|·|b|)
其中,a·b表示向量a和向量b的点积,|a|和|b|分别表示向量a和向量b的模长。具体的c语言代码实现可以参考以下代码:
#include <stdio.h>
#include <math.h>
#define MAX_LEN 100
typedef struct {
int len;
double data[MAX_LEN];
} Vector;
double dot_product(Vector a, Vector b) {
double result = ;
for (int i = ; i < a.len; i++) {
result += a.data[i] * b.data[i];
}
return result;
}
double vector_length(Vector v) {
double result = ;
for (int i = ; i < v.len; i++) {
result += v.data[i] * v.data[i];
}
return sqrt(result);
}
double cosine(Vector a, Vector b) {
double dot = dot_product(a, b);
double len_a = vector_length(a);
double len_b = vector_length(b);
return dot / (len_a * len_b);
}
int main() {
Vector a = {3, {1, 2, 3}};
Vector b = {3, {4, 5, 6}};
double cos = cosine(a, b);
printf("cosine = %f\n", cos);
return ;
}
阅读全文