计算机二级

有下列程序: #include<stdi0.h> #defineN4 voidfun(inta[][N],intb[]) {inti; for(i=0;i<N,i++)b[i]=a[i][i]; } voidmain( ) {intx[][N]={{1,2,3},{4),{5,6,7,8),{9,10}), y[N],i; fun(x,y); for(i=0;i<n;i++)printf("%d,",y[i]); printf("\n"); } 程序的运行结果是( )。A.1,2,3,4,B.1,0,7,

题目

有下列程序: #include<stdi0.h> #defineN4 voidfun(inta[][N],intb[]) {inti; for(i=0;i<N,i++)b[i]=a[i][i]; } voidmain( ) {intx[][N]={{1,2,3},{4),{5,6,7,8),{9,10}), y[N],i; fun(x,y); for(i=0;i<n;i++)printf("%d,",y[i]); printf("\n"); } 程序的运行结果是( )。

A.1,2,3,4,

B.1,0,7,0,

C.1,4,5,9,

D.3,4,8,10,

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序: #include #define N 4 void fun(int a[ ][N],int b[ ]) { int i; for(i=0;i main( ) { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2==0)continue;x++;} x++; } printf("x=%d\n",x); } 程序的运行结果是( )。

A.x=4

B.x=6

C.x=8

D.x=12


答案:C 
解析:第一次循环:i=0,执行x++后x=1,执行内层循环j=0,由于j%2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=1+1+1=3,跳出内层循环,执行下一条x++,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4*2=8。 

第2题:

有以下程序

#include<stdio.h>

#define N 4

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 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++) prinff("%d,",y[i]);printf("\n");

}

程序运行后的输出结果是

A.-12,-3,0,0,

B.-3,-1,1,3,

C.0,1,2,3,

D.-3,-3,-3,-3,


正确答案:B
解析:从程序中看出,执行函数fun时,当i从0到3时,a[i][i]分别为1、6、11、16,a[i][N-1-i]分别为4、7、10、13,y[i]的值分别为两个数组对应值相减,所以答案为B)。

第3题:

