我在使用 checkTotal()
函数时遇到问题。
在第一次迭代中,它可以正确地将所有内容与其值相加。
但是在我的第二次迭代中,相加的值并不准确,我不确定这些数字来自哪里。
int checkTotal(int numSchemes, int numComponents, int weight[numComponents][numSchemes], char **list){
int cCounter = 0;
int total = 0;
while (cCounter < numComponents){
total = total + weight[numSchemes][cCounter];
printf("%d\n", total);
cCounter++;
}
return total;
}
这是调用 checkTotal 的函数
void weightInput(int numSchemes, int numComponents, int weight[numComponents][numSchemes], char **list){
int sCounter = 0;
int cCounter = 0;
// iterating through the number of schemes
while (sCounter < numSchemes){
printf("\nMarking scheme #%d: \n", (sCounter+1));
while (cCounter < numComponents){
printf("\tenter %s's weight: ", list[cCounter]);
int theWeight;
scanf("%d", &theWeight);
weight[sCounter][cCounter] = theWeight;
cCounter++;
}
//printf("%d\n", weight[sCounter][cCounter]);
printf("THE TOTAL IS %d\n", checkTotal(sCounter, numComponents, weight, list));
sCounter++;
cCounter = 0;
}
}
该函数采用一个二维数组,迭代第二个维度,然后将所有 int 相加以获得总计。
它在第一次迭代中成功求和并返回总和,但对于我的第二次迭代,它现在这样做了。
如果我第一次迭代输入 33, 22, 5, 5,它将返回 65。
对于第二次迭代,我会有 (10, 5, 10, 25),但它会返回 47,而它应该是 50。
如果有人能提供帮助,我们将不胜感激。预先感谢您,
最佳答案
在我看来,逻辑可能会颠倒过来?你有
int weight[numComponents][numSchemes]
在签名行中,然后使用以下命令访问它。
weight[numSchemes][cCounter]
cCounter 和 numSchemes 应该反过来吗?
关于c - 为什么这个 C 数组算法在第二次迭代时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26538665/