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不是一种声明性语言。它根据语句流进行操作。不是未定义的,而是未初始化的