有以下程序:includedefine N 8void fun(int*x,int i){*x=*(x+i)+1;}main(){int a[N]=

有以下程序: #include<stdio.h> #define N 8 void fun(int*x,int i) {*x=*(x+i)+1;} main() {int a[N]={1,2,3,4,5,6,7,8},i; fun(a,2); for(i=0;i<N/2;i++) {printf("%d",a[i]);} printf("\n"); } 程序运行后的输出结果是( )。

A.1 3 1 3

B.3 2 3 4

C.4 2 3 4

D.1 2 3 4


正确答案:C
解析:函数fun(int*x,int i)的功能是把数组元素x[i]的值加1赋给x[0]。所以在主函数中执行fun(a,2)后,数组元数a[0]的值等于4。然后在for循环语句中,输出数组a中的前4个元素的值,分别是4,2,3,4。

第4题:

有下列程序:

#include<stdi0.h>

#defineN4

voidfun(inta[][N],intb[])

{inti;

for(i=0;i<N,i++)b[i]=a[i][i];

}

voidmain( )

{intx[][N]={{1,2,3},{4),{5,6,7,8),{9,10}),

y[N],i;

fun(x,y);

for(i=0;i<n;i++)printf("%d,",y[i]);

printf("\n");

}

程序的运行结果是( )。

A.1,2,3,4,

B.1,0,7,0,

C.1,4,5,9,

D.3,4,8,10,


正确答案:B
B。【解析】本题考查数组的初始化,在对二维数组元素赋初值时,如果只对部分元素赋初值,那未赋初值的元素自动取0。fun函数是将二维数组a中主对角线上的元素赋给数组b,所以y[4]=(1,0,7,0)。

第5题:

有以下程序 include define N 4 void fun(int a[][N],int b[]) { int

有以下程序 #include <stdio.h> #define N 4 void fun(int a[][N],int b[]) { int i; for(i=0;i<N;i++) b[i]=a[i][i]; } main() {int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10} },Y[N],i; fun(x,y); for(i=0;i<N;i++) printf("%d,",y[i]); printf("\n"); } 程序的运行结果是______。

A.1,2,3,4,

B.1,0,7,0,

C.1,4,5,9,

D.3,4,8,10,


正确答案:B
解析:在主函数中,定义并初始化了4行4列的二维数组x。对于二维数组元素的赋值,可以只对部分元素赋初值,未赋初值的元素自动取0。x数组元素赋初值后各元素为:

fun函数的作用是将二维数组a中主对角线元素赋给数组b,由于数组a与数组x共用同一存储单元,也即将数组x中主对角线元素赋给了数组b。又因为数组b与数组y共用同一存储单元,所以主函数中通过语句“printf("%d,"y[i]);”输出的即为数组b中的值,所以程序运行结果为“1,0,7,0,”。

第6题:

有以下程序 include void fun(int a[],int n) { int i,t; for(i=0;

有以下程序 #include <stdio.h> void fun(int a[],int n) { int i,t; for(i=0;i<n/2;i++) {t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;} } main() {int k[10]={1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2;i<8;i++) printf("%d",k[i]); printf("\n"); } 程序的运行结果是______。

A.345678

B.876543

C.1098765

D.321678


正确答案:D
解析:在主函数中,定义了一维数组k,并通过调用fun函数将形参数组a指向实参数组k所在的存储单元,这样,a和 k共用同一存储单元,所以对数组a的元素值的改变相当于对相应数组k的元素值的改变。在fun函数中,通过for循环对数组元素a[0]与a[4]、a[1]与a[3]的值分别作了交换,也即相当于主函数中k[0]与k[4]、k[1]与k[3]的值分别作了交换,此时k中各元素的值为5,4,3,2,1,6,7,8,9,10,故输出k[2]到k[7]的值为321678。

第7题:

有以下程序#include <stdio.h>#define N 4void fun(int a[][N], int b[]) { int i; for(i=0; i<N; i++) b[i]=a[i][i];}main(){ int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N], i; fun(x,y); for (i=0; i<N; i++) printf("%d,", y[i]); printf("\n");}程序的运行结果是A.l,2,3,4, B.1,0,7,0, C.1,4,5,9, D.3,4,8,10,


正确答案:B
本题考查二维数组的相关操作。程序主要包括两个部分:主函数部分和fun函数。主函数初始给出了一个4×4的二维矩阵,并对每一行赋初值,可以看出每一行都要有4个元素,而对于给出的初值个数不满足4个的,要先从第一列开始将各个值赋给各列,不足的部分用0补齐。函数fun的作用是将二维矩阵a中行号与列号相同的数据赋值给一维矩阵y,y的下标与该数据在a中的行号相同。题目所要求解的即通过printf函数将矩阵y中的元素按照顺序输出。本题中二维矩阵a初始化后为{{1,2,3,0},{4,0,0,0},{5,6,7,8},{9,10,0,0}}。将行号与列号相同的元素赋给y,则y矩阵的数据为{1,0,7,0},输出即可得到结果。

第8题:

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

A.2,4,8,

B.3,6,9,

C.3,5,7,

D.1,3,5,


正确答案:B
Fun函数功能是把数组a的每一行的最大值赋给b,a的第一行的最大值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9。

第9题:

有以下程序

#include <stdio.h>

#define N 4

void fun(int a[][N], int b[])

{ int i;

for(i=0;i<N;i++) b[i] = a[i][i];

}

main()

{ int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;

fun(x,y);

for(i=0;i<N;i++) printf("%d,",y[i]);

printf("\n");

}

程序的运行结果是

A)1,2,3,4,

B)1,0,7,0,

C)1,4,5,9,

D)3,4,8,10,


正确答案:B