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

标签 c arrays iteration

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

相关文章:

javascript - 重复字母表

c# - 如何重复for循环迭代c#?

java - 这个迭代在java中如何完成?

c - 如何在清除标准输入之前检查标准输入是否为空

c - 生成范围内字符串的排列

c - 什么时候使用 valloc() 而不是 malloc() 更合适?

c++ - 如何将任意结构数组传递给函数?

Java - 在给定值的情况下查找数组的元素?

vector - 如何在 Clojure 中迭代向量的向量?

c - 如何在C++中动态获取工具提示的高度和宽度?