Видове дефинирани от потребителя функции в програмирането на 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. Връщащата стойност се присвоява на променливата на флага.

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

Кой подход е по-добър?

Е, това зависи от проблема, който се опитвате да разрешите. В този случай предаването на аргумент и връщането на стойност от функцията (пример 4) е по-добро.

Функцията трябва да изпълнява конкретна задача. Най- checkPrimeNumber()функцията не взема участие от страна на потребителя, нито я показва съответното съобщение. Той само проверява дали числото е просто или не.

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