Typer av användardefinierade funktioner i C-programmering

I den här handledningen lär du dig om olika tillvägagångssätt du kan ta för att lösa samma problem med hjälp av funktioner.

Dessa fyra program nedan kontrollerar om det heltal som anges av användaren är ett primtal eller inte.

Produktionen från alla dessa program nedan är densamma, och vi har skapat en användardefinierad funktion i varje exempel. Den metod som vi har tagit i varje exempel är dock annorlunda.

Exempel 1: Inga argument överförda och inget returvärde

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

Den checkPrimeNumber()funktionen tar indata från användaren, kontrollerar om det är ett primtal eller inte och visar den på skärmen.

De tomma parenteserna i checkPrimeNumber();uttalandet inuti main()funktionen indikerar att inget argument skickas till funktionen.

Funktionens returtyp är void. Därför returneras inget värde från funktionen.

Exempel 2: Inga argument skickade men ett returvärde

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

De tomma parenteserna i n = getInteger();uttalandet indikerar att inget argument skickas till funktionen. Och värdet som returneras från funktionen tilldelas n.

Här getInteger()tar funktionen inmatning från användaren och returnerar den. Koden för att kontrollera om ett tal är primt eller inte finns i main()funktionen.

Exempel 3: Argument passerat men inget returvärde

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

Heltalsvärdet som anges av användaren skickas till checkPrimeAndDisplay()funktionen.

Här checkPrimeAndDisplay()kontrollerar funktionen om det skickade argumentet är ett primtal eller inte och visar lämpligt meddelande.

Exempel 4: Argument passerat och ett returvärde

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

Ingången från användaren skickas till checkPrimeNumber()funktionen.

De checkPrimeNumber()funktions kontrollerar om passerade argumentet är ett primtal eller inte.

Om det godkända argumentet är ett primtal, returnerar funktionen 0. Om det skickade argumentet är ett icke-primtal, returnerar funktionen 1. Returvärdet tilldelas flaggvariabeln.

Beroende på om flaggan är 0 eller 1 skrivs ett lämpligt meddelande från main()funktionen.

Vilket tillvägagångssätt är bättre?

Det beror på det problem du försöker lösa. I det här fallet är det bättre att skicka argument och returnera ett värde från funktionen (exempel 4).

En funktion ska utföra en specifik uppgift. Den checkPrimeNumber()funktionen tar inte inmatning från användaren och inte heller det visas lämpligt meddelande. Den kontrollerar bara om ett tal är primt eller inte.

Intressanta artiklar...