现有如下程序段 #include"stdio.h" main() { int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21, 1}; int i=0,j=5; printf("%d\n",*(&a[0][0]+2*i+j-2));} 则程序的输出结果为A.21B.78C.23D.28

题目

现有如下程序段 #include"stdio.h" main() { int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21, 1}; int i=0,j=5; printf("%d\n",*(&a[0][0]+2*i+j-2));} 则程序的输出结果为

A.21

B.78

C.23

D.28


相似考题
参考答案和解析
正确答案:A
解析: 通过地址来引用二维数组,若有以下定义:int a[3][4],i,j;且当0≤i3,0≤j4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j], *(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0] [0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。
更多“现有如下程序段#include"stdio.h"main(){int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22, ”相关问题
  • 第1题:

    现有如下程序段

    #include "stdio.h"

    int aa(int x,int y);

    main()

    {int a=24,b=16,c;

    c=aa(a,b);

    printf("%d\n",c);}

    int aa(int x,int y)

    {int w;

    while(y)

    {w=x%y;

    x=y;

    y=w;}

    return x;}

    则程序段的输出结果是

    A.8

    B.7

    C.6

    D.5


    正确答案:A

  • 第2题:

    有如下程序#include "stdio.h"void fun(int *a,int *b){ int m; m=(*a+*b)*(*a+*b); m+=(*a-*b)*(*a-*b); printf("%d\n",m);}main(){ int a=5,b=6,*x=&a,*y=&b; fun(x,y);}程序执行后输出的结果为A.120 B.121 C.122 D.123


    正确答案:C
    在本题程序中,首先定义了一个fun函数,函数带有两个指针变量的形参,在程序体中,定义一个整型变量m用来保存计算的结果,然后执行第一条运算语句,并将运算结果保存至变量m,然后执行第二条运算语句,最后输出程序m的值。
    在主函数中,首先定义两个整型变量a和b,并分别赋值为5和6,定义两个指针变量x和y,分别指向变量a和b。然后调用函数fun,调用函数传递的参数为x和y,因此,执行m=(*a+*b)*(*a+*b)=(5+6)*(5+6)=121,然后执行m+=(*a-*b)*(*a-*b)等价于m=m+(-1)*(-1)=121+1=122。因此,本题程序的输出结果为122,答案选C。

  • 第3题:

    现有如下程序段

    #include "stdio.h"

    int *fun(int *a,int *b)

    {int c;

    c=*a%*b;

    return &c;}

    main()

    {int a=5,b=19,*c;

    c=fun(&a,&b);

    printf("%d\n",++*c);}

    则程序段执行后的结果为

    A.8

    B.7

    C.6

    D.5


    正确答案:C

  • 第4题:

    现有如下程序段

    #include "stdio.h"

    main( )

    { int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};

    int i=0,j=5;

    printf("%d\n",*(&a[0][0]+2*i+j-2));}

    则程序的输出结果为

    A.21

    B.78

    C.23

    D.28


    正确答案:A
    解析:通过地址来引用二维数组,若有以下定义:int a[3][4],i,j;且当0≤i<3,0≤j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上偏移量。

  • 第5题:

    现有如下程序段 #include"stdio.h" main() { int a[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1}; int i=0,j=5; printf("%d\n",*(&a[0][0]+2*i+j-2));} 则程序的输出结果为

    A.21

    B.78

    C.23

    D.28


    正确答案:A
    解析:通过地址来引用二维数组;若有以下定义:inta[3][4],i,j;且当0≤i3,0≤j4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。