C (Си): Функции в Си
Функции
В этом уроке напишем свою функцию и разберем, как ее вызывать из main().
Идея простая: сделаем функцию power(), которая возводит число в целую неотрицательную степень.
int power(int base, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}Что здесь важно
- Объявление
int power(int base, int n)задает функцию с двумя параметрами. - Параметр
baseзадает основание степени. - Параметр
nзадает показатель степени. - Инструкция
return p;возвращает результат вычисления.
Чтобы main() могла вызвать функцию, удобно заранее объявить ее прототип:
int power(int base, int n);Полная программа
#include <stdio.h>
int power(int base, int n);
int main(void)
{
printf("%d\n", power(2, 10));
return 0;
}
int power(int base, int n)
{
int i;
int p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}Ожидаемый вывод:
1024Если заменить вызов на power(3, 12), получите 531441.
Итоги
- Функция помогает вынести повторяемую логику в отдельный блок.
- У функции есть параметры и возвращаемое значение.
- Прототип сообщает компилятору сигнатуру функции до ее использования.
main()обычно завершаетсяreturn 0;, если программа отработала без ошибок.
Задание
Напишите функцию kelvin_to_celcius(), которая принимает температуру в Кельвинах и возвращает соответствующее значение в градусах Цельсия.
Функция должна принимать и возвращать int.
C (Си): Функции в Си
Функции
В этом уроке напишем свою функцию и разберем, как ее вызывать из main().
Идея простая: сделаем функцию power(), которая возводит число в целую неотрицательную степень.
int power(int base, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}Что здесь важно
- Объявление
int power(int base, int n)задает функцию с двумя параметрами. - Параметр
baseзадает основание степени. - Параметр
nзадает показатель степени. - Инструкция
return p;возвращает результат вычисления.
Чтобы main() могла вызвать функцию, удобно заранее объявить ее прототип:
int power(int base, int n);Полная программа
#include <stdio.h>
int power(int base, int n);
int main(void)
{
printf("%d\n", power(2, 10));
return 0;
}
int power(int base, int n)
{
int i;
int p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}Ожидаемый вывод:
1024Если заменить вызов на power(3, 12), получите 531441.
Итоги
- Функция помогает вынести повторяемую логику в отдельный блок.
- У функции есть параметры и возвращаемое значение.
- Прототип сообщает компилятору сигнатуру функции до ее использования.
main()обычно завершаетсяreturn 0;, если программа отработала без ошибок.
Задание
Напишите функцию kelvin_to_celcius(), которая принимает температуру в Кельвинах и возвращает соответствующее значение в градусах Цельсия.
Функция должна принимать и возвращать int.
Ваше упражнение проверяется по этим тестам
#include "greatest.h"
#include "main.c"
TEST test_base(void) {
char *format = "%d";
ASSERT_EQ_FMT(2927, kelvin_to_celcius(3200), format);
ASSERT_EQ_FMT(-546, kelvin_to_celcius(-273), format);
ASSERT_EQ_FMT(-273, kelvin_to_celcius(0), format);
PASS();
}
GREATEST_MAIN_DEFS();
int main(int argc, char **argv) {
GREATEST_MAIN_BEGIN();
RUN_TEST(test_base);
GREATEST_MAIN_END();
}Решение учителя откроется через:
20:00
