Типы пользовательских функций в программировании на C
Типы пользовательских функций в программировании на C
В этом руководстве вы узнаете о различных подходах, которые можно использовать для решения одной и той же проблемы с помощью функций.
Эти 4 программы ниже проверяют, является ли целое число, введенное пользователем, простым числом или нет.
Вывод всех этих программ ниже одинаков, и в каждом примере мы создали определяемую пользователем функцию. Однако подход, который мы использовали в каждом примере, отличается.
<час>Пример 1. Без передачи аргументов и без возвращаемого значения
#include <stdio.h>
void checkPrimeNumber();
int main()
{
checkPrimeNumber(); // argument is not passed
return 0;
}
// return type is void meaning doesn't return any value
void checkPrimeNumber()
{
int n, i, flag = 0;
printf("Enter a positive integer: ");
scanf("%d",&n);
for(i=2; i <= n/2; ++i)
{
if(n%i == 0)
{
flag = 1;
}
}
if (flag == 1)
printf("%d is not a prime number.", n);
else
printf("%d is a prime number.", n);
}
checkPrimeNumber()
Функция принимает ввод от пользователя, проверяет, является ли это простым числом, и отображает его на экране.
Пустые скобки в checkPrimeNumber();
оператор внутри main()
указывает, что в функцию не передается аргумент.
Тип возвращаемого значения функции — void
. . Следовательно, функция не возвращает никакого значения.
Пример 2:аргументы не передаются, но возвращается значение
#include <stdio.h>
int getInteger();
int main()
{
int n, i, flag = 0;
// no argument is passed
n = getInteger();
for(i=2; i<=n/2; ++i)
{
if(n%i==0){
flag = 1;
break;
}
}
if (flag == 1)
printf("%d is not a prime number.", n);
else
printf("%d is a prime number.", n);
return 0;
}
// returns integer entered by the user
int getInteger()
{
int n;
printf("Enter a positive integer: ");
scanf("%d",&n);
return n;
}
Пустые скобки в n = getInteger();
указывает, что в функцию не передается аргумент. И значение, возвращаемое функцией, присваивается n .
Здесь getInteger()
функция принимает ввод от пользователя и возвращает его. Код для проверки того, является ли число простым или нет, находится внутри main()
функция.
Пример 3. Аргумент передан, но нет возвращаемого значения
#include <stdio.h>
void checkPrimeAndDisplay(int n);
int main()
{
int n;
printf("Enter a positive integer: ");
scanf("%d",&n);
// n is passed to the function
checkPrimeAndDisplay(n);
return 0;
}
// return type is void meaning doesn't return any value
void checkPrimeAndDisplay(int n)
{
int i, flag = 0;
for(i=2; i <= n/2; ++i)
{
if(n%i == 0){
flag = 1;
break;
}
}
if(flag == 1)
printf("%d is not a prime number.",n);
else
printf("%d is a prime number.", n);
}
Целочисленное значение, введенное пользователем, передается в checkPrimeAndDisplay()
функция.
Здесь checkPrimeAndDisplay()
Функция проверяет, является ли переданный аргумент простым числом, и выводит соответствующее сообщение.
Пример 4:переданный аргумент и возвращаемое значение
#include <stdio.h>
int checkPrimeNumber(int n);
int main()
{
int n, flag;
printf("Enter a positive integer: ");
scanf("%d",&n);
// n is passed to the checkPrimeNumber() function
// the returned value is assigned to the flag variable
flag = checkPrimeNumber(n);
if(flag == 1)
printf("%d is not a prime number",n);
else
printf("%d is a prime number",n);
return 0;
}
// int is returned from the function
int checkPrimeNumber(int n)
{
int i;
for(i=2; i <= n/2; ++i)
{
if(n%i == 0)
return 1;
}
return 0;
}
Ввод от пользователя передается в checkPrimeNumber()
функция.
checkPrimeNumber()
функция проверяет, является ли переданный аргумент простым или нет.
Если переданный аргумент является простым числом, функция возвращает 0. Если переданный аргумент не является простым числом, функция возвращает 1. Возвращаемое значение присваивается флагу переменная.
В зависимости от того, является ли флаг равно 0 или 1, соответствующее сообщение печатается из main()
функция.
Какой подход лучше?
Ну, это зависит от проблемы, которую вы пытаетесь решить. В этом случае лучше передать аргумент и вернуть значение из функции (пример 4).
Функция должна выполнять определенную задачу. checkPrimeNumber()
функция не принимает ввод от пользователя и не отображает соответствующее сообщение. Он только проверяет, является ли число простым или нет.
Язык C
- Пространства имен в программировании на C#
- C Типы данных
- Операторы программирования на C
- Стандартные библиотечные функции C
- Переменные и типы С++:int, double, char, string, bool
- Указатели в C:что такое указатели в программировании на C? Типы
- C Учебник
- C — Типы данных
- С - Функции
- C - Переменные аргументы