Lietotāja noteikto funkciju veidi C programmēšanā

Šajā apmācībā jūs uzzināsiet par dažādām pieejām, kuras varat izmantot, lai atrisinātu to pašu problēmu, izmantojot funkcijas.

Šīs 4 tālāk norādītās programmas pārbauda, ​​vai lietotāja ievadītais skaitlis ir galvenais skaitlis.

Visu šo programmu izeja zemāk ir vienāda, un katrā piemērā mēs esam izveidojuši lietotāja definētu funkciju. Tomēr pieeja, kuru mēs izmantojām katrā piemērā, ir atšķirīga.

1. piemērs: nav iesniegts neviens arguments un atgriezta vērtība

 #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()Funkcija ņem informāciju no lietotāja, pārbauda, vai tas ir galvenais numurs, vai ne, un parāda to uz ekrāna.

Funkcijas checkPrimeNumber();iekšpusē esošās tukšās iekavas main()norāda, ka funkcijai netiek nodots neviens arguments.

Funkcijas atgriešanās veids ir void. Tādējādi no funkcijas netiek atgriezta neviena vērtība.

2. piemērs: nav iesniegts neviens arguments, bet atgriešanās vērtība

 #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; ) 

Tukšās iekavas n = getInteger();paziņojumā norāda, ka funkcijai netiek nodots neviens arguments. No funkcijas atgrieztā vērtība tiek piešķirta n.

Šeit getInteger()funkcija ņem ievadi no lietotāja un atdod to. Funkcijas iekšpusē ir kods, lai pārbaudītu, vai skaitlis ir galvenais main().

3. piemērs: arguments nodots, bet atgriešanās vērtība nav

 #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); ) 

Lietotāja ievadītā veselā skaitļa vērtība tiek nodota checkPrimeAndDisplay()funkcijai.

Šeit checkPrimeAndDisplay()funkcija pārbauda, ​​vai nodotais arguments ir galvenais skaitlis vai nē, un parāda atbilstošo ziņojumu.

4. piemērs: nodotais arguments un atgriešanās vērtība

 #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; ) 

Lietotāja ievadītā informācija tiek nodota checkPrimeNumber()funkcijai.

Par checkPrimeNumber()funkcija pārbauda, vai nodota arguments galvenais, vai ne.

Ja nodotais arguments ir galvenais skaitlis, funkcija atgriež 0. Ja nodotais arguments ir skaitlis, kas nav galvenais skaitlis, funkcija atgriež 1. Atgriešanās vērtība tiek piešķirta karodziņa mainīgajam.

Atkarībā no tā, vai karodziņš ir 0 vai 1, no main()funkcijas tiek izdrukāts atbilstošs ziņojums .

Kura pieeja ir labāka?

Nu, tas ir atkarīgs no problēmas, kuru mēģināt atrisināt. Šajā gadījumā ir labāk nodot argumentu un atgriezt vērtību no funkcijas (4. piemērs).

Funkcijai jāveic konkrēts uzdevums. checkPrimeNumber()Funkcija neņem ieguldījumu no lietotāja, ne arī tas parāda atbilstošu ziņojumu. Tas tikai pārbauda, ​​vai skaitlis ir galvenais vai nav.

Interesanti raksti...