`` `c
#include
#include
#συμπεριλαμβάνω
μακρύς factorial (int n) {
αν (n <0) {
fprintf (stderr, "Σφάλμα:Factorial δεν ορίζεται για αρνητικούς αριθμούς. \ n");
έξοδος (1); // Έξοδος με κωδικό σφάλματος
}
αν (n ==0) {
επιστροφή 1;
}
μακρύ αποτέλεσμα =1;
για (int i =1; i <=n; i ++) {
αν (llong_max /αποτέλεσμα
fprintf (stderr, "Σφάλμα:Το Factorial υπερβαίνει τη μέγιστη μεγάλη μεγάλη τιμή. \ n");
έξοδος (1);
}
αποτέλεσμα *=i;
}
αποτέλεσμα επιστροφής ·
}
int main () {
int num;
printf ("Εισάγετε έναν μη αρνητικό ακέραιο:");
αν (scanf ("%d", &num)! =1) {
fprintf (stderr, "Σφάλμα:μη έγκυρη είσοδος. \ n");
επιστροφή 1; // Έξοδος με κωδικό σφάλματος
}
μακρύ γεγονός =factorial (num);
printf ("Factorial of %d =%lld \ n", num, fact);
επιστροφή 0;
}
`` `
Για να μεταγλωττίσετε και να εκτελέσετε αυτόν τον κωδικό:
1. Αποθήκευση: Αποθηκεύστε τον κώδικα ως αρχείο `.c` (π.χ.` factorial.c`).
2. compile: Ανοίξτε ένα τερματικό και χρησιμοποιήστε έναν μεταγλωττιστή C (όπως το GCC) για να συντάξετε τον κωδικό:
`` `bash
GCC Factorial.c -o Factorial
`` `
3. Εκτέλεση: Εκτελέστε το πρόγραμμα Compiled:
`` `bash
./factorial
`` `
Το πρόγραμμα θα σας ζητήσει να εισαγάγετε έναν αριθμό.
Βελτιώσεις και εξηγήσεις:
* Χειρισμός σφαλμάτων: Ο κωδικός περιλαμβάνει επιταγές για:
* Αρνητική είσοδος: Διαχειρίζεται ρητά αρνητικές εισροές, η οποία δεν ορίζεται για τα παράγοντα.
* υπερχείλιση: Αποτρέπει την πιθανή υπερχείλιση ελέγχοντας εάν ο επόμενος πολλαπλασιασμός θα υπερβαίνει τη μέγιστη τιμή που μπορεί να κρατήσει ένας ακέραιος ακέραιος (`llong_max '). Χρησιμοποιώντας το `long long` δίνει μια μεγαλύτερη σειρά από` int` ή `long '.
* Μη έγκυρη είσοδος: Ελέγχει αν το `SCANF` διαβάσει με επιτυχία έναν ακέραιο.
* Τύπος δεδομένων Long Long 'Long: Η χρήση του "Long Long` παρέχει ένα μεγαλύτερο εύρος για τον υπολογισμό του παράγοντα, επιτρέποντάς σας να υπολογίσετε τα παράγοντα μεγαλύτερων αριθμών πριν συναντήσετε υπερχείλιση. Ωστόσο, ακόμη και το "Long Long" έχει όρια. Τα παράγοντα αναπτύσσονται εξαιρετικά γρήγορα.
* Καθαρή μηνύματα σφάλματος: Τα μηνύματα σφάλματος ενημερώνουν τον χρήστη σχετικά με το συγκεκριμένο πρόβλημα που αντιμετωπίζεται.
* Κώδικες εξόδου: Το πρόγραμμα χρησιμοποιεί κατάλληλους κωδικούς εξόδου (0 για επιτυχία, 1 για σφάλματα) που είναι καλή πρακτική για προγράμματα που θα μπορούσαν να καλούνται από άλλα σενάρια ή προγράμματα.
Θυμηθείτε ότι τα παράγοντα μεγαλώνουν απίστευτα γρήγορα. Ακόμη και το "Long Long" θα ξεχειλίσει για σχετικά μικρές εισροές (π.χ. 21!). Για αυθαίρετα μεγάλα παράγοντα, θα πρέπει να χρησιμοποιήσετε μια εξειδικευμένη αριθμητική βιβλιοθήκη αυθαίρετης ακρίβειας.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα