Hi:

I am learning C and I am having a little trouble with this program.

The task was to write a program that can determine the largest and smallest integers.

I am using a while loop to accumulate the numbers
the value 0 acts as a "sentinel" value that will stop the program.
The problem is when I enter 0 to stop the program, it will take 0 as the smallest number. This also happens when I do other values like -99 or others. Any help will be greatly appreciated.
Code:
//Write a program that reads an integer and determines and prints whether it is od or even


#include <stdio.h>
#include <math.h>
#include <limits.h>


int main(void)
{
	int numbers;//numbers
	int counter = 0;//counter of variables
	int accumulator = 0;//adds all numbers up
	int average;//computes average of all the numbers
	int largest = 0;
	int smallest = 0;
	int counting = -99;//value that, when entered, will stop program. 
	while(numbers != 0)
	{
		printf("Please enter a number. Enter 0 to end.\n");
		scanf("%d", &numbers);
		accumulator += numbers;


		if(numbers == 0)
			{
				printf("Thank you.\n");;
				if(numbers < smallest && numbers !=0 );
				{
					numbers = smallest;
				}//end if
			}//end if
		else
			{
				counter++;
			}//end if
		if(numbers % 2 == 0 && numbers != 0)
			{
				printf("%d is an even number.\n", numbers);
			}//end if
		else if(numbers % 2 != 0 && numbers != 0)
			{
				printf("%d is an odd number.\n", numbers);
			}//end else
	
		if(numbers < smallest && numbers != 0)
		{
			smallest = numbers;
		}//end if


		if(numbers > largest && numbers != 0)
		{
			largest = numbers;
		}//end if
	}//end while
	average = accumulator/counter;
	if(counter > 2)
		{
			printf("User made %d entries\n", counter);
		}//end if
	else
		{
			printf("User made 1 entry.\n");
		}//end else
		
	printf("Total of all entries: %d\n", accumulator);
	printf("Average: %d\n", average);
	printf("Largest number: %d\n ", largest);
	printf("Smallest number: %d\n ", smallest);


}//end main