这是 2 个相同长度 vector 的点积函数。
我不明白如何构建数组,因为机器如何知道哪个输入到哪个输入(例如我想要 a={1,2,3} 但 123 的输入将是 a[0] = 123)...
我如何结束数组 [index] 输入以及如何结束整个数组。
#include <stdio.h>
#include <stdlib.h>
#define MAXINPUT 100
int dot_product(int v[], int u[], int n)
{
int result = 0;
int i;
for (i=0; i < n; i++)
result += v[i]*u[i];
return result;
}
int main(){
int v1[MAXINPUT];
int v2[MAXINPUT];
int count = 0
int i,print;
printf(" first vector:");
for(i=0;i<MAXINPUT;i++){
scanf("%d", &v1[i]);
count +=1;
}
printf(" second vector:");
for(i=0;i<MAXINPUT;i++)
scanf("%d", &v2[i]);
print = dot_product(v1, v2, count);
printf("v1*v2:%d",print);
return 0;
}
最佳答案
我在这里观察到的第一个问题是
count +=1;
其中 count
是一个未初始化的自动局部变量,这使得它的初始值不确定。尝试使用该值调用 undefined behavior .
您应该将 count
初始化为 0
。
也就是说,在这里,您需要用户输入与第一个数组完全相同维度的第二个数组。如果没有发生这种情况,您的程序将再次崩溃,因为您没有再次初始化数组。
关于c - 扫描到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40808143/