arrays - 在二维数组中添加元素时得到错误的输出
问题描述
我现在正在学习 C 编程,当我在数组中添加两个元素时没有得到正确的输出,我期待你的帮助来了解这个问题。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int limit = 0, sum[limit][3];
int a[limit][3];
int b[limit][3];
printf("Enter the size of arrays: \n");
fflush(stdout);
scanf("%d", &limit);
printf("Enter the values of Array 1");
fflush(stdout);
for (int i = 0; i < limit; i++) {
for (int j = 0; j < limit; j++) {
scanf("%d", &a[i][j]);
}
}
printf("Array 1: \n");
fflush(stdout);
for (int i = 0; i < limit; i++) {
for (int j = 0; j < limit; j++) {
printf("%d\t", a[i][j]);
}
printf("\n");
}
printf("Enter the values of Array 2");
fflush(stdout);
for (int i = 0; i < limit; i++) {
for (int j = 0; j < limit; j++) {
scanf("%d", &b[i][j]);
}
}
printf("Array 2: \n");
for (int i = 0; i < limit; i++) {
for (int j = 0; j < limit; j++) {
printf("%d\t", b[i][j]);
}
printf("\n");
}
for (int i = 0; i < limit; i++) {
for (int j = 0; j < limit; j++) {
sum[i][j]= a[i][j] + b[i][j];
}
}
printf("Sum of 2 arrays: \n");
for (int i = 0; i < limit; i++) {
for (int j = 0; j < limit; j++) {
printf("%d\t", sum[i][j]);
}
printf("\n");
}
return EXIT_SUCCESS;
}
电流输出:
输入数组的大小:
3
输入数组 1 的值
12
12
12
12
12
12
12
12
12
阵列 1:
12 12 12
12 12 12
12 12 12
输入数组 2 的值
11
11
11
11
11
11
11
11
11
阵列 2:
11 11 11
11 11 11
11 11 11
2个数组的总和:
22 22 22
22 22 22
22 22 22
我发现我在代码中给出的确切数组不能锻炼。我的预期输出是:
23 23 23
23 23 23
23 23 23
解决方案
在:
int limit = 0, sum[limit][3];
int a[limit][3];
int b[limit][3];
limit
为 0,您的数组将是:
int sum [0][3];
int a[0][3];
int b[0][3];
他们将没有任何空间。
limit
你应该只在输入之后声明你的数组。
另请注意,数组的第二维3
在您的内部for
循环中固定为 ,而不是使用limit
您应该使用该常量值,否则,如果limit
是 4 或更多,您的程序将访问其边界之外的数组,调用未定义的行为。
推荐阅读
- c# - LINQ 加入扁平化结果(SelectMany?)
- python - 在 django 社交媒体网络中创建一个赞按钮
- flutter - 如何在 Flutter 中解析没有数组(映射字符串)的 JSON 对象
- vb6 - 根据其他切换按钮状态更改切换按钮状态
- javascript - 涉及递归函数的迷宫 Javascript 问题
- r - 我如何从fasta文件中分离国家和加入
- python - Python openpyxl库拒绝加载我的excel文档
- .htaccess - 在同一个 .htaccess 中重写多个 URL
- c# - 使用谓词绑定在命令上的搜索栏不起作用。Xamarin.Forms
- git - 带有 VSCode + WSL2 + Docker 的 Windows 上的 Git + SSH 密钥问题