2014-09-17 2 views
0

Я пытаюсь изучить функции вызова, и я столкнулся с проблемой, когда мне говорят, что мне нужно, чтобы объявить a, b, c и d, но точка программы - пригласить пользователя для этих чисел, а затем суммировать их.Как объявить переменные, когда я предлагаю пользователю ввести их?

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <math.h> 

int f(int a, int b, int c, int d); 
int g(int b, int c, int d); 
int h(int c, int d); 
int i(int d); 

int 
main(int argc,char **argv) 
{ 
     int result; 
     result = f(a,b,c,d); 
     printf("Value of a?"); 
     scanf("%d",a); 
     printf("Value of b?"); 
     scanf("%d",b); 
     printf("Value of c?"); 
     scanf("%d",c); 
     printf("Value of d?"); 
     scanf("%d",d); 
     printf("Your result is %d",result); 
     return 0; 
} 

int 
f(int a, int b, int c, int d) 
{ 
    return a + g(b,c,d); 
} 

int 
g(int b, int c, int d) 
{ 
     return b + h(c,d); 
} 

int 
h(int c, int d) 
{ 
     return c + i(d); 
} 

int 
i(int d) 
{ 
     return d + d; 
} 

Конкретное предупреждение

call.c:16:13: error: ‘a’ undeclared (first use in this function) 
     result = f(a,b,c,d); 

и это повторяется для б, в и г.

Может ли кто-нибудь сказать мне, что я сделал неправильно? Я поставил функции подписи вверху, где int a, int b, int c и int d уже определены, поэтому я смущен относительно того, что я сделал неправильно.

Редактировать: Вопрос был решен! Код должен выглядеть

 int result; 
     int a; 
     int b; 
     int c; 
     int d; 
     printf("Value of a?"); 
     scanf("%d",&a); 
     printf("Value of b?"); 
     scanf("%d",&b); 
     printf("Value of c?"); 
     scanf("%d",&c); 
     printf("Value of d?"); 
     scanf("%d",&d); 
     result = f(a,b,c,d); 
     printf("Your result is %d",result); 
     return 0; 
+0

Объявите их сразу после 'int result'; –

+0

FYI, используйте более описательные имена переменных/функций. – 2014-09-17 02:38:20

+0

Параметры функции f не связаны с основными функциями a, b, c, d. Вы могли бы назвать их w, x, y, z или что угодно. Они должны быть объявлены в основном. –

ответ

1

Вы должны объявить эти переменные в основном, попробуйте изменить код

int result, a, b, c, d;

Также scanf ожидает указатели в это VARIADIC часть аргументов, так что вы» необходимо будет использовать операционный оператор &, чтобы принять адрес a

Пример: scanf("%d", &a); И сделайте это для всех ваших звонков scanf.