gpt4 book ai didi

c - 为什么这个 C 数组算法在第二次迭代时失败?

转载 作者:行者123 更新时间:2023-11-30 15:28:34 24 4
gpt4 key购买 nike

我在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com