#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;
}
我正在尝试开发一个程序,在扑克中将两只高牌玩家平手。为此,我将卡值“转换”为数字(2 = 2 ... A = 14),对于这种特定情况,最大数组大小将始终为5(5张卡)。我的问题是当应用于两个不同的数组时,如何比较同一函数的返回值?
我的意思是:
但是如何在main()中指定函数highcard的特定返回值,分别应用于hand1和hand2,并使两个返回值分开吗?
这是我到目前为止尝试过的。
P.S .:这是一个大学/学院的项目,我仅在本学期开始编程,因此,对我的错误/错误以及如何纠正它们的任何详细说明,将不胜感激:)
您有一些误解。
highcard(hand1[5]);
这里,您要调用函数highcard并传入5元素数组hand1
。为此,请勿在方括号中指定尺寸。仅在声明数组时有效。相反,发生的是将hand1
的第六个元素(第一个元素的索引为0)传递给该函数。该元素不存在。您还应该得到警告,因为整数不是数组。参数类型不匹配。
return largest1;
这里,您可能想将某些内容存储在largest1
中,但实际上是从具有给定值的函数中返回。这意味着您退出当前功能。离开main
意味着您停止程序。您无需在这里输入return
,只需存储值即可。
int largest1 = largest;
这里,您尝试从largest
访问变量highcard
,但是此变量是本地highcard
,因此对main
函数不可见。您看到的largest
只是一个不相关的未初始化变量。
您可以通过分配函数调用的结果来访问从函数返回的值,如下所示。您的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;
}