单选题 有以下程序:
#include<stdio.h>
#define N 4
int fun(int a[][N])
{int i,y=0;
for(i=0;i<N;i++)
y+=a[1][i]+a[N-1][i];
for(i=0;i<N-1;i++)
a[i][i]=a[i][i] * a[i][i];
return y;
}
main()
{int y,x[N][N]={{11,21,13,4},
{15,6,17,8},
{9,1,11,12},
{3,4,15,6}};
y=fun(x);
printf("%d,%d,%d",y,x[N-3][N-3],x[N-3][N-2]);
}
程序执行后的输出结果是______。
【正确答案】 A
【答案解析】[解析] main()函数首先定义一个二维数组x,它是N行N列的整型二维数组,然后将数组x传给函数fun()。在函数fun()中,第一个for循环将数组a中,行下标为1的所有元素与行下标为N-1(3)的所有元素累加赋给y,所以y的值为15+6+17+8+3+4+15+6=74;第二个for循环将对角线上的三个元素:a[0][0]、a[1][1]、a[2][2]分别平方后赋给自身,由于a是数组x的地址,对a数组元素的修改会同步修改实参x的元素值,a[0][0]为121,a[1][1]为36,a[2][2]为121,调用完fun()函数后,程序输出y、x[1][1]、x[1][2]的值分别是:74、36、17。故本题答案为A选项。