【发布时间】:2018-10-15 18:39:45
【问题描述】:
这第一部分定义了所需的数组和变量:i 指的是行,j 指的是列,k 指的是数组中存储数字计数的元素,l 指的是数字正在测试中,c 和 d 是数组大小的用户条目。
#include <stdio.h>
int main(void) {
int i, j, k, l;
int c, d;
printf("This program counts occurrences of digits 0 through 9 in an NxM array.\n");
printf("Enter the size of the array (Row Column): ");
这里的数组是按照用户指定的方式创建的。
scanf("%d %d", &c, &d);
int charlesbarkley[c - 1][d - 1];
int javariparker[9];
for (j = 1; j <= d; j++) {
printf("Enter row #%d #'s", j);
for (i = 0; i < c; i++) {
scanf("%d", &charlesbarkley[i][j - 1]);
}
}
这里有四个嵌套的 for 循环,用于访问数组的每个元素 (charlesbarkely[i][j]),根据数字 0 - 9 递增测试该元素 (l++),然后递增单个数组元素(由javariparker[k],k 然后递增)每次用户定义的数组元素等于从 0 开始的 l 的递增值。
for (k = 0; k <= 9; k++) {
for (j = 0; j < d; j++) {
for (i = 0; i < c; i++) {
for (l = 0; l <= 9; l++) {
if (charlesbarkley[i][j] != l)
javariparker[k] = javariparker[k];
else
javariparker[k] = (javariparker[k] + 1);
}
}
}
}
在这里,我尝试使用计数 (0 - 9) 打印数组,但如果我的数组例如 5x5,它只会向我吐出 25 10 次,因此它会检查每个元素的每个数字每次只检查一个数字的每个元素,我如何让它像我想要的那样工作,还是我会走到死胡同?
for (k = 0; k <= 9; k++) {
printf("%d", javariparker[k]);
}
}
【问题讨论】:
-
int charlesbarkley[c-1][d-1];为什么是-1?您正在循环中越界访问数组。 -
数字的数量与数字的数量?嗯。
-
如果你声明一个像
int a[n];这样的数组,有效的索引是0 ... n-1。我认为这是你的问题。 -
因为数组从 0 开始?如果 use 进入 3X3 数组,它必须在技术上定义为 charlesbarkley[2][2] 因为三个数字位于 0 和 2 之间(0(1)、1(2)、2(3)),对吗?跨度>
-
我正在尝试计算某些数字在整个数组中出现的次数
标签: c arrays for-loop if-statement