一个获取 10 个数字并以相反顺序打印它们的程序

a program that get 10 numbers and print them in reverse order

我正在尝试编写一个接受 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();
    }
  }
}

它没有出现任何错误,但在我尝试调试它时它也不起作用。你能帮帮我吗?


使用下面的代码:

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 个输入时它给了我错误。

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

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

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

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

为什么?

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

但这不是数组的工作方式,是吗? C# 中的数组是从 0 开始的,这意味着第一项位于索引 0,最后一项位于索引 (length - 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:

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