簡體   English   中英

使用 function 比較 C 語言中的 2 個數組三元組

[英]Comparing the 2 Array Triplets in C Language using a function

我在這里通過元素值比較 arrays 然后將分數存儲在score[]數組中我想知道如何使用 score = compareTriplet(a,b) 打印所有分數數組。 如果沒有,獲得 output 的最佳方法是什么?

#include<stdio.h>

int a[3];
int b[3];

int score[] = {0,0};

int *compareTriplets(int a[], int b[]);

int *compareTriplets(int a[], int b[])
{
    int i;
    
    for(i=0;i<3;i++)
    {
        if( a[i] > b[i])
        {
            score[0] += 1;
        }
        else if( b[i] > a[i])
        {
            score[1] += 1;
        }
    }

    return score;
}


int main()
{
   
    int k;
    int score;
    
    scanf("%d %d %d", &a[0], &a[1], &a[2]);

    scanf("%d %d %d", &b[0], &b[1], &b[2]);

   
    score = compareTriplets(a,b);
    
    for(k=0;k<2;k++)
    {
        printf("%d",score[k]);
    }

    
}








compareTriplets提供一個指向int 數組的指針。 因此,您的 main 方法中的 score 變量必須具有int *類型。 這意味着它是指向數組中第一個 int 的指針。

#include<stdio.h>

int a[3];
int b[3];

int score[] = {0,0};

int *compareTriplets(int a[], int b[]);

int *compareTriplets(int a[], int b[])
{
    int i;
    
    for(i=0;i<3;i++)
    {
        if( a[i] > b[i])
        {
            score[0] += 1;
        }
        else if( b[i] > a[i])
        {
            score[1] += 1;
        }
    }

    return score;
}


int main(int argc, char** argv)
{
    a[0] = a[1] = a[2] = 1;
    b[0] = b[1] = b[2] = 2;
    int *score = compareTriplets(a,b);
    printf("%d, %d\n", score[0], score[1]);
    return 0;
}

要打印它,我們通過[]運算符訪問數組元素。

但是讓我補充一點,讓你的分數數組成為一個全局變量在這里似乎是錯誤的決定。

int *compareTriplets(const int a[], const int b[], int *score)
{
    int i;
    
    score[0] = 0; score[1] = 0;
    for(i=0;i<3;i++)
    {
        if( a[i] > b[i])
        {
            score[0] += 1;
        }
        else if( b[i] > a[i])
        {
            score[1] += 1;
        }
    }
    return score;
}

用法:

int main(void)
{
    int a[3] = {rand(), rand(), rand()};
    int b[3] = {rand(), rand(), rand()};
    int score[2];

    compareTriplets(a,b,score);
    printf("%d %d\n", score[0], score[1]);
}

或者

struct score
{
    int score[2];
};

struct score compareTriplets(const int a[], const int b[])
{
    int i;
    struct score sc = {0,0};
    
    for(i=0;i<3;i++)
    {
        if( a[i] > b[i])
        {
            sc.score[0] += 1;
        }
        else if( b[i] > a[i])
        {
            sc.score[1] += 1;
        }
    }

    return sc;
}

和使用”

int main(void)
{
    int a[3] = {rand(), rand(), rand()};
    int b[3] = {rand(), rand(), rand()};
    struct score sc = compareTriplets(a,b);

    printf("%d %d\n", sc.score[0], sc.score[1]);
}

暫無
暫無

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

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