c - 使用函数比较 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]);
}
}
解决方案
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;
}
为了打印它,我们通过[]
操作符访问数组元素。
但是让我补充一点,让你的分数数组成为一个全局变量在这里似乎是错误的决定。
推荐阅读
- android - Android Gson - 反序列化空值与缺失值
- javascript - 无法在“FileReader”上执行“readAsBinaryString”:参数 1 不是“Blob”类型
- java - 从 base64 字符串或字节数组生成受密码保护的 PDF 并作为附件发送到电子邮件
- authentication - 刷新令牌流:环回
- c# - 全局锁定并等待是否为真
- php - 您可以在会话中存储多个数组值吗?
- java - 关于线程安全设计中使用的逻辑的问题?
- javascript - Dropzone.js 不支持旧浏览器!(铬版本是 77+ 和更新)
- windows - AMD Ryzen 5 2500u 上的 Android 模拟器
- java - Java 8 代码连接一个不重复的字符串列表