用C# 7.3编写一个窗体程序,能实现矩阵操作,要求如下: (1)能随机生成方阵,矩阵的维数用户可以指定。 (2)实现矩阵相加、相减以及相乘。 (3)实现矩阵转置。
时间: 2024-03-10 08:50:56 浏览: 127
C#窗体程序
以下是一个简单的 C# 7.3 窗体程序,实现了矩阵操作的要求:
```csharp
using System;
using System.Linq;
using System.Windows.Forms;
namespace MatrixOperation
{
public partial class MainForm : Form
{
private int[,] matrixA;
private int[,] matrixB;
private int[,] matrixC;
public MainForm()
{
InitializeComponent();
}
// 随机生成方阵
private void GenerateMatrixButton_Click(object sender, EventArgs e)
{
int n = (int)MatrixSizeNumericUpDown.Value;
var rand = new Random();
matrixA = new int[n, n];
matrixB = new int[n, n];
matrixC = new int[n, n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
matrixA[i, j] = rand.Next(10);
matrixB[i, j] = rand.Next(10);
}
}
DisplayMatrix(matrixA, MatrixATextBox);
DisplayMatrix(matrixB, MatrixBTextBox);
}
// 显示矩阵
private void DisplayMatrix(int[,] matrix, TextBox textBox)
{
int n = matrix.GetLength(0);
textBox.Text = "";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
textBox.Text += matrix[i, j].ToString() + " ";
}
textBox.Text += Environment.NewLine;
}
}
// 矩阵相加
private void AddMatrixButton_Click(object sender, EventArgs e)
{
int n = (int)MatrixSizeNumericUpDown.Value;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
matrixC[i, j] = matrixA[i, j] + matrixB[i, j];
}
}
DisplayMatrix(matrixC, MatrixCTextBox);
}
// 矩阵相减
private void SubtractMatrixButton_Click(object sender, EventArgs e)
{
int n = (int)MatrixSizeNumericUpDown.Value;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
matrixC[i, j] = matrixA[i, j] - matrixB[i, j];
}
}
DisplayMatrix(matrixC, MatrixCTextBox);
}
// 矩阵相乘
private void MultiplyMatrixButton_Click(object sender, EventArgs e)
{
int n = (int)MatrixSizeNumericUpDown.Value;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
matrixC[i, j] = 0;
for (int k = 0; k < n; k++)
{
matrixC[i, j] += matrixA[i, k] * matrixB[k, j];
}
}
}
DisplayMatrix(matrixC, MatrixCTextBox);
}
// 矩阵转置
private void TransposeMatrixButton_Click(object sender, EventArgs e)
{
int n = (int)MatrixSizeNumericUpDown.Value;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
matrixC[i, j] = matrixA[j, i];
}
}
DisplayMatrix(matrixC, MatrixCTextBox);
}
}
}
```
需要在窗体上添加以下控件:
- Label:MatrixSizeLabel,文本为“矩阵维数:”
- NumericUpDown:MatrixSizeNumericUpDown,最小值为 1,最大值为 10
- Button:GenerateMatrixButton,文本为“生成随机矩阵”
- TextBox:MatrixATextBox,文本框中的多行属性为 true
- TextBox:MatrixBTextBox,文本框中的多行属性为 true
- Button:AddMatrixButton,文本为“矩阵相加”
- Button:SubtractMatrixButton,文本为“矩阵相减”
- Button:MultiplyMatrixButton,文本为“矩阵相乘”
- Button:TransposeMatrixButton,文本为“矩阵转置”
- TextBox:MatrixCTextBox,文本框中的多行属性为 true
在窗体的构造函数中,初始化了三个二维数组 matrixA、matrixB 和 matrixC,用于存储两个矩阵和一个结果矩阵。在 GenerateMatrixButton_Click 事件处理程序中,使用 Random 类生成了两个随机矩阵 matrixA 和 matrixB,并通过 DisplayMatrix 方法将它们显示在 MatrixATextBox 和 MatrixBTextBox 中。
在 AddMatrixButton_Click、SubtractMatrixButton_Click 和 MultiplyMatrixButton_Click 事件处理程序中,分别实现了矩阵相加、相减和相乘的操作,并将结果显示在 MatrixCTextBox 中。
在 TransposeMatrixButton_Click 事件处理程序中,实现了矩阵转置的操作,并将结果显示在 MatrixCTextBox 中。
阅读全文