0

我正在尝试编写一个程序,它从控制台读取一个正整数 N(N < 20)并打印一个像这些矩阵一样的矩阵:

N = 3
1 2 3
2 3 4
3 4 5

N = 5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9

这是我的代码:

using System;
namespace _6._12.Matrix
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Please enter N ( N < 20): ");
            int N = int.Parse(Console.ReadLine());
            int row;
            int col;
            for (row = 1; row <= N; row++)
            {
                for (col = row; col <= row + N - 1; )
                {
                    Console.Write(col + " ");
                    col++;
                }
                Console.WriteLine(row);
            }
            Console.WriteLine();
        }
    }
}

问题是控制台打印了一个额外的列,数字从 1 到 N,我不知道如何摆脱它。我知道为什么会发生这种情况,但仍然找不到解决方案。

4

6 回答 6

4

简单,Console.WriteLine(row);换成Console.WriteLine();

当你在它的时候;

    static void Main()
    {
        int N;

        do
        {
            Console.Write("Please enter N (N >= 20 || N <= 0): ");
        }
        while (!int.TryParse(Console.ReadLine(), out N) || N >= 20 || N <= 0);

        for (int row = 1; row <= N; row++)
        {
            for (int col = row; col <= row + N - 1; )
            {

                Console.Write(col + " ");
                col++;
            }
            Console.WriteLine();
        } 

        Console.Read();
    }

Please enter N (N >= 20 || N <= 0): 5
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 
5 6 7 8 9 
于 2012-08-06T06:20:04.097 回答
1

只需将此行更改Console.WriteLine(row);为 thisConsole.WriteLine(); 这里的问题是;在每个内部循环结束时,您将再次写入行值;这是不需要的。

于 2012-08-06T06:22:14.310 回答
0

第一个问题是你认为 Console.WriteLine(row) 在做什么?当您学习编程时,“查看”代码在做什么以及为什么这样做是至关重要的,而不是运行它、调整它,然后再次运行它以查看它是否按照您想要的方式运行到。一旦您在脑海中清楚而简洁地看到代码在做什么,您会注意到 Console.WriteLine(row) 不正确,您只需要在此时编写一个换行符。

于 2012-08-06T06:34:21.937 回答
0

这是另一种使用if语句而不是使用 a 的方法do while,代码看起来更简单一些:

 static void Main(string[] args)
 {
     Console.Write("Give a number from 1 to 20: ");
     int n = int.Parse(Console.ReadLine());
     int row,col;
     Console.WriteLine("");
     if (n > 0 && n < 21)
     {
         for (row = 1; row <= n; row++)
         {
             for (col = row; col <= row + n - 1;col++ )
             {
                 Console.Write(col + " ");
             }

             Console.WriteLine();
         }
     }
     else
     {
         Console.WriteLine("This number is greater than 20 or smaller than 1");
     }
 }
于 2016-03-01T01:33:13.123 回答
0

//以上所有我厌倦的答案都是错误的你应该尝试一下然后回复我......

        Console.Write("Enter N: (N < 20) ");
        int n = Int32.Parse(Console.ReadLine());

        for (int row = 1; row <= n;row++)
        {
            Console.Write(row+" ");
            for (int col = row+1; col <= row + n - 1; )
            {
                Console.Write(col + " ");
                col++;
            }
            Console.WriteLine();

        }
        Console.ReadLine();
于 2018-09-06T06:31:41.713 回答
-1
using System;
namespace _6._12.Matrix
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Please enter N ( N < 20): ");
            int N = int.Parse(Console.ReadLine());
            int row;
            int col;
            for (row = 1; row <= N; row++)
            {
                for (col = row; col <= row + N - 1; )
                {
                    Console.Write(col + " ");
                    col++;
                }
                Console.WriteLine(row);
            }
            Console.WriteLine();
        }
    }
于 2020-06-11T11:56:47.577 回答