Умножение двух чисел с помощью функции в C

Вот моя программа, и я получаю синтаксические ошибки, которых я не понимаю. Это мой main, который будет принимать данные моей функции:

int main() //main program
{
    float num1, num2, total; 
    printf("Enter first number:  ");
    scanf("%f", &num1);
    printf("Enter Second number:  ");
    scanf("%f", & num2);
    total = multiNumbers(num1, num2);
    printf("sum is %2.f", total);   
    return 0;
}

int multiNumbers(int num1, int num2) {
    int sum;
    sum = num1 * num2;
    return sum;
}

Вот ошибки компиляции:

In function 'int main()':
[Error] 'printf' was not declared in this scope
[Error] 'scanf' was not declared in this scope
[Error] 'multiNumbers' was not declared in this scope

person April Renee    schedule 11.05.2017    source источник
comment
Это весь ваш файл с исходным кодом? где ЕСТЬ multiNumbers?   -  person    schedule 12.05.2017
comment
я поместил свою функцию ниже .. Это не строки с синтаксисом   -  person April Renee    schedule 12.05.2017
comment
Вы должны опубликовать весь код, как описано в Как создать минимальный, полный и проверяемый пример - тем не менее, сейчас это кажется очевидным   -  person    schedule 12.05.2017
comment
Боковое примечание - вы должны изменить все типы в multiNumbers на float вместо int, если вы хотите получить правильный результат умножения.   -  person SHG    schedule 12.05.2017
comment
@SGH, хороший улов, но тогда просто используйте double (для большего шанса на получение правильных результатов). float, вероятно, самый бессмысленный тип данных в C на большинстве платформ.   -  person    schedule 12.05.2017
comment
Printf не был объявлен в этой области, Функция не объявлена ​​в этой области (... я мог бы продолжить)   -  person crashmstr    schedule 12.05.2017


Ответы (4)


[Ошибка] 'printf' не был объявлен в этой области

[Ошибка] 'scanf' не был объявлен в этой области

Добавьте библиотеку stdio в свой код

#include <stdio.h>

[Ошибка] 'multiNumbers' не был объявлен в этой области

Добавить объявление перед основной функцией

 int multiNumbers(int num1, int num2);

Фрагмент кода:

#include <stdio.h>
int multiNumbers(int num1, int num2);
int main() //main program
{
    float num1, num2, total; 
    printf("Enter first number:  ");
    scanf("%f", &num1);
    printf("Enter Second number:  ");
    scanf("%f", & num2);
    total = multiNumbers(num1, num2);
    printf("sum is %2.f", total);   
    return 0;
}
int multiNumbers(int num1, int num2) {
    int sum;
    sum = num1 * num2;
    return sum;
}
person ayusha    schedule 12.05.2017

[Ошибка] 'printf' не был объявлен в этой области
[Ошибка] 'scanf' не был объявлен в этой области

printf и scanf объявлены в stdio.h, поэтому вам нужно сначала включить этот файл:

#include <stdio.h>

[Ошибка] 'multiNumbers' не был объявлен в этой области

Если эта функция не объявлена ​​или определена выше вашей основной функции, вы должны хотя бы добавить объявление, подобное приведенному выше main:

int multiNumbers(int num1, int num2);

(только эта строка)

person Community    schedule 11.05.2017

Вы должны сначала

#include <stdio.h>

и вы также должны поместить прототип функции перед main ().

#include <stdio.h> // You forgot this

int multiNumbers(int num1, int num2); // This is the function's prototype

int main() //main program
{
    float num1, num2, total; 
    printf("Enter first number:  ");
    scanf("%f", &num1);
    printf("Enter Second number:  ");
    scanf("%f", &num2);
    total = multiNumbers(num1, num2);
    printf("sum is %2.f", total);   
    return 0;
}

int multiNumbers(int num1, int num2) {
    int sum;
    sum = num1 * num2;
    return sum;
}
person Archmede    schedule 12.05.2017

Вы должны по крайней мере объявить функцию перед ее вызовом. Определение функции также служит объявлением, поэтому проще всего переместить тело multiNumbers перед main.

Изменить

int multiNumbers(int num1, int num2) {
  int sum;
  sum = num1 * num2;
  return sum;
}

int main() //main program
{
    float num1, num2, total; 
    printf("Enter first number:  ");
    scanf("%f", &num1);
    printf("Enter Second number:  ");
    scanf("%f", & num2);
    total = multiNumbers(num1, num2);
    printf("sum is %2.f", total);   
    return 0;
}

Одна проблема, на которую компилятор будет жаловаться, - ваши типы не совпадают. Вы заявили, что multiNumbers принимает int параметры и возвращает значение int, но вы передаете значения float и присваиваете результат float.

Это не сработает.

Если вы собираетесь multiNumbers работать со значениями float, вам необходимо изменить типы num1, num2 и sum на float (хотя, честно говоря, я бы рекомендовал использовать double вместо float).

person John Bode    schedule 12.05.2017