Typen door de gebruiker gedefinieerde functies in C-programmering

In deze zelfstudie leert u over verschillende benaderingen die u kunt volgen om hetzelfde probleem met behulp van functies op te lossen.

Deze 4 onderstaande programma's controleren of het door de gebruiker ingevoerde gehele getal een priemgetal is of niet.

De output van al deze onderstaande programma's is hetzelfde, en we hebben in elk voorbeeld een door de gebruiker gedefinieerde functie gemaakt. De benadering die we in elk voorbeeld hebben gevolgd, is echter anders.

Voorbeeld 1: geen argumenten doorgegeven en geen retourwaarde

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

De checkPrimeNumber()functie neemt input van de gebruiker, controleert of het een priemgetal is of niet en geeft het weer op het scherm.

De lege haakjes in de checkPrimeNumber();instructie binnen de main()functie geven aan dat er geen argument aan de functie is doorgegeven.

Het retourtype van de functie is void. Daarom wordt er geen waarde geretourneerd door de functie.

Voorbeeld 2: er zijn geen argumenten doorgegeven, maar een retourwaarde

 #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 lege haakjes in de n = getInteger();instructie geven aan dat er geen argument is doorgegeven aan de functie. En de waarde die door de functie wordt geretourneerd, wordt toegewezen aan n.

Hier neemt de getInteger()functie input van de gebruiker en retourneert deze. De code om te controleren of een getal een priemgetal is of niet, bevindt zich in de main()functie.

Voorbeeld 3: argument doorgegeven maar geen retourwaarde

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

De integerwaarde die door de gebruiker is ingevoerd, wordt doorgegeven aan de checkPrimeAndDisplay()functie.

Hier checkPrimeAndDisplay()controleert de functie of het doorgegeven argument een priemgetal is of niet en geeft het juiste bericht weer.

Voorbeeld 4: Argument doorgegeven en een retourwaarde

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

De input van de gebruiker wordt doorgegeven aan de checkPrimeNumber()functie.

De checkPrimeNumber()functie controleert of het doorgegeven argument een priemgetal is of niet.

Als het doorgegeven argument een priemgetal is, retourneert de functie 0. Als het doorgegeven argument een niet-priemgetal is, retourneert de functie 1. De geretourneerde waarde wordt toegewezen aan de vlagvariabele.

Afhankelijk van of de vlag 0 of 1 is, wordt vanuit de main()functie een passend bericht afgedrukt .

Welke aanpak is beter?

Welnu, het hangt af van het probleem dat u probeert op te lossen. In dit geval is het beter om een ​​argument door te geven en een waarde uit de functie te retourneren (voorbeeld 4).

Een functie moet een specifieke taak uitvoeren. De checkPrimeNumber()functie neemt geen input van de gebruiker en geeft het juiste bericht niet weer. Het controleert alleen of een getal een priemgetal is of niet.

Interessante artikelen...