扫描到阵列

时间:2016-11-25 15:24:11

标签: c arrays scanf

这是一个相同长度的2个向量的dot_product函数。

我不明白如何构建数组,因为机器将如何知道输入到哪个输入(例如我想要一个= {1,2,3}但是123的输入将会出现[ 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;
}

1 个答案:

答案 0 :(得分:1)

我在这里看到的第一个问题是

 count +=1;

其中count是未初始化的自动局部变量,这使得它的初始值不确定。尝试使用该值会调用undefined behavior

您应该将count初始化为0

也就是说,在这里,您依赖于用户输入第二个数组 exact 与第一个数组相同的维度。如果没有发生,你的程序会爆炸,因为你没有再次初始化阵列。