Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中的矩阵数组_C#_Arrays_Matrix - Fatal编程技术网

C# c语言中的矩阵数组

C# c语言中的矩阵数组,c#,arrays,matrix,C#,Arrays,Matrix,我有一个程序,应该从控制台读取一个整数值x,然后打印出多维数据。列j上的行i的值应为i*j。例如:如果我输入3,矩阵应该如下所示: 1 2 3 2 4 6 3 6 9 现在,我已经在我的主函数中编写了以下代码: Console.WriteLine("Input a value: "); int x = int.Parse(Console.ReadLine()); int[,] arr = new int[x,x];

我有一个程序,应该从控制台读取一个整数值x,然后打印出多维数据。列j上的行i的值应为i*j。例如:如果我输入3,矩阵应该如下所示:

1  2  3  

2  4  6  

3  6  9  
现在,我已经在我的主函数中编写了以下代码:

        Console.WriteLine("Input a value: ");
        int x = int.Parse(Console.ReadLine());

        int[,] arr = new int[x,x];

        for (int i = 0; i < x; i--)
        {
            for (int j = 0; j < x; j++)
            {
                arr[i, j] = arr[i, j] + arr[i, j];

                Console.Write(arr[i, j] + " ");        
            }

        }
        Console.ReadLine();
我做错了什么

您必须将i-更改为i++

将Console.WriteLine放在内部for循环之后。它将在每x个数字后打印一个换行符,使其像矩阵一样循环

你是说j列上的行i的值应该是i*j,但是我在你的代码中看不到任何i*j。将计算更改为:arr[i,j]=i*j

应该是这样,但因为循环从0到x-1运行,并且希望结果是从1到x,所以必须调整计算并使其arr[i,j]=i+1*j+1

完整代码应为:

Console.WriteLine("Input a value: ");
int x = int.Parse(Console.ReadLine());

int[,] arr = new int[x, x];

for (int i = 0; i < x; i++)
{
    for (int j = 0; j < x; j++)
    {
        arr[i, j] = (i + 1) * (j + 1);

        Console.Write(arr[i, j] + " ");
    }

    Console.WriteLine();
}
Console.ReadLine();

你说arr[i,j]的值必须等于i*j,但你没有在你的代码上这样做

改变

arr[i, j] = arr[i, j] + arr[i, j];


您需要更改的另一件事是,由于以下代码,for循环中的i正在递减:i-。将其更改为i++

看看int[,]是如何充满了零的,您所做的就是添加零+零

看起来你真正想要的是:

    int[,] arr = new int[x,x];

    for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < x; j++)
        {
            arr[i, j] = (i+1) * (j + 1);

            Console.Write(arr[i, j] + " ");        
        }
        Console.Write("\r\n");
    }
    Console.ReadLine();

i-应该是i++使用调试器逐步完成它,错误应该是显而易见的。我尝试过,但后来得到的输出是:0 0 0 0 0 0 0 0在一行中,在外部循环中,在内部循环结束后,如Console.WriteLine\n;并改变为arr[i,j]=i*j;非常感谢。这真的很有帮助。这产生了与您在问题中想要的相同的输出。
arr[i, j] = (i+1) * (j+1);
    int[,] arr = new int[x,x];

    for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < x; j++)
        {
            arr[i, j] = (i+1) * (j + 1);

            Console.Write(arr[i, j] + " ");        
        }
        Console.Write("\r\n");
    }
    Console.ReadLine();