获得10个数字并以相反顺序打印的程序

时间:2016-10-01 07:12:41

标签: c# printing numbers reverse

我试图编写一个需要10个输入并按相反顺序打印的程序。这是我在c#中的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace inverse
{
  class Program
  {
    static void Main(string[] args)
    {
        int i ;
        int[] n = new int[10];
        Console.WriteLine("please enter 10 numbers");
        for (i = 1; i <= 10; i++)
            n[i] =int.Parse(Console.ReadLine());
        for (i = 10; i >= 1; i--)
        Console.WriteLine(n[i] + " ");
        Console.ReadKey();
    }
  }
}

它没有出现任何错误,但在我尝试调试它时它也无法正常工作。你能帮我吗?

3 个答案:

答案 0 :(得分:1)

您需要从0开始到9,反之亦然

 for (i = 0; i <= 9 i++)
        n[i] =int.Parse(Console.ReadLine());
 for (i = 9; i >= 0; i--)
        Console.WriteLine(n[i]);

答案 1 :(得分:1)

您应该将第二个for循环更改为:

for (i = 9; i >= 0; i--)

为什么?

因为你的循环不正确,i从10开始。在每次迭代中,它递减,直到i >= 1。换句话说,i的值从10变为1.

但这不是阵列的工作方式,是吗? C#中的数组是从0开始的,这意味着第一项是索引0,最后一项是索引(长度 - 1)。在这种特定情况下,最后一项将位于索引9(10 - 1 = 9)!

当您尝试访问索引10处的项时,它当然会抛出异常,因为数组以索引9结束!此外,即使它在索引10处有一个项目,也不会打印数组的第一项,因为循环停在i = 1

这就是为什么你希望i的值从9变为0而不是10到1。

编辑:

我刚刚意识到你犯了另一个错误,你的第一个for循环也是错误的。它应该从0循环到9,而不是1到10.这是正确的版本:

for (int i = 0 ; i <= 9, i++)

或者,您只需添加- 1

,而不是更改循环的标题
for (i = 1; i <= 10; i++)
    n[i - 1] =int.Parse(Console.ReadLine());
for (i = 10; i >= 1; i--)
    Console.WriteLine(n[i - 1] + " ");

答案 2 :(得分:0)

使用以下代码:

static void Main(string[] args)
{
    int i;
    int[] n = new int[11];
    Console.WriteLine("please enter 10 numbers");
    for (i = 1; i <= 10; i++)
        n[i] = Convert.ToInt32((Console.ReadLine()));
    for (i = 10; i >= 1; i--)
    Console.WriteLine(n[i] + " ");
    Console.ReadKey();
}

问题是当数组从0开始时,数组索引超出范围。当我放弃10个输入时,它给了我错误。