Add example for local and global variables

This commit is contained in:
pro100ton 2024-12-12 22:55:25 +03:00
parent edfeb5ea42
commit 7c8e99f5aa
2 changed files with 79 additions and 0 deletions

View file

@ -0,0 +1,61 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUMBER 100
/* External variable */
int secret_number;
// Prototypes
void initialize_number_generator(void);
void choose_new_secret_number(void);
void read_guess(void);
int main() {
char command = 'y';
printf("Guess the secret number between 1 and %d. \n\n", MAX_NUMBER);
initialize_number_generator();
do {
choose_new_secret_number();
printf("New number has been chosen.\n");
read_guess();
printf("Play again? (Y/N)\n");
while (getchar() != '\n')
; // Discard any leftover input
scanf("%c", &command);
printf("\n");
} while (command == 'y' || command == 'Y');
exit(0);
}
/**
* @brief Initializing random number generator based on current time
* time(NULL) returns current time in `time_t` format
*/
void initialize_number_generator(void) { srand((unsigned)time(NULL)); }
/**
* @brief Here we are using rand() function and getting the remaining value of
* deletion by MAX_NUMBER + 1 to get random value between 0 and 100
*/
void choose_new_secret_number(void) {
secret_number = rand() % MAX_NUMBER + 1;
};
void read_guess(void) {
int guess, num_guesses = 0;
for (;;) {
num_guesses++;
printf("Enter guess: ");
scanf("%d", &guess);
if (guess == secret_number) {
printf("You guessed the number after %d attempts!\n\n", num_guesses);
return;
} else if (guess < secret_number) {
printf("Missed! Secret value is lower than your value\n");
} else {
printf("Missed! Secret value is higher than your value\n");
}
}
};

View file

@ -0,0 +1,18 @@
#include <stdio.h>
#include <stdlib.h>
/**
* @brief Function for demonstration static local variables
*/
void test_static() {
static int static_var;
static_var += 1;
printf("%d\n", static_var);
}
int main() {
test_static();
test_static();
test_static();
test_static();
exit(0);
}