C语言把两个向量存放到一个文件vec.txt中,文件的第一行为向量的长度,第二行和第三行为两个向量,第四行用来输出向量点积的结果。使用malloc来动态地创建两个一维数组,从文件中读取两个向量,调用函数来计算两个向量的点积。 提示:使用fscanf循环读取每个向量
时间: 2023-06-18 11:08:54 浏览: 109
下面是一份示例代码:
```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));
// 读取向量1
for (int i = 0; i < n; i++) {
fscanf(fp, "%lf", &vec1[i]);
}
// 读取向量2
for (int i = 0; i < n; i++) {
fscanf(fp, "%lf", &vec2[i]);
}
// 计算点积
double result = dot_product(vec1, vec2, n);
// 输出结果
printf("Dot product: %lf\n", result);
// 释放内存
free(vec1);
free(vec2);
// 关闭文件
fclose(fp);
return 0;
}
```
假设 `vec.txt` 的内容为:
```
3
1.0 2.0 3.0
4.0 5.0 6.0
```
则程序的输出为:
```
Dot product: 32.000000
```
阅读全文