Extra zero in final out put where does it come from?

I wrote this code to order any set of numbers from biggest to smallest, but for whatever reason, the output always has a zero at the end. My question is, where did it come from? (new to coding)

Console.WriteLine("Please enter set of numbers");
int input = Convert.ToInt16(Console.ReadLine());

int counter= 1;
int temp1;
int temp2;
int[] array = new int[input+1];

for (int i = 0; i <=input-1; i++)
{
    Console.WriteLine("Please enter entry number " + counter);
    int number = Convert.ToInt16(Console.ReadLine());
    array[i] = number;
        counter++;
}
for (int x = 0; x <= input; x++)
{
    for (int i = 1; i <=input; i++)
    {
        if (array[i - 1] <= array[i])
        {
            temp1 = array[i - 1];
            temp2 = array[i];
            array[i - 1] = temp2;
            array[i] = temp1;
        }
    }
}
Console.WriteLine();
for (int i = 0; i<=input; i++)
{
    Console.Write(array[i] + " ");
}
Console.ReadLine();
Jon Skeet
people
quotationmark

You're inconsistent between whether you're trying to handle input + 1 or input elements. For example:

int[] array = new int[input+1];

for (int i = 0; i <=input-1; i++)
{
    Console.WriteLine("Please enter entry number " + counter);
    int number = Convert.ToInt16(Console.ReadLine());
    array[i] = number;
    counter++;
}

You're creating an array with input + 1 elements, but only populating input of them.

In general, it's much more common to use exclusive upper boundaries for loops. For example:

int[] array = new int[input];

for (int i = 0; i < input; i++)
{
    // No need for the counter variable at all
    Console.WriteLine("Please enter entry number " + (i + 1));
    int number = Convert.ToInt16(Console.ReadLine());
    array[i] = number;
}

people

See more on this question at Stackoverflow