簡體   English   中英

如何在C中比較二維數組和一維數組?

[英]How to compare a two-dimensional array with a single-dimensional array in c?

我希望比較兩個數組並打印兩個分數。

在下面的情況下,應該是1和5,但我得到了6488164和7536740。(因為第一個只有7比4大,而下一行則更大)

是否可以將二維數組與單個數組進行比較並使用它創建一個數組? 我做錯了什么,或者為了進行比較我應該怎么做?

 #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { int mm_avg[2][5] = {{1,2,3,7,4},{2,3,4,5,7}}; int lt_avg[5]={1,2,3,4,5}; int i, j, score[100]; for (i=0; i<5; i++){ for (j=0; j<2; j++){ if(mm_avg[j][i]>lt_avg[i]){ score[j]++; } } } for (j=0; j<2; j++){ printf("%d\\n", score[j]); } return 0; } 

score數組未初始化,因此數組中的所有100個值都恰好位於內存中。

嘗試int i, j, score[100] = {0}; 這會將所有100個值初始化為0。

在C / C ++中,未初始化的整數具有未定義的值。 例如,與Java不同,Java將為整數分配默認值0。 通常,良好的做法是始終在聲明時顯式初始化對象。

#include<stdio.h>
#include<stdlib.h>

main(int argc, char *argv[])
{
    int mm_avg[2][5] = {{1,2,3,7,4},{2,3,4,5,7}};
    int lt_avg[5]={1,2,3,4,5};
    int i, j, score[2];

    for(int ndx = 0; ndx < 2; ++ndx)
    {
        score[ndx] = 0;
    }

    for (i = 0; i < 5; ++i)
    {
        for (j = 0; j < 2; ++j)
        {
            if(mm_avg[j][i] > lt_avg[i])
            {
                    /*printf("%d\n", j);
                    printf("%s", "mm_avg: ");
                    printf("%d\n", mm_avg[j][i]);
                    printf("%s", "lt_avg: ");
                    printf("%d\n", lt_avg[i]);
                    */
                    score[j]++;
            }
        }
    }

    for (j=0; j<2; j++)
    {
        printf("%d\n", score[j]);
    }
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM