编写一个 C 语言程序,通过示例和详细说明来执行多维数组的算术运算。
C 语言执行多维数组算术运算的程序
此 C 程序允许用户输入两个二维数组的行数和列数。然后,我们将使用 C 语言对多维数组执行算术运算,如加法、减法、乘法和除法。
#include<stdio.h>
int main()
{
int i, j, rows, columns, a[10][10], b[10][10];
int Addition[10][10], Subtraction[10][10], Multiplication[10][10], Module[10][10];
float Division[10][10];
printf("\nPlease Enter Number of rows and columns\n");
scanf("%d %d", &i, &j);
printf("\nPlease Enter the First Array Elements\n");
for(rows = 0; rows < i; rows++)
{
for(columns = 0;columns < j;columns++)
{
scanf("%d", &a[rows][columns]);
}
}
printf("\nPlease Enter the Second Array Elements\n");
for(rows = 0; rows < i; rows++)
{
for(columns = 0;columns < j;columns++)
{
scanf("%d", &b[rows][columns]);
}
}
for(rows = 0; rows < i; rows++)
{
for(columns = 0;columns < j;columns++)
{
Addition[rows][columns] = a[rows][columns] + b[rows][columns];
Subtraction[rows][columns] = a[rows][columns] - b[rows][columns];
Multiplication[rows][columns] = a[rows][columns] * b[rows][columns];
Division[rows][columns] = a[rows][columns] / b[rows][columns];
Module[rows][columns] = a[rows][columns] % b[rows][columns];
}
}
printf("\nAdd\t Sub\t Multi\t Div\t Mod");
for(rows = 0; rows < i; rows++)
{
for(columns = 0; columns < j; columns++)
{
printf("\n%d \t ", Addition[rows][columns]);
printf("%d \t ", Subtraction[rows][columns]);
printf("%d \t ", Multiplication[rows][columns]);
printf("%.2f \t ", Division[rows][columns]);
printf("%d \t ", Module[rows][columns]);
}
}
return 0;
}

