现在我们把两个向量存放到一个文件vec.txt中,文件的第一行为向量的长度,第二行和第三行为两个向量,第四行用来输出向量点积的结果。使用malloc来动态地创建两个一维数组,从文件中读取两个向量,调用函数来计算两个向量的点积。 提示:使用fscanf循环读取每个向量
时间: 2024-05-01 18:23:54 浏览: 63
word2vec词向量训练及中文文本相似度计算
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
double dot_product(double *vec1, double *vec2, int len) {
double result = 0;
for (int i = 0; i < len; i++) {
result += vec1[i] * vec2[i];
}
return result;
}
int main() {
FILE *fp;
int len;
double *vec1, *vec2, dot;
fp = fopen("vec.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return -1;
}
fscanf(fp, "%d", &len);
vec1 = (double*) malloc(len * sizeof(double));
vec2 = (double*) malloc(len * sizeof(double));
for (int i = 0; i < len; i++) {
fscanf(fp, "%lf", &vec1[i]);
}
for (int i = 0; i < len; i++) {
fscanf(fp, "%lf", &vec2[i]);
}
dot = dot_product(vec1, vec2, len);
printf("The dot product of the two vectors is: %lf\n", dot);
free(vec1);
free(vec2);
fclose(fp);
return 0;
}
```
假设vec.txt文件中的内容如下:
```
3
1.0 2.0 3.0
4.0 5.0 6.0
```
程序将会输出:
```
The dot product of the two vectors is: 32.000000
```
阅读全文