/* * guessprime4.c - a C version of our simple bash demo program guessprime.sh * (simple replacement for the bash program). Users guess an integer to see if * it matches a predetermined number (hard coded to 31 here). * This version add some defensive programming * * input: a guessed integer * output: whether guessed integer matches 31 * * compile: gcc -o guessprime guessprime4.c * usage: ./guessprime * * Tim Pierson, Fall 2022, based on (or exactly copied from) prior term code from David Kotz * CS 50, Fall 2022 * */ #include #include // function prototype *declarations* int readGuess(void); bool isPrime(const int p); // Main function - ask for a guess, quit if it matches the answer and keep asking otherwise int main(int argc, char *argv[]) { const int answer = 31; int guess; guess = readGuess(); while (guess != answer) { printf("Wrong! try again\n"); guess = readGuess(); } return 0; // exit status } // Ask for and read a guess // function actual *definition* int readGuess(void) { int guess; printf("Enter a prime between 1-100: "); scanf("%d", &guess); if (guess < 1 || guess > 100) { printf("Hey! %d is out of range [1..100].\n", guess); } if (!isPrime(guess)) { printf("Hey! %d is not even a prime number.\n", guess); } return guess; } // Check whether the number is prime // (assuming n <= 100) bool isPrime(const int n) { if (n < 2) return false; if (n > 2 && n%2 == 0) return false; if (n > 3 && n%3 == 0) return false; if (n > 5 && n%5 == 0) return false; if (n > 7 && n%7 == 0) return false; return true; }