第六章 数 组

一、选择题

1、若已定义:

      int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;

其中0<=i<=9,则对a数组元素的引用不正确的是

A) a[p-a]  B) *(&a[i])  C) p[i]  D) *(*(a+i))

2、以下程序段数组所有元素输入数据,应在下划线填入的是

    A) a+(i++) B) &a[i+1]   C) a+i   D) &a[++i]

main()

{ int a[10],i=0;

  while(i<10) scanf("%d",_);

       .

       .

}

3、 以下程序的输出结果是

     A) 3       B) 4         C) 1     D) 2

main()

{ int  a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

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

4、 以下程序的输出结果是

    A) 不确定的值   B) 3    C) 2     D) 1

main()

{ int n[2]={0},i,j,k=2;

  for(i=0;i<k;i++)

     for(j=0;i<k;j++)  n[j]=n[i]+1;

     printf("%d\n",n[k]);

}

5、以下程序的输出结果是

      A)17     B)18     C)19     D)20

main()

{  int a[]={2,4,6,8,10},y=1,x,*p;

   p=&a[1];

   for(x=0;x<3;x++) y+=*(p+x);

   printf("%d\n",y);

}

6、 以下程序的输出结果是

    A) 6      B) 8      C) 4      D) 2

main()

{  int a[]={2,4,6,8},*p=a,i;

   for(i=0;ia,4;i++) a[i]=*p++;

      printf("%d\n",a[2]);

}

7、以下程序的输出结果是

     A) 720     B) 120     C) 24     D) 6

f(int b[],int n)

{  int i,r=1;

   for(i=0;i<=n;i++) r=r*b[i];

return r;

}

main()

{  int x,a[]={2,3,4,5,6,7,8,9};

   x=f(a,3);

   printf("%d\n",x);

}

8、以下程序中若第一个printf语句输出的是194,则第二个printf语句的输出结果是

    A) 212     B) 204      C) 1a4      D) 1a6

main()

{  int a[]={1,2,3,4,5,6,7,8,9,0},*p;

   p=a;

   printf("%x\n",p);

         printf("%x\n",p+9);

}

9、以下程序的输出结果是

    A) 0987654321  B) 4321098765  C) 5678901234  D) 0987651234

fun(int *s,int n1,int n2)

{ int i,j,t;

  i=n1; j=n2;

  while(i<j)

 { t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;

    i++; j--; }

}

main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;

   fun(p,0,3);  fun(p,4,9);  fun(p,0,9);

  for(i=0;i<10;i++)  printf("%d",*(a+i));

}

10、以下程序的输出结果是

     A) 4 4     B) 2 2     C) 2 4      D) 4 6

main()

{ int a[5]={2,4,6,8,10},*p,**k;

      p=a;   k=&p;

      printf("%d",*(P++));

      printf("%d\n",**k);

}

11、 当运行以下程序时输入三行,每行都是在第一列上开始,<CR>代表Enter键;

       a<CR>

       b<CR>

       cdef<CR>

则程序的输出结果是

     A)abcdef      B)a       C)a       D)a

                     b         b         b

                     c         cd       cdef

                     d                   

                     e

                     f

#include "stdio.h"

#define  N  6

main()

{ char c[N];   int i=0;

   for(i=0;i<N;i++)  c[i]=getchar();

   for(i=0;i<N;i++)   putchar(c[i]);

}

12、 若有定义和语句:

       int c[4][5],(*cp)[5];    cp=c;

则对C数组元素的引用正确的是

    A) cp+1      B) *(cp+3)       C) *(cp+1)+3       D) *(*cp+2)

13、 若已定义:

      int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p=a[0];

则能够正确表示数组元素a[1][2]的表达式是

    A) *((*prt+1)[2])   B) *(*(p+5))   C) (*prt+1)+2   D) *(*(a+1)+2)

14、若有定义和语句:

      int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p[4],i;

      for(i=0;i<4;i++)  p[i]=a[i];

则下能够正确表示a数组元素的表达式是

    A) a[4][3]    B) p[0][0]     C) prt[2][2]     D)(*(p+1))[1]

15、 以下程序的输出结果是

     A) 23      B) 26       C) 33       D) 36

main()

{  int  aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0];

   for(i=0;i<2;i++)

   { if(i==0)   aa[i][i+1]=*P+1;

     else ++p;

     printf("%d",*p);  }

    printf("\n");

}

16、 以下程序的输出结果是

      A) 60      B) 68       C) 99       D) 108

main()

{  int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

   int (*p)[4]=a,i,j,k=0;

    for(i=0;i<3;i++)

       for(j=0;j<2;j++)

           k+=*(*(p+i)+j);

   printf("%d\n",k);

}

17、以下程序的输出结果是

      A) 1,5,9,     B) 1,4,7,      C) 3,5,7,      D) 3,6,9,

main()

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

      for(i=0;i<3;i++)   printf("%d,",x[i][2-i]);

}

18、 若有定义语句int  (*p)[M]; 其中的标识符是

    A)M个指向整型变量的指针

    B)指向M个整型变量的函数指针

    C)一个指向具有M个整型元素的一维数组指针        

    D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量 

公告通知
教学日历
疑难留言
同学你好!对本课程有哪些建议?