第二';对于';在第一个'之后忽略循环;对于';c语言中计算标量积的程序中的循环
我试图扫描键盘上的两个向量输入,然后创建一个函数,返回两个向量的标量积。但是,当我运行程序时,只要它扫描第一个for循环中的第一个向量,程序就会结束,标量积为0。我不明白为什么它不让我扫描第二个向量。这是我的代码:第二';对于';在第一个'之后忽略循环;对于';c语言中计算标量积的程序中的循环,c,arrays,dynamic,malloc,allocation,C,Arrays,Dynamic,Malloc,Allocation,我试图扫描键盘上的两个向量输入,然后创建一个函数,返回两个向量的标量积。但是,当我运行程序时,只要它扫描第一个for循环中的第一个向量,程序就会结束,标量积为0。我不明白为什么它不让我扫描第二个向量。这是我的代码: #include <stdio.h> #include <stdlib.h> double scalarproduct(double *v, double *w, int n){ double vw[n]; for(int i = 0; i
#include <stdio.h>
#include <stdlib.h>
double scalarproduct(double *v, double *w, int n){
double vw[n];
for(int i = 0; i < n; i++){
vw[i] = (v[i] * w[i]);
}
double scalprod = 0;
for(int i = 0; i < n; i++){
scalprod += vw[i];
}
return scalprod;
}
int main(){
int n;
scanf("%d", &n);
double *v;
v = (double *) malloc(sizeof(double) * n);
double *w;
w = (double *) malloc(sizeof(double) * n);
for(int i = 0; i < 0; i++){
scanf("%lf", &v[i]);
}
for (int i = 0; i < n; i++){
scanf("%lf", &w[i]);
}
printf("Scalar product=%lf\n", scalarproduct(v,w,n));
return 0;
}
但是它只允许我输入到3.0,然后程序将第二个for循环跳过到print语句。我怎样才能解决这个问题 for的第一个
循环有一个输入错误:for(int i=0;i<0;i++)
它立即停止
应该是:
for (int i = 0; i < n; i++) {
第一个for
循环有一个输入错误:for(int i=0;i<0;i++)
它立即停止
应该是:
for (int i = 0; i < n; i++) {
for(int i=0;i<0;i++)
——可能需要更改扫描输入的第一个向量的循环限制<代码>:)
实际上,这是跳过的第一个循环;)旁注-您希望使用“calloc”而不是malloc。这将使分配的内存归零,消除许多潜在的陷阱。常用的方法是'double*v=(double*)calloc(n,sizeof(*v))for(int i=0;i<0;i++)
--可能需要更改扫描输入的第一个向量的循环限制<代码>:)实际上,这是跳过的第一个循环;)旁注-您希望使用“calloc”而不是malloc。这将使分配的内存归零,消除许多潜在的陷阱。常用的方法是'double*v=(double*)calloc(n,sizeof(*v));