面试题答案
一键面试在C语言中,二维数组参数可以通过以下方式声明:void func(int arr[][MAX_COL], int rows, int cols)
,其中MAX_COL
是一个常量,表示二维数组的最大列数。
以下是完整的函数代码:
#include <stdio.h>
// 函数声明
void modifyArray(int arr[][100], int rows, int cols);
int main() {
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
modifyArray(arr, 3, 3);
// 打印修改后的数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
// 函数定义
void modifyArray(int arr[][100], int rows, int cols) {
for (int i = 0; i < rows && i < cols; i++) {
int sum = 0;
for (int j = 0; j < cols; j++) {
sum += arr[i][j];
}
arr[i][i] = sum / cols;
}
}
在上述代码中:
modifyArray
函数接受一个二维数组arr
,其列数必须预先指定(这里假设最大列数为100),行数rows
和列数cols
作为参数。- 在
modifyArray
函数中,通过遍历主对角线元素,计算每行的平均值,并将主对角线元素替换为该行的平均值。
如果是Python语言,代码如下:
def modify_array(arr, rows, cols):
for i in range(min(rows, cols)):
row_sum = sum(arr[i])
arr[i][i] = row_sum / cols
return arr
# 测试
arr = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
result = modify_array(arr, 3, 3)
for row in result:
print(row)
在Python中,二维数组可以直接用列表的列表表示,不需要像C语言那样指定维度大小。函数modify_array
实现了相同的功能,即遍历主对角线元素并将其替换为所在行的平均值。