首页 > 解决方案 > 使用函数比较 C 语言中的 2 个数组三元组

问题描述

我在这里按元素值比较数组,然后将分数存储在score[]数组中我想知道如何在可能的情况下使用 score = compareTriplets(a,b) 打印所有分数数组。如果不是,那么获得输出的最佳方法是什么?

#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]);
    }

    
}








标签: carrays

解决方案


compareTriplets提供一个指向int 数组的指针。因此,您的 main 方法中的 score 变量必须具有 type 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;
}

为了打印它,我们通过[]操作符访问数组元素。

但是让我补充一点,让你的分数数组成为一个全局变量在这里似乎是错误的决定。


推荐阅读