Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays C语言中两个向量的点积程序_Arrays_C_For Loop - Fatal编程技术网

Arrays C语言中两个向量的点积程序

Arrays C语言中两个向量的点积程序,arrays,c,for-loop,Arrays,C,For Loop,下面的代码没有错误,但未运行。 帮我找到那只虫子。 如何运行代码 #include<stdio.h> int main(){ int i, n; int vect_A[n], vect_B[n]; int result = 0; printf("Put down the size of vectors below\n"); scanf("%d", &n); printf(&

下面的代码没有错误,但未运行。 帮我找到那只虫子。 如何运行代码

#include<stdio.h>


int main(){
    int i, n;
    int vect_A[n], vect_B[n];
    int result = 0;
    
    printf("Put down the size of vectors below\n");
    scanf("%d", &n);

    printf("Write vector A:\t");
    scanf("%d", &vect_A[i-1]);

    printf("Write vector B:\t");
    scanf("%d", &vect_B[i-1]);

    for ( i = 0; i < n; i++)
    {
        result += vect_A[i]*vect_B[i];
    }
    printf("The inner product of these two vectors is %d\n", result);
}
#包括
int main(){
inti,n;
整数向量A[n],向量B[n];
int结果=0;
printf(“将向量的大小放在下面\n”);
scanf(“%d”和“&n”);
printf(“写入向量A:\t”);
scanf(“%d”和向量A[i-1]);
printf(“写入向量B:\t”);
scanf(“%d”和向量B[i-1]);
对于(i=0;i当您声明向量时,
n
未定义。当要求用户输入向量时,
i
也是未定义的。我猜你是想这样做的:

int main(){

  int i, n;
  printf("Put down the size of vectors below\n");
  scanf("%d", &n);
  
  int vect_A[n], vect_B[n];
  int result = 0;
    
    for ( i = 0; i < n; i++)
    {
      printf("Write vector A:\t");
      scanf("%d", &vect_A[i]);
    }

    for ( i = 0; i < n; i++)
    {
      printf("Write vector B:\t");
      scanf("%d", &vect_B[i]);
    }
    
    for ( i = 0; i < n; i++)
    {
        result += vect_A[i]*vect_B[i];
    }
    printf("The inner product of these two vectors is %d\n", result);
}
intmain(){
inti,n;
printf(“将向量的大小放在下面\n”);
scanf(“%d”和“&n”);
整数向量A[n],向量B[n];
int结果=0;
对于(i=0;i
当声明了
int i,n
时,两个变量都不会初始化。C/C++不会自动将大多数变量初始化为值。因此,当编译器为一个变量分配一个内存位置时,该变量的“初始化”值就是之前该内存位置中发生的任何值。这是一个垃圾值。更新向量的大小后,这不会影响到您声明的数组大小。您可以使用sizeof()来检查这一点(即
sizeof(vect_A)/sizeof(vect_A[0])
来获取数组中的元素数)

另一件事是,你只是在向量中填充一个元素。用户输入n的值后,可以使用for循环在数组中添加术语

这对我很有用:

#include<stdio.h>


int main(){
    int i, n;
    int result = 0;

    printf("Put down the size of vectors below\n");
    scanf("%d", &n);

    int vect_A[n], vect_B[n];

    printf("Write vector A:\t");
    for(i = 0; i < n; ++i)
    {
      printf("Term %d = ", i);
      scanf("%d", &vect_A[i]);
    }

    printf("Write vector B:\t");
    for(i = 0; i < n; ++i)
    {
      printf("Term %d = ", i);
      scanf("%d", &vect_B[i]);
    }

    for ( i = 0; i < n; i++)
    {
        result += vect_A[i]*vect_B[i];
    }
        printf("The inner product of these two vectors is %d\n", result);
}
#包括
int main(){
inti,n;
int结果=0;
printf(“将向量的大小放在下面\n”);
scanf(“%d”和“&n”);
整数向量A[n],向量B[n];
printf(“写入向量A:\t”);
对于(i=0;i
“下面的代码没有错误”-hm.当您定义
int vect_A[n]
时,
n
的值是多少?当你说
scanf(“%d”和&vect_A[i-1])
时,
i
的值是多少?每个向量扫描多少个值?打开所有编译器警告<代码>扫描(“%d”,&n)无法反向工作。C不是一种声明性语言。它根据语句流进行操作。不是未定义的,而是未初始化的