Bootstrap

C#基础练习76-80

76.求两个距阵相乘的结果:距阵乘法法则如下仅当一个m×n矩阵A的列数与另一个q×p矩阵B的行数相同时(即n = q),才可以执行矩阵乘法A*B。A*B所得到的m×p矩阵C满足以下关系:

     c_ij = Σ (a_ik * b_kj) 

77.写程序实现将一个数组中指定的元素删除,如对于数组{1,3,5,3,8,9},删除其中所有的元素值为3的元素后的数组输出。

78.从键盘输入有n个元素的一个数组,要求打印出这个数组中所有数的平均值pjz以及数组中所有比这个平均值大的数。

79.在控制台上打印输出如下图形:

   1
   1 1
  1 1 2
 1 1 2 3
1 1 2 3 5

80.计算1/3+3/5+5/7+…….+97/99的和

76、

在这个代码中,我们定义了两个示例矩阵 matrixA 和 matrixB,然后调用 MultiplyMatrices 函数来计算它们的乘积。结果矩阵 matrixC 的维度是2x2,因为 matrixA 是2x3的矩阵,而 matrixB 是3x2的矩阵。

注意,这个示例代码假设矩阵A和B的维度是兼容的,能够进行乘法操作。如果矩阵的维度不匹配(例如,矩阵A的列数不等于矩阵B的行数),代码将抛出一个异常。在实际应用中,应当先检查矩阵维度的兼容性,然后再进行乘法运算

 private static void Main(string[] args)
 {
     // 示例矩阵A和B
     int[,] matrixA = {
          { 1, 2, 3 },
          { 4, 5, 6 }
      };

     int[,] matrixB = {
          { 7, 8 },
          { 9, 10 },
          { 11, 12 }
      };

     // 计算矩阵乘法的结果
     int[,] matrixC = MultiplyMatrices(matrixA, matrixB);

     // 输出结果矩阵
     Console.WriteLine("矩阵C的维度: " + matrixC.GetLength(0) + " x " + matrixC.GetLength(1));
     for (int i = 0; i < matrixC.GetLength(0); i++)
     {
         for (int j = 0; j < matrixC.GetLength(1); j++)
         {
             Console.Write(matrixC[i, j] + "\t");
         }
         Console.WriteLine();
     }
 }

 // 矩阵乘法函数
 static int[,] MultiplyMatrices(int[,] matrixA, int[,] matrixB)
 {
     // 获取矩阵A和B的维度
     int aRows = matrixA.GetLength(0);
     int aColumns = matrixA.GetLength(1);
     int bColumns = matrixB.GetLength(1);

     // 初始化结果矩阵C
     int[,] matrixC = new int[aRows, bColumns];

     // 执行矩阵乘法
     for (int i = 0; i < aRows; i++)
     {
         for (int j = 0; j < bColumns; j++)
         {
             for (int k = 0; k < aColumns; k++)
             {
                 matrixC[i, j] += matrixA[i, k] * matrixB[k, j];
             }
         }
     }

     return matrixC;
 }

77、

RemoveAllOccurrences 函数计算原始数组中不等于 elementToRemove 的元素数量,然后创建一个新的数组,长度等于这个数量。接着,它遍历原始数组,将不等于 elementToRemove 的元素复制到新数组中。最后,函数返回新数组。

Main 方法定义了一个示例数组 originalArray 和一个要删除的元素值 elementToRemove,调用 RemoveAllOccurrences 函数来删除所有的3,然后输出新数组

 private static void Main(string[] args)
 {
     int[] originalArray = { 1, 3, 5, 3, 8, 9 }; // 原始数组
     int elementToRemove = 3; // 指定要删除的元素值

     int[] newArray = RemoveAllOccurrences(originalArray, elementToRemove);

     // 输出新数组
     Console.WriteLine("删除所有值为3的元素后的数组:");
     foreach (int value in newArray)
     {
         Console.Write(value + " ");
     }
 }

 // 删除数组中所有指定元素的函数
 static int[] RemoveAllOccurrences(int[] array, int elementToRemove)
 {
     // 计算不包含要删除元素的数量
     int count = 0;
     foreach (int element in array)
     {
         if (element != elementToRemove)
         {
             count++;
         }
     }

     // 创建新数组,长度等于不包含要删除元素的数量
     int[] newArray = new int[count];

     // 复制不包含要删除元素的元素到新数组中
     int index = 0;
     foreach (int element in array)
     {
         if (element != elementToRemove)
         {
             newArray[index++] = element;
         }
     }

     return newArray;
 }

78、程序首先提示用户输入数组的元素个数,然后提示用户输入每个元素的值。接着,程序计算出数组所有元素的平均值 pjz,并打印出所有比这个平均值大的数

 private static void Main(string[] args)
 {
     Console.WriteLine("请输入数组的元素个数:");
     int n = Convert.ToInt32(Console.ReadLine()); // 从键盘读取元素个数

     // 创建一个数组来存储输入的元素
     int[] array = new int[n];

     // 读取数组元素
     Console.WriteLine("请输入 " + n + " 个整数:");
     for (int i = 0; i < n; i++)
     {
         array[i] = Convert.ToInt32(Console.ReadLine()); // 从键盘读取每个元素
     }

     // 计算平均值
     double sum = 0;
     foreach (int element in array)
     {
         sum += element;
     }
     double pjz = sum / n; // 计算平均值

     // 打印平均值
     Console.WriteLine("数组中所有数的平均值pjz: " + pjz);

     // 打印所有比平均值大的数
     Console.WriteLine("所有比平均值pjz大的数:");
     foreach (int element in array)
     {
         if (element > pjz)
         {
             Console.WriteLine(element);
         }
     }
 }

79、

private static void Main(string[] args)
{
    int n = 5; // 可以根据需要修改这个数字来获取更多的行
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - i - 1; j++)
        {
            Console.Write(" ");
        }
        for (int k = 1; k <= i+1; k++)
        {
            Console.Write("{0} ", Fibonacci(k));
        }
        Console.WriteLine();
    }
}

static int Fibonacci(int n)
{
    if (n <= 1)
        return n;
    else
        return Fibonacci(n - 1) + Fibonacci(n - 2);
}

80、

 private static void Main(string[] args)
 {
     double sum = 0; // 用于累加序列的和
     for (int i = 1; i < 99; i += 2)
     {
         sum += (double)i / (i + 2); // 计算每一项并累加到总和中
     }
     Console.WriteLine($"1/3 + 3/5 + 5/7 + ... + 97/99 的和为: {sum}");
 }

;