У вас есть несколько недоразумений.
highcard(hand1[5]);
Здесь вы хотите вызвать функцию highcard и передать массив из 5 элементов hand1
. Для этого не указывайте размерность в скобках. Это работает только когда вы объявляете массив. Вместо этого происходит передача шестого элемента hand1
- первый элемент имеет индекс 0 - в функцию. Этот элемент не существует. Вы также должны получить предупреждение, потому что целое число не является массивом; типы аргументов не совпадают.
return largest1;
Здесь вы, вероятно, хотите сохранить что-то в largest1
, но на самом деле вы возвращаетесь из функции с заданным значением. Это означает, что вы покидаете текущую функцию. Оставив main
означает, что вы остановите программу. Вам не нужно return
здесь, просто сохраните значение.
int largest1 = largest;
Здесь вы пытаетесь получить доступ к переменной largest
из highcard
, но переменная thzat является локальной highcard
и поэтому невидим для вашей main
функции. Rhe 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;
}