有以下程序: #include<stdio.h> #define N4 void fun(int a[][N],int b[]) {int i; for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i]; } main() {int

admin2020-06-16  26

问题 有以下程序:
#include<stdio.h>
#define N4
void fun(int a[][N],int b[])
{int i;
for(i=0;i<N;i++)b=a-a[N-1-i];
}
main()
{int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y);printf("\n");
}
程序运行后的输出结果是(  )。

选项 A、-3,-1,1,3,
B、-12,-3,0,0,
C、0,1,2,3,
D、-3,-3,-3,-3,

答案A

解析 分析程序结构,可知程序在main函数中初始化一个4×4的二维数组,然后调用fun()函数用二维数组x为一维数组y赋值,最后将数组y打印出来,所以重点是分析fun()函数中如何使用实参x给实参y赋值。在fun()函数中,每次使用a-a[N-1-i]为b的第i个元素赋值,由于for循环中i的取值分别为0、1、2、3,所以b的4个元素赋值分别为:a[0][0]-a[0][3],a[1][1]-a[1][2],a[2][2]-a[2][1],a[3][3]-a[3儿0],对应的赋值为:1-4,6-7,11-10,16-13,b的4个元素值为:=3、-1、1、3。答案选A。(注:仔细观察a[j]、a[j][N-1-i]可以发现,它们分别对应4×4矩阵的对角线元素和反对角线元素)
转载请注明原文地址:https://jikaoti.com/ti/9pG0FFFM
0

最新回复(0)