2015-06-01 2 views
-1

Я пытаюсь установить аргумент для функции, но я нехорошо его использовать. Я создал пользовательскую функцию с параметром, но я не знаю, как использовать хороший параметр в пользовательской функции. Когда я тестирую его, он показывает эту ошибку error C2198: 'findtwonumber' : too few arguments for call и error C2198: 'findthreenumber' : too few arguments for call. Ниже приведен исходный код:Ошибка при использовании нескольких аргументов для функции определения пользователем в программировании c

`#include<conio.h> 
#include<stdio.h> 
void findtwonumber(int a, int b); 
void findthreenumber(int a, int b, int c); 
int main(void){ 
    int a, b, c, n; 
    printf("Fine Maximum of two number\n"); 
    printf("Fine Maximum of three number\n"); 
    printf("Choose one:"); 
    scanf_s("%d", &n); 
    int maxab(int a, int b); 
    if (n == 1) 
    { 
     findtwonumber(); 
    } 
    else if (n == 2) 
    { 
     findthreenumber(); 
    } 
    return 0; 
} 
void findtwonumber(void) 
{ 
    int a, b, max; 
    printf("Enter a:"); 
    scanf_s("%d", &a); 
    printf("Enter b:"); 
    scanf_s("%d", &b); 
    if (a>b) 
     max = a; 
    else 
     max = b; 
    printf("The max is=%d", max); 
} 
void findthreenumber(void) 
{ 
    int a, b, c, max; 
    printf("Enter a:"); 
    scanf_s("%d", &a); 
    printf("Enter b:"); 
    scanf_s("%d", &b); 
    printf("Enter c:"); 
    scanf_s("%d", &c); 
    if (a>b) 
     max = a; 
    else if (b>c) 
     max = b; 
    else if (c>a) 
     max = c; 
    printf("The max is=%d", max); 
}` 

Как заполнить этот параметр?

+1

Сначала вы определяете функцию с параметрами, а затем без нее. Вы должны выбрать, что хотите, и сделать их соответствующими. –

+0

Вы объявляете эти функции с помощью аргументов и реализуете их без аргументов. Что именно вы пытаетесь достичь здесь? –

+0

Пожалуйста, отметьте ответ, если вы удовлетворены результатами – spectacularbob

ответ

2

Ваша проблема исходит из того, что у вас есть опережающее описание этих функций

void findtwonumber(int a, int b); 
void findthreenumber(int a, int b, int c); 

, которые не соответствуют вашим определениям

void findtwonumber(void) 
void findthreenumber(void) 

Вы должны решить, хотят ли ваши эти функции принять параметры или нет, а затем убедиться, что объявления соответствуют определениям.

1

Способ, которым вы определили прототип своей функции, не совпадает с тем, как вы заявили о своей функции.

Для создания пользовательской функции с параметром, ваше определение и объявление функции должны иметь такое же возвращаемый_тип и список параметров:

return_type function_name (parameters); return_type function_name (parameters) { //code }

Во время вызова функции, вам необходимо отправить аналогично (здесь это означает, тот же тип данных) в правильном порядке, как и ожидалось функцией (или записано в объявлении функции). Таким образом, для вызова функции, код хотел бы: function_name(parameters_as_expected);

Пример:

void hello1 (int a, char b) { 
    //code 
} 
int main() { 
    //code 
    int i = 1; 
    char j = 'A'; 
    hello1(i,j); 
    //code 
} 

Делать что-то вроде:

void hello2(int a); 
void hello2(void){ 
    //code 
} 

даст вам ошибку, поскольку первый из них имеет несоответствие объявление функции и функции определение функции hell02

Смежные вопросы