📅  最后修改于: 2023-12-03 14:54:49.122000             🧑  作者: Mango
这是教资会网络中分享的一道考题,是关于计算机科学领域的。考生需要掌握数据结构和算法的相关知识,理解程序执行的过程和编程语言的语法。
给定下面的程序段:
#include <stdio.h>
int main() {
int arr[4][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
int i, j, k, l;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
k = arr[i][j];
l = arr[j][i];
arr[i][j] = l;
arr[j][i] = k;
}
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
程序的运行结果是什么?
(A) 不打印任何东西
(B) 打印 4 × 4 的单位矩阵
(C) 打印输入数组 arr 的转置矩阵
(D) 打印输入数组 arr 的逆矩阵
这段程序首先定义了一个 4 × 4 的二维数组 arr,存储在内存中。接着,嵌套两个 for 循环,遍历了整个数组。在内部的循环中,通过变量 l 和 k,交换了 arr[i][j] 和 arr[j][i] 两个元素的值。这相当于把数组进行了转置操作。
最后,程序打印了转置后的数组 arr。所以,选项(C) 是正确的。
```c
#include <stdio.h>
int main() {
int arr[4][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
int i, j, k, l;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
k = arr[i][j];
l = arr[j][i];
arr[i][j] = l;
arr[j][i] = k;
}
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
答案为(C) 打印输入数组 arr 的转置矩阵。