arrays - C中2个向量的点积程序
问题描述
下面的代码没有错误,但没有运行。帮我找出错误。可以做些什么来运行代码?
#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 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);
}
推荐阅读
- date - perl 的带符号的日期时间减法
- google-sheets - 如何编写查询函数来汇总“数据”表中的一些信息
- wordpress - 根据数量和位置更改价格
- facebook-graph-api - 未显示审阅者姓名
- sublimetext - 在 Sublime 文本 4 中输入相同的字符时覆盖下一个字符
- ios - 为什么我们对 Xcode 中的静态库和框架有这种令人困惑的设置
- python - 尝试从 Reddit API 获取访问令牌时响应 400 'Bad Request'
- python - 使用 python 脚本运行 xfce4-terminal 下拉菜单,而不会立即关闭
- javascript - ReactJS:Javascript fetch 适用于桌面浏览器,但在 IOS safari 上返回 403 错误(未提供身份验证凭据)
- java - 添加一个动态按钮并在它被点击时指定一个方法