Arten von benutzerdefinierten Funktionen in der C-Programmierung

In diesem Tutorial lernen Sie verschiedene Ansätze kennen, mit denen Sie dasselbe Problem mithilfe von Funktionen lösen können.

Diese 4 folgenden Programme prüfen, ob die vom Benutzer eingegebene Ganzzahl eine Primzahl ist oder nicht.

Die Ausgabe aller dieser Programme ist dieselbe, und wir haben in jedem Beispiel eine benutzerdefinierte Funktion erstellt. Der Ansatz, den wir in jedem Beispiel gewählt haben, ist jedoch unterschiedlich.

Beispiel 1: Keine Argumente übergeben und kein Rückgabewert

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

Die checkPrimeNumber()Funktion nimmt Eingaben vom Benutzer entgegen, prüft, ob es sich um eine Primzahl handelt oder nicht, und zeigt sie auf dem Bildschirm an.

Die leeren Klammern in der checkPrimeNumber();Anweisung innerhalb der main()Funktion zeigen an, dass kein Argument an die Funktion übergeben wird.

Der Rückgabetyp der Funktion ist void. Daher wird von der Funktion kein Wert zurückgegeben.

Beispiel 2: Keine Argumente übergeben, aber ein Rückgabewert

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

Die leeren Klammern in der n = getInteger();Anweisung geben an, dass kein Argument an die Funktion übergeben wird. Der von der Funktion zurückgegebene Wert wird n zugewiesen.

Hier nimmt die getInteger()Funktion Eingaben vom Benutzer entgegen und gibt sie zurück. Der Code zum Überprüfen, ob eine Zahl eine Primzahl ist oder nicht, befindet sich in der main()Funktion.

Beispiel 3: Argument übergeben, aber kein Rückgabewert

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

Der vom Benutzer eingegebene ganzzahlige Wert wird an die checkPrimeAndDisplay()Funktion übergeben.

Hier checkPrimeAndDisplay()prüft die Funktion, ob das übergebene Argument eine Primzahl ist oder nicht und zeigt die entsprechende Meldung an.

Beispiel 4: Argument übergeben und Rückgabewert

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

Die Eingabe des Benutzers wird an die checkPrimeNumber()Funktion übergeben.

Die checkPrimeNumber()Funktion prüft, ob das übergebene Argument prim ist oder nicht.

Wenn das übergebene Argument eine Primzahl ist, gibt die Funktion 0 zurück. Wenn das übergebene Argument eine Nicht-Primzahl ist, gibt die Funktion 1 zurück. Der Rückgabewert wird der Flagvariablen zugewiesen.

Abhängig davon, ob das Flag 0 oder 1 ist, wird eine entsprechende Nachricht von der main()Funktion gedruckt .

Welcher Ansatz ist besser?

Nun, es hängt von dem Problem ab, das Sie lösen möchten. In diesem Fall ist es besser, ein Argument zu übergeben und einen Wert von der Funktion zurückzugeben (Beispiel 4).

Eine Funktion sollte eine bestimmte Aufgabe ausführen. Die checkPrimeNumber()Funktion nimmt keine Eingaben vom Benutzer entgegen und zeigt auch nicht die entsprechende Meldung an. Es wird nur geprüft, ob eine Zahl eine Primzahl ist oder nicht.

Interessante Beiträge...