现在我们把两个向量存放到一个文件vec.txt中,文件的第一行为向量的长度,第二行和第三行为两个向量,第四行用来输出向量点积的结果。使用malloc来动态地创建两个一维数组,从文件中读取两个向量,调用函数来计算两个向量的点积。 提示:使用fscanf循环读取每个向量
时间: 2024-05-13 16:18:59 浏览: 64
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
double dot_product(double *vec1, double *vec2, int n) {
double result = 0.0;
for (int i = 0; i < n; i++) {
result += vec1[i] * vec2[i];
}
return result;
}
int main() {
FILE *fp = fopen("vec.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
// 读取向量长度
int n;
fscanf(fp, "%d", &n);
// 动态分配内存并读取两个向量
double *vec1 = (double *) malloc(n * sizeof(double));
double *vec2 = (double *) malloc(n * sizeof(double));
for (int i = 0; i < n; i++) {
fscanf(fp, "%lf", &vec1[i]);
}
for (int i = 0; i < n; i++) {
fscanf(fp, "%lf", &vec2[i]);
}
// 计算向量点积
double result = dot_product(vec1, vec2, n);
// 输出结果
printf("Dot product of two vectors: %lf\n", result);
// 释放内存并关闭文件
free(vec1);
free(vec2);
fclose(fp);
return 0;
}
```
注意要在最后释放动态分配的内存并关闭文件。
阅读全文