Типы пользовательских функций в программировании на C

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

Эти 4 программы ниже проверяют, является ли введенное пользователем целое число простым или нет.

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

Пример 1: аргументы не переданы и не возвращено значение

 #include 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 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 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 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. Возвращаемое значение присваивается переменной flag.

В зависимости от того, установлен ли флаг 0 или 1, из main()функции выводится соответствующее сообщение .

Какой подход лучше?

Ну, это зависит от проблемы, которую вы пытаетесь решить. В этом случае лучше передать аргумент и вернуть значение из функции (пример 4).

Функция должна выполнять конкретную задачу. checkPrimeNumber()Функция не принимает входные данные от пользователя и не отображается соответствующее сообщение. Он только проверяет, является ли число простым или нет.

Интересные статьи...