c函数比较两个不同数组的最大值(适用于扑克中的决胜高牌手)
c function to compare highest values of two different arrays (applied to tiebreaking highcard hands in poker)
#include <stdio.h>
int highcard (int array[])
{
int i, j;
int largest = array[0];
for (i=0; i<5; i++)
{
if (largest < array[i])
{
largest = array[i];
}
}
printf("largest element is %d", largest);
return largest;
}
int main()
{
int hand1[5]={8, 10, 6 , 4, 2};
int hand2[5]={13, 5, 3, 9, 12};
int largest;
highcard(hand1[5]);
int largest1 = largest;
return largest1;
highcard(hand2[5]);
int largest2 = largest;
return largest2;
if (largest1 < largest2)
{
printf("winner: hand2");
}
else
{
printf("winner: hand1");
}
return 0;
}
我正在尝试开发一个程序,在扑克中平局两手大牌。为此,我 "translate" 将卡片值转换为数字 (2=2 ... A=14),对于这种特定情况,最大数组大小始终为 5(5 张卡片)。我的问题是如何比较应用于两个不同数组时同一函数的 return 值?
我的意思是:
- 我有手牌(数组)1
- 我有hand2
- 我确定hand1和return最大的个数
- 我对 hand2 做同样的事情
- 在 main() 中,我想比较应用于 hand1 和 hand2 的 return(最大数)的 highcard
但是我如何在 main() 中指定函数 highcard 的特定 return 值应用于 hand1 然后 hand2 并保持两个 return 分开?
这是我目前尝试过的方法。
P.S.: 这是一个 university/college 项目,我这学期才开始编程,所以对我的 mistakes/errors 的任何详细解释以及如何纠正它们都会非常非常感谢:)
你有几个误区。
highcard(hand1[5]);
这里,你要调用highcard函数,传入5元数组hand1
。为此,请勿在括号中指定尺寸。这仅在您声明数组时有效。相反,您将 hand1
的第六个元素(第一个元素的索引为 0)传递给该函数。该元素不存在。您还应该收到警告,因为整数不是数组;参数类型不匹配。
return largest1;
在这里,你可能想在 largest1
中存储一些东西,但你实际上做的是从具有给定值的函数中 return 。这意味着你离开了当前的功能。离开 main
意味着您停止程序。此处不需要 return
,只需存储值即可。
int largest1 = largest;
在这里,您尝试从 highcard
访问变量 largest
,但是该变量是本地变量 highcard
,因此对您的 main
函数不可见。 Rhe largest
你看到的只是一个无关的、未初始化的变量。
您可以通过像这样分配函数调用的结果来访问从函数 returned 得到的值。您的 main
函数应如下所示:
int main(void)
{
int hand1[5] = {8, 10, 6 , 4, 2};
int hand2[5] = {13, 5, 3, 9, 12};
int largest1 = highcard(hand1);
int largest2 = highcard(hand2);
if (largest1 < largest2) {
printf("winner: hand2");
} else {
printf("winner: hand1");
}
return 0;
}
#include <stdio.h>
int highcard (int array[])
{
int i, j;
int largest = array[0];
for (i=0; i<5; i++)
{
if (largest < array[i])
{
largest = array[i];
}
}
printf("largest element is %d", largest);
return largest;
}
int main()
{
int hand1[5]={8, 10, 6 , 4, 2};
int hand2[5]={13, 5, 3, 9, 12};
int largest;
highcard(hand1[5]);
int largest1 = largest;
return largest1;
highcard(hand2[5]);
int largest2 = largest;
return largest2;
if (largest1 < largest2)
{
printf("winner: hand2");
}
else
{
printf("winner: hand1");
}
return 0;
}
我正在尝试开发一个程序,在扑克中平局两手大牌。为此,我 "translate" 将卡片值转换为数字 (2=2 ... A=14),对于这种特定情况,最大数组大小始终为 5(5 张卡片)。我的问题是如何比较应用于两个不同数组时同一函数的 return 值?
我的意思是:
- 我有手牌(数组)1
- 我有hand2
- 我确定hand1和return最大的个数
- 我对 hand2 做同样的事情
- 在 main() 中,我想比较应用于 hand1 和 hand2 的 return(最大数)的 highcard
但是我如何在 main() 中指定函数 highcard 的特定 return 值应用于 hand1 然后 hand2 并保持两个 return 分开?
这是我目前尝试过的方法。
P.S.: 这是一个 university/college 项目,我这学期才开始编程,所以对我的 mistakes/errors 的任何详细解释以及如何纠正它们都会非常非常感谢:)
你有几个误区。
highcard(hand1[5]);
这里,你要调用highcard函数,传入5元数组hand1
。为此,请勿在括号中指定尺寸。这仅在您声明数组时有效。相反,您将 hand1
的第六个元素(第一个元素的索引为 0)传递给该函数。该元素不存在。您还应该收到警告,因为整数不是数组;参数类型不匹配。
return largest1;
在这里,你可能想在 largest1
中存储一些东西,但你实际上做的是从具有给定值的函数中 return 。这意味着你离开了当前的功能。离开 main
意味着您停止程序。此处不需要 return
,只需存储值即可。
int largest1 = largest;
在这里,您尝试从 highcard
访问变量 largest
,但是该变量是本地变量 highcard
,因此对您的 main
函数不可见。 Rhe largest
你看到的只是一个无关的、未初始化的变量。
您可以通过像这样分配函数调用的结果来访问从函数 returned 得到的值。您的 main
函数应如下所示:
int main(void)
{
int hand1[5] = {8, 10, 6 , 4, 2};
int hand2[5] = {13, 5, 3, 9, 12};
int largest1 = highcard(hand1);
int largest2 = highcard(hand2);
if (largest1 < largest2) {
printf("winner: hand2");
} else {
printf("winner: hand1");
}
return 0;
}