在此 C 语言执行多维数组算术运算的程序中,下面的 for 循环将帮助遍历 a[2][3] 矩阵中的每个单元格。for 循环内的条件((rows < i) 和 (columns < j))将确保编译器不会超出矩阵限制。否则,矩阵将溢出。
for 循环内的 scanf 语句将把用户输入的值存储到每个单独的数组元素中,例如 a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]
for(rows = 0; rows < i; rows++).
{
for(columns = 0; columns < j; columns++)
{
scanf("%d", &a[rows][columns]);
}
}
下面的 C 语言 for 循环将帮助遍历 b[2][3] 矩阵中的每个单元格。
for(rows = 0; rows < i; rows++).
{
for(columns = 0; columns < j; columns++)
{
scanf("%d", &b[rows][columns]);
}
}
在 C 语言执行多维数组算术运算程序的下一行,我们还有另一个 for 循环。
for(rows = 0; rows < i; rows++)
{
for(columns = 0;columns < j;columns++)
{
Addition[rows][columns] = a[rows][columns] + b[rows][columns];
Subtraction[rows][columns] = a[rows][columns] - b[rows][columns];
Multiplication[rows][columns] = a[rows][columns] * b[rows][columns];
Division[rows][columns] = a[rows][columns] / b[rows][columns];
Module[rows][columns] = a[rows][columns] % b[rows][columns];
}
}
上面的 For 循环用于计算 2 个数组的算术运算,例如加法、减法、乘法、除法和取模。
从上面的 C 语言执行多维数组算术运算的屏幕截图来看,用户插入的值是:
a[2][3] = {{15, 25, 35}, { 45, 55, 65}} 和
b[2][3] = {{10, 5, 20}, {30, 45, 30}}
行第一次迭代
行值为 0,条件 (rows < 2) 为真。因此,它将进入第二个 for 循环。
列第一次迭代
列值为 0,条件 (columns < 2) 为真。因此,它将开始执行循环内的语句,直到条件失败。
加法 [rows][columns] = a[rows][columns] + b[rows][columns];
加法 [0][0] = a[0][0] + b[0][0] => 15 + 10 = 25
减法 [rows][columns] = a[rows][columns] – b[rows][columns];
减法 [0][0] = 15 – 10 = 5
乘法 [rows][columns] = a[rows][columns] * b[rows][columns];
乘法 [0][0] = 15 * 10 = 150
除法 [rows][columns] = a[rows][columns] / b[rows][columns];
除法 [0][0] = 15 / 10 = 1
取模 [rows][columns] = a[rows][columns] / b[rows][columns];
取模 [0][0] = 15 % 10 = 5
列第二次迭代
列值为 1,条件 (columns < 3) 为真。由于我们尚未退出内部循环(Columns 循环),行值将为 0。
加法 [0][1]= a[0][1] + b[0][1];
加法 [0][1]= 25 + 5 = 30
减法 [0][1] = 25 – 5 = 20
乘法 [0][1] = 25 * 5 = 125
除法 [0][1] = 25 / 5 = 5
取模 [0][1] = 25 % 5 = 0
列第三次迭代
列值为 2,条件 (2 < 3) 为真。
加法 [0][2] = a[0][2] + b[0][2];
加法 [0][2] = 35 + 20 = 55
减法 [0][2] = 35 – 20 = 15
乘法 [0][2] =35 * 20 = 700
除法 [0][2] = 35 / 20 = 1
取模 [0][2] = 25 % 5 = 15
递增后,列值将为 3,条件 (3 < 3) 将失败。因此,它将退出循环。
现在行值将递增,开始第二行迭代。
行第一次迭代
行值为 1,条件 (1 < 2) 为真。因此,它将进入第二个 for 循环。
列第一次迭代
列值为 0,条件 (columns < 3) 为真。
加法 [1][0] = a[1][0] + b[1][0];
加法 [1][0] = 45 + 30 = 75
减法 [1][0] = 45 – 30 = 15
乘法 [1][0] = 45 * 30 = 1350
除法 [1][0] = 45 / 30 = 1
取模 [1][0] = 45 % 30 = 15
列第二次迭代
列值为 1,条件 (columns < 3) 为真。由于我们仍在内部循环(Columns 循环)中,行值将为 1。
加法 [1][1]= a[1][1] + b[1][1];
加法 [1][1]= 55 + 45 = 100
减法 [1][1]= 55 – 45 = 10
乘法 [[1][1]= 55 * 45 = 2475
除法 [1][1]= 55 / 45 = 1
取模 [1][1]= 55 % 45 = 10
列第三次迭代
列值为 2,条件 (columns < 3) 为真。
加法 [1][2] = a[1][2] + b[1][2];
加法 [1][2] = 65 + 30 = 95
减法 [1][2] = 65 – 30 = 35
乘法 [1][2] = 65 * 30 = 1950
除法 [1][2] = 65 / 30 = 2
取模 [1][2] = 65 % 30 = 5
递增后,列值将为 3,条件 (columns < 3) 将失败。因此,它将退出循环。
现在行值将递增。这意味着 rows = 2。条件 (2 < 2) 将失败。因此,它将退出循环。
下一个 for 循环将按上述方式遍历。但是,它不会进行求和,而是使用其中的 printf 语句逐个显示值。
for(rows = 0; rows < i; rows++)
{
for(columns = 0; columns < j; columns++)
{
printf("\n%d \t ", Addition[rows][columns]);
printf("%d \t ", Subtraction[rows][columns]);
printf("%d \t ", Multiplication[rows][columns]);
printf("%.2f \t ", Division[rows][columns]);
printf("%d \t ", Module[rows][columns]);
}
}
此 C 程序中加法数组的最终输出为:
加法 [2][3] = { {25, 30, 55}, {75, 100, 95} };
减法数组的最终输出是:
减法 [2][3] = { {5, 20, 15}, {15, 10, 35} };
乘法数组的最终输出是:
乘法 [2][3] = { {150, 125, 700}, {1350, 2475, 1950} };
除法数组的最终输出是:
除法 [2][3] = { {1.00, 5.00, 1.00,}, {1.00, 1.00, 2.00} };
模数组的最终输出是:
模 [2][3] = { {5, 0, 15}, {15, 10, 5} };