Typer af brugerdefinerede funktioner i C-programmering

I denne vejledning lærer du om forskellige tilgange, du kan tage for at løse det samme problem ved hjælp af funktioner.

Disse 4 programmer nedenfor kontrollerer, om det heltal, der er indtastet af brugeren, er et primtal eller ej.

Outputtet fra alle disse programmer nedenfor er det samme, og vi har oprettet en brugerdefineret funktion i hvert eksempel. Den tilgang, vi har valgt i hvert eksempel, er imidlertid anderledes.

Eksempel 1: Ingen argumenter bestået og ingen returværdi

 #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()funktion tager input fra brugeren, kontrollerer, om det er et primtal eller ej, og viser det på skærmen.

De tomme parenteser i checkPrimeNumber();udsagnet inde i main()funktionen angiver, at intet argument overføres til funktionen.

Funktionens returtype er void. Derfor returneres ingen værdi fra funktionen.

Eksempel 2: Ingen argumenter bestået, men en returværdi

 #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 tomme parenteser i n = getInteger();udsagnet indikerer, at intet argument overføres til funktionen. Og værdien, der returneres fra funktionen, tildeles n.

Her getInteger()tager funktionen input fra brugeren og returnerer den. Koden til at kontrollere, om et tal er prime eller ej, er inde i main()funktionen.

Eksempel 3: Argument bestået, men ingen returværdi

 #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ærdien, der er indtastet af brugeren, overføres til checkPrimeAndDisplay()funktionen.

Her checkPrimeAndDisplay()kontrollerer funktionen, om det overførte argument er et primtal eller ikke og viser den relevante meddelelse.

Eksempel 4: Argument bestået og en returværdi

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

Input fra brugeren videregives til checkPrimeNumber()funktionen.

De checkPrimeNumber()funktion kontrollerer, om bestået argument er et primtal eller ej.

Hvis det beståede argument er et primtal, returnerer funktionen 0. Hvis det godkendte argument er et ikke-primtal, returnerer funktionen 1. Returneringsværdien tildeles flagvariablen.

Afhængigt af om flag er 0 eller 1, udskrives en passende meddelelse fra main()funktionen.

Hvilken tilgang er bedre?

Det afhænger af det problem, du prøver at løse. I dette tilfælde er det bedre at videregive argument og returnere en værdi fra funktionen (eksempel 4).

En funktion skal udføre en bestemt opgave. Den checkPrimeNumber()funktion virker ikke tage input fra brugeren eller det viser den relevante meddelelse. Den kontrollerer kun, om et tal er prime eller ej.

Interessante artikler...