打印本文 打印本文  关闭窗口 关闭窗口  
二级C语言教程章节测试9.一维数组与指针(一)
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:07:51  文章录入:杜斌  责任编辑:杜斌

    一、选择题

    (1)有以下程序
     main()
     { int  a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;
       printf("%d\n", *p + *q);
     }
    程序运行后的输出结果是_____。
     A)16   B)10   C)8   D)6

    (2)有以下程序
     main()
     { int  a[]={2,4,6,8,10}, y=0, x, *p;
       p=&a[1];
       for(x= 1; x<3; x++)  y += p[x];
       printf("%d\n",y);
     }
    程序运行后的输出结果是_____。
     A)10   B)11   C)14   D)15

    (3)有以下程序
     void sort(int  a[], int  n)
     { int  i, j ,t;
       for (i=0; i<n-1; i++)
         for (j=i+1; j<n; j++)
           if (a[i]<a[j]){  t=a[i];  a[i]=a[j];  a[j]=t;  }
     }
     main()
     { int  aa[10]={1,2,3,4,5,6,7,8,9,10}, i;
       sort(aa+2,  5);
       for (i=0; i<10; i++) printf("%d,",aa[i]);
       printf("\n");
     }
    程序运行后的输出结果是_____。
     A)1,2,3,4,5,6,7,8,9,10,   B)1,2,7,6,3,4,5,8,9,10,
     C)1,2,7,6,5,4,3,8,9,10,   D)1,2,9,8,7,6,5,4,3,10,

    (4)有以下程序
     void sum(int  a[])
     {  a[0] = a[-1]+a[1];  }
     main()
     { int  a[10]={1,2,3,4,5,6,7,8,9,10};
       sum(&a[2]);
       printf("%d\n", a[2]);
     }
    程序运行后的输出结果是_____。
     A)6   B)7   C)5   D)8

    (5)有以下程序
     void swap1(int  c0[], int  c1[])
     { int  t ;
       t=c0[0];    c0[0]=c1[0];    c1[0]=t;
     }
     void swap2(int  *c0, int  *c1)
     { int  t;
       t=*c0;    *c0=*c1;    *c1=t;
     }
     main()
     { int  a[2]={3,5},  b[2]={3,5};
       swap1(a, a+1);    swap2(&b[0], &b[1]);
       printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
     }
    程序运行后的输出结果是_____。
     A)3 5 5 3  B)5 3 3 5  C)3 5 3 5  D)5 3 5 3

    (6)有以下程序
    main()
    {
       int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
       while(i++<7)  if(p[i]%2)   j+=p[i];
       printf("%d\n",j);
    }
    程序运行后的输出结果是_____。    
    A)42 B)45 C)56 D)60

    (7)有以下程序
    void  f(int  *x,int  *y)
    {     int  t;
        t=*x;*x=*y;*y=t;
    }
    main()
    {   int  a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
        p=a;q=&a[7];
        while(p<q)
       {
       f(p,q);
       p++;
       q--;
       }
       for(i=0;i<8;i++)
          printf("%d,",a[i]);
    }
    程序运行后的输出结果是                      
    A)8,2,3,4,5,6,7,1,
    B)5,6,7,8,1,2,3,4,
    C)1,2,3,4,5,6,7,8,
    D)8,7,6,5,4,3,2,1,

    (8)以下叙述中错误的是 _____。   
    A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
    B)数组名代表的是数组所占存储区的首地址,其值不可改变
    C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
    D)可以通过赋初值的方式确定数组元素的个数

    (9)有以下程序
    #define  N  20
    fun(int  a[],int  n,int m)
    {   int i,j;
        for(i=m;i>=n;i--)
           a[i+1]=a[i];
    }
    main()
    {
       int i,a[N]={1,2,3,4,5,6,7,8,9,10};
       fun(a,2,9);
       for(i=0;i<5;i++)
         printf("%d",a[i]);
    }
    程序运行后的输出结果是_____。    
    A)10234 B)12344 C)12334 D)12234


    (10)有以下程序
    prt(int  *m,int  n)
    {
       int i;
       for(i=0;i<n;i++)
           m[i]++;
    }
    main()
    {
       int a[]={1,2,3,4,5},i;
       prt(a,5);
       for(i=0;i<5;i++)
          printf("%d,",a[i]);
    }
    程序运行后的输出结果是_____。     
    A)1,2,3,4,5,   B)2,3,4,5,6,
    C)3,4,5,6,7,   D)2,3,4,5,1,

    (11)有以下程序
    main()
    {   int  a[]={1,2,3,4,5,6,7,8,9,0},*p;
        for(p=a;p<a+10;p++)
          printf("%d,",*p);
    }
    程序运行后的输出结果是_____。                
    A)1,2,3,4,5,6,7,8,9,0,
    B)2,3,4,5,6,7,8,9,10,1,
    C)0,1,2,3,4,5,6,7,8,9,
    D)1,1,1,1,1,1,1,1,1,,1,

    (12) 有以下程序
    int f(int a)
    { return a%2; }
    main()
    { int s[8]={1,3,5,2,4,6},i,d=0;
      for (i=0;f(s[i]);i++) d+=s[i];
      printf("%d\n",d);
    }
    程序运行后的输出结果是_____。
    A) 9    B) 11    C) 19    D) 21

    (13) 设有定义语句
    int x[6]={2,4,6,8,5,7},*p=x,i;
    要求依次输出x数组6个元素中的值,不能完成此操作的语句是_____。
    A) for(i=0;i<6;i++) printf("%2d",*(p++));
    B) for(i=0;i<6;i++) printf("%2d",*(p+i));
    C) for(i=0;i<6;i++) printf("%2d",*p++);
    D) for(i=0;i<6;i++) printf("%2d",(*p)++);

    (14) 有以下程序
    #include <stdio.h>
    main()
    {int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
      *q=*(p+5);
       printf("%d %d\n",*p,*q);
    }
    程序运行后的输出结果是_____。
    A) 运行后报错  B) 6 6     C) 6 11   D) 5 10

    (15) 已有定义:int i,a[10],*p;,则合法的赋值语句是_____。
    A) p=100;    B) p=a[5];   C) p=a[2]+2;  D) p=a+2;

    (16) 有以下程序
    main()
    { int x[]={1,3,5,7,2,4,6,0},i,j,k;
    for(i=0;i<3;i++)
      for (j=2;j>=i;j--)
        if(x[j+1]>x[j]){  k=x[j];x[j]=x[j+1];x[j+1]=k;}
      for(i=0;i<3;i++)
        for(j=4;j<7-i;j++)
         if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
      for (i=0;i<3;i++)
        for(j=4;j<7-i;j++)
         if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
      for (i=0;i<8;i++) printf("%d",x[i]);
      printf("\n");
    }
    程序运行后的输出结果是_____。
    A) 75310246   B) 01234567    C) 76310462   D) 13570246

    (17) 有以下程序段
    int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
    b=p[5];
    b中的值是_____。
    A) 5   B) 6   C) 8   D) 9

    (18) 有以下程序
    void swap1(int c[])
    { int t;
      t=c[0];c[0]=c[1];c[1]=t;
    }
    void swap2(int c0,int c1)
    {  int t;
       t=c0;c0=c1;c1=t;
    }
    main( )
    { int a[2]={3,5},b[2]={3,5};
      swap1(A) ;  swap2(b[0],b[1]);
      printf(“%d  %d  %d  %d\n”,a[0],a[1],b[0],b[1]);
    }
    其输出结果是_____。
    A) 5 3 5 3   B)  5 3 3 5  C) 3 5 3 5   D) 3 5 5 3

    (19)  有以下程序
    void sum(int *A)
    { a[0]=a[1];}
    main( )
    {  int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
       for(i=2;i>=0;i--) &nb
       sp; sum(&aa[i]);
       printf(“%d\n”,aa[0]);
    }
    执行后的输出结果是_____。
    A) 4     B) 3     C) 2     D) 1

    (20) 有以下程序
    void sort(int a[],int n)
    {  int i,j,t;
       for(i=0;i<n-1;i+=2)
          for(j=i+2;j<n;j+=2)
              if(a[i]<a[j])  {  t=a[i];a[i]=a[j];a[j]=t;}
    }
    main()
    { int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
      sort(aa,10);
      for(i=0;i<10;i++)    printf(“%d”,aa[i]);
      printf(“\n”);
    }
    其输出结果是_____。
    A) 1,2,3,4,5,6,7,8,9,10,     B) 10,9,8,7,6,5,4,3,2,1,
    C) 9,2,7,4,5,6,3,8,1,10,    D) 1,10,3,8,5,6,7,4,9,2,


    (21) 以下能正确定义一维数组的选项是_____。
    A) int   num [];           B) #define  N 100
                                     Int  num [N];
    C) int  num[0..100];          D) int  N=100;
    int   num[N];

    (22) 有以下程序
    main()
    { int p[7]={11,13,14,15,16,17,18},i=0,k=0;
     while(i<7&&p[i]%2){k=k+p[i];i++;}
     printf("%d\n",k);
    }
    执行后输出结果是_____。
    A) 58 B) 56 C) 45 D) 24

    (23) 有以下程序
    main()
    { int x[8]={8,7,6,5,0,0},*s;
     s=x+3
     printf("%d\n",s[2]);
    }
    执行后输出结果是_____。
    A) 随机值   B) 0   C) 5   D) 6

    (24) 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
    #define  N 10
    void   arrin(int x[N])
    { int i=0;
     while(i<N)
      scanf("%d",      );
    }
    在下划线处应填入的是_____。
    A) x+i   B)&x[i+1]  C)x+(i++)  D)&x[++i]

    (25) 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
    void sort(int a[],int n)
    { int  i,j,t;
    for(i=0;i<n-1;i++
    for(j=i+1,j<n;j++)
    if(a[i]<a[j])  {t=a[i];a[i]=a[j];a[j]=t;}
    }
    main()
    { int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
    sort(&aa[3],5);
    for(i=o;i<10;i++)  print(“%d,”,aa[i]);
    printf(‘\n”);
    }
    程序运行后的输出结果是_____。
    A)1,2,3,4,5,6,7,8,9,10      B) 10,9,8,7,6,5,4,3,2,1,
    C) 1,2,3,8,7.6.5.4.9,10      D) 1,2,10,9,8,7,6,5,4,3

    (26) 以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
    void reverse(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  b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
      reverse(b,8);
      for(i=6;i<10;i++) s+=b[i];
      printf(“%d\n”,s);
    }
    程序运行后的输出结果是_____。
    A) 22      B) 10   C) 34   D) 30

    (27) 以下程序调用findmax函数返回数组中的最大值
    findmax(int  *a,int  n)
    { int   *p,*s;
    for(p=a,s=a;  p-a<n;  p++)
    if (             )  s=p;
    return(*s);
    }
    main()
    { int  x[5]={12,21,13,6,18};
    printf("%d\n",findmax(x,5));
    }
    在下划线处应填入的是_____。
    A) p>s         B) *p>*s       C) a[p]>a[s]    D) p-a>p-s

    (28) 若有定义:int  aa[ 8];。则以下表达式中不能代表数组元aa[1]的地址的是_____。
    A) &aa[0]+1    B) &aa[1]       C) &aa[0]++   D) aa+1

    (29) 以下程序的输出结果是_____。
    f(int  b[],int  m,int  n)
    { int  i,s=0;
    for(i=m;i<n;i=i+2)  s=s+b[i];
    return  s;
    }
    main()
    {int  x,a[]={1,2,3,4,5,6,7,8,9};
    x=f(a,3,7);
    printf("%d\n",x);
    }
    A) 10        B) 18        C) 8         D) 15

    (30) 假定int类型变量占用两个字节,其有定义:int  x[10]={0,2,4};,则数组x在内存中所占字节数是_____。
    A) 3      B) 6         C) 10       D) 20


    (31) 以下程序的输出结果是_____。
    main()
    {   int   i, a[10];
    for(i=9;i>=0;i--)  a[i]=10-i;
    printf(“%d%d%d”,a[2],a[5],a[8]);
    }
    A) 258      B) 741   C) 852          D) 369

    (32) 下列程序的输出结果是_____。
    A) 非法           B)a[4]的地址       C)5              D)3
    main()
    {   char  a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
        printf(“%d”,*--p);
    }

    (33) 下面程序的输出结果是_____。
    A) 0       B) 1           C) 10        D) 9
    main()
    {  int  a[ ]={1,2,3,4,5,6,7,8,9,0,},*p;
       p=a;
       printf(“%d\n”,*p+9);
    }

    (34) 当调用函数时,实参是一个数组名,则向函数传送的是_____。
    A) 数组的长度               B) 数组的首地址
    C) 数组每一个元素的地址             D) 数组每个元素中的值

    (35) 以下程序的输出结果是_____。
    A) 20      B) 21    C) 22    D)23
    main()
    {  int  i,  k,  a[10],  p[3];
       k=5;
       for (i=0;i<10;i++)   a[i ]=i;
       for (i=0;i<3;i++)    p[i ]=a[i *(i+1)];
       for (i=0;i<3;i++)    k+=p[i] *2;
       printf(“%d\n”,k);
    }

    (36) 以下函数返回a所指数组中最小的值所在的下标值
    fun(int   *a,  int  n)
    {   int   i,j=0,p;
    p=j;
    for(i=j;i<n;i++)
    if(a[i]<a[p])__________;
    return(p);
    }
    在下划线处应填入的是_____。
    A) i=p             B) a[p]=a[i]       C) p=j            D) p=i

    (37) 有如下说明
    int  a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
    则数值为9的表达式是_____。
    A) *P+9            B) *(P+8)          C) *P+=9          D) P+8

    (38) 有如下程序
    main0
    {   int  n[5]={0,0,0},i,k=2;
    for(i=0;i<k;i++)  n[i]=n[i]+1;
    printf(“%d\n”,n[k]);
    }
    该程序的输出结果是_____。
    A) 不确定的值      B) 2               C) 1              D) 0

    (39) 执行下面的程序段后,变量k中的值为_____。
         A) 不定值     B) 33               C) 30            D) 10
         int  k=3, s[2];
         s[0]=k;  k=s[1]*10;

    (40) 若已定义:
         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[10]


    (41) 下列程序执行后的输出结果是_____。
         A) 6          B) 7                C) 8             D) 9
           void func(int *a,int b[])
           { b[0]=*a+6; }
           main()
           { int a,b[5];
             a=0;       b[0]=3;
             func(&a,b);  printf("%d \n,b[0]);
           }

    (42) 若有以下调用语句,则不正确的fun函数的首部是_____。
         A) void fun(int m, int x[])      B) void fun(int s, int h[41])
         C) void fun(int p, int *s)       D) void fun(int n, int a)
            main()
            {   …
                int a[50],n;
                …
                fun(n, &a[9]);
                …
            }

    (43) 以下程序的输出结果是_____。
       A)6      B) 6789      C) '6'      D) 789
         main(  )
         {    char  a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
                 int  i;
                 i=8;
                 p=a+I;
                 printf("%s\n",p-3);
         }

    (44) 以下程序的运行结果是_____。
       A) 运行后报错   B) 6  6     C) 6  12       D) 5  5
         #include   "stdio.h"
         main(  )
         {
                 int  a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};
                 int  *p=a+5, *q=NULL;
                 * q=*(p+5);
                 printf("%d  %d \n",*p,*q);
         }

    (45) 下面程序把数组元素中的最大值放入a[0]中。则在if 语句中的条件表达式应该是_____。
       A) p>a     B) *p>a[0]    C) *p>*a[0]     D) *p[0]> *a[0]
        main(  )
        {       int   a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I;
                for(i=o;i<10;i++,p++)
                      if(________) *a=*p;
                printf("%d",*a);
        }

    (46) 以下程序运行后,输出结果是_____。
    A) 10000         B) 10010          C) 00110          D) 10100
            main()
            {  int    y=18,i=0,j,a[8];
               do
               {  a[i]=y%2; i++
                  y=y/2;
             }  while(y>=1)
             for(j=i-1;j>=0;j--) printf("%d",a[j];
             printf("\n");
             }

    (47) 设有如下定义:
    int arr[]={6,7,8,9,10};
    int * ptr;
    则下列程序段的输出结果为_____。
    ptr=arr;
    * (ptr+2)+=2;
    printf ("%d,%d\n",*ptr,*(ptr+2));
    A) 8,10           B) 6,8             C) 7,9              D) 6,10

    (48) 以下程序的输出结果是_____。
    main()
    {  int   i,k,a[10],p[3]:
    K=5;
    for (i=0;i<10;i++)  a[i]=i;
    for (i=0;i<3;i++)  p[i]=a[i*(i+1)];
    for (i=0;i<3;i++)  k+=p[i]*2;
    printf("%d\n",k);
    }
    A) 20           B) 21              C) 22             D)23

    (49) 若有以下定义和语句:
    int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
    则不能表示a数组元素的表达式是_____。
    A) *p           B) a[10]        C) *a         D) a[p-a]

    (50) 若有以下的定义:
    int a[]={1,2,3,4,5,6,7,88,9,10}, *p=a;
    则值为3的表式是_____。
    A) p+=2, *(p++)    B) p+=2,*++p      C) p+=3, *kp++   D) p+=2,++*p


    (51) 若有以下说明:
            int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
            则数值为6的表达式是_____。
    A) *p+6          B) *(p+6)        C) *p+=5             D) p+5

    (52) 下面程序输出数组中的最大值,由s指针指向该元素.
    main()
    { int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
    flr(p=a, s=a; p-a<10; p++)
    if(---?---)s=p;
    printf("The max:%d",*s):
    }
    则在if语句中的判断表达式应该是_____。
    A) p>s            B) *p>*s         C) a[p]>a[s]       D) p-a>p-s

    (53) 要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列放在到中。不能正确执行的函数是_____。
    A)funa(int *a,int n,int x )            B)funb(int *a,int n,int x)
    { *a=x;                               {int k;
    while(a[n]!=x)n--;                    for(k=1;k<=n;k++)
    return n;                             if(a[k]==x)return k;
    }                                     return 0; }
    C)func(int a[],int n,int x )            D) fund(int a[],int n,int x )
    { int *k;                             { int k=0;
    a[0]=x;k=a+n;                           do
    while(*k!=x) k--;                       k++;
    return k-n;                             while((k<n+1)&&(a[k]!=x));
    }                                       if(a[k]==x)return k; else return 0; }

    (54) 下列程序的输出结果是_____。
    main( )
    { int a[5]={2,4,6,8,10},*P,* *k;
    p=a;       k=&p;
    printf("%d",*(p++));       printf("%d\n",* *k);     }
    A) 4  4       B) 2  2         C) 2  4        D) 4  6

    (55) 阅读下列程序:
    main( )
    { int n[3],i,j,k;
    for(i=0;i〈3;i++〉   n[i]=0;
    k=2;
    for (i=0;i〈k;i++〉
    for (j=0;j〈k;j++〉   n[j]=n[i]+1;
    printf("%d\n",n[1]);     }
    下述程序运行后输出结果是_____。
    A) 2          B) 1           C) 0           D) 3

    (56) 执行以下程序后,y的值是_____。
    main ( )
    { int a[]={2,4,6,8,10};
    int y=1,x,*p;
    p=&a[1];
    for(x=0;x<3;x++)  y + = * (p + x);
    printf("%d\n",y);     }
    A) 17         B) 18            C) 19          D) 20

    (57) 下面程序的输出是_____。
    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));}

    (58) 请读程序:
    #include<stdio.h>
    f(in b[], int n)
    { int i, r;
    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);
    }
    上面程序的输出结果是_____。
    A) 720           B) 120            C) 24             D) 6

    (59) 请选出以下程序的输出结果
    #include<stdio.h>
    fun(s, n1, n2)
    int *s, n1, 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));
    printf("\n");
    }
    A) 0 9 8 7 6 5 4 3 2 1         B) 4 3 2 1 0 9 8 7 6 5
    C) 5 6 7 8 9 0 1 2 3 4         D) 0 9 8 7 6 5 1 2 3 4

    (60) 以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。
    # include <stdio.h>
    findmax ( s , t , k )
    int  *s , t , *k;
    {  int p;  for(p=0,*k=p;p<t;p + + )
               if ( s[p] > s[*k] )_________; }
    main()
    {  int  a[10] , i , k ;
       for ( i=0 ; i<10 ; i + + )  scanf("%d",&a[i]);
       findmax ( a,10,&k );
       printf  ( "%d,%d\n" , k , a[k] );  }
     A) k=p      B) *k=p-s     C) k=p-s     D) *k=p 

    


    二、填空题:

    (1) 以下程序运行后的输出结果是 【1】  。
    main()
    { int p[7]={11,13,14,15,16,17,18};
      int i=0,j=0;
      while(i<7 && p[i]%2==1) j+=p[i++];
      printf("%d\n",j);
    }

    (2) 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。
    main()
    { int i,a[20],sum,count;
       sum=count=0;
       for(i=0;i<20;i++)  scanf("%d", 【2】  ); 
       fro(i=0;i<20;i++)
       { if(a>0)
         { count++;
           sum+=  【3】  ; 
         }
      }
      printf("sum=%d,count=%d\n",sum,count);

    (3) 以下程序运行后的输出结果是 【4】 
    main()
    {  int   i, n[]={0,0,0,0,0};
    for(i=1;i<=4;i++)
    {   n[i]=n[i-1]*2+1;
    printf(“%d”,n[i]);
    }
    }

    (4) 若已定义:int   a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。
    fun( int  a[ ])
    {   int   i;
    for(i=1; i<=10; i++)  【5】=i;     
    for(i=0; i<5; i++)  【6】=a[i];      
    }

    (5) 以下程序的输出结果是 【7】 。
    main()
    {  int  arr[ ]={30,25,20,15,10,5},  *p=arr;
       p++;
       printf(“%d\n”,*(p+3));
    }

    (6) 若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 [8] 。
    int   w[10]={23,54,10,33,47,98,72,80,61}, *p=w;

    (7) 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
        main(  )
        {    float  x[1000],   sum=0.0,  ave,  a;
             int    n=0, i;
             printf("Enter mark:\n");scanf("%f",&a);
             while(a>=0.0&& n<1000)
             {    sum+  【9】   ;     x[n]=  【10】  ;      
                  n++;           scanf("%f",&a);
             }
          ave=  【11】   ;
          printf("Output:\n");
          printf("ave=%f\n",ave);
      for (I=0;I<n;I++)
          if   【12】   printf (“%f\n”,x[I]);      
         }

    (8) 下面程序输出的结果是  【13】  
         #define   MAX    3
         int   a  [MAX];
         main()
         {  fun1(  );   fun2( a );   printf("\n");}
         fun1( )
         {  int  k, t=0;
            for (k=0;  k<MAX; K++,t++) a[k]=t+t;
         }
         fun2(int  b[])
         { int   k;
             for(k=0; k<NAX;  k++) printf("%d", *(b+K));
         }

    (9) 以下程序输出的是  【14】    
         main(  )
         {  int  a[10]={19,23,44,17,37,28,49,36},  *p;
            p=a;
            printf("%d\n",(p+=3)[3]);
         }

    (10) 以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数, 累加的和值放入x所指的存储单元中,请填空.
         fun(int b[ ],int n, int  *x)
         {  int   k, r=0;
            for(k=0;k<n;k++) r=  【15】    
             【16】  =r;       


    (11) 若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【17】 。
    int a[10]={19,23,44,17,37,28,49,36},*p;
    p=a;

    (12) 下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。
    fun(int x,int b[])
    { int k=0,r;
    do
    { r=x% 【18】;  
    b[k++]=r;
    x/=【19】; } while(x); } 

    (13) 下面程序通过函数average计算数组中各元素的平均值,请填空.
    float average(int * pa,int n)
    { int i;
    float avg=0.0;
    for(i=0;i<n;i++) avg=avg+【20】;
    avg=【21】; 
    return avg;   }
    main()
    { int i,a[5]={2,4,6,8,10};
    float mean;
    mean=average(a,5); printf("mean=%f\n",mean);}

    (14) 下面程序的输出是 【22】 。
    main()
    { int a[]={ 2,4,6}, *prt=&a[0], x=8,y,z;
    for(y=0; y<3; y++)
    z=(*(prt+y)<x)? *(ptr+y):x;
    printf("%d\n", z);}

    (15) 下面程序的输出是 【23】 。
    main()
    { int arr[10],i,k=0;
    for( i=0; i<10; i++)
    arr[i]=i;
    for( i=1; i<4; i++)
    k+=arr[i]=i;
    printf( '%d\n", k);}

    (16) 下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
    findmax( int s[], int t)
    { int k, p;
    for( p=0, k=p; p<t; p++)
    if( s[p]>s[k]) 【24】 。 
    return k;
     }

    (17) 以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。
              #include <stdio.h>
              #include <ctype.h>
              main( )
              { int num[26],i; char c;
                  for(i=0; i<26; i++) num[i]=0;
                  while(   【25】   !='#')    /*统计从终端输入的大写字母个数*/  
                       if( isupper(c))  num[c-65]+=1;
                  for(i=0; i<26; i++)       /*输出大写字母和该字母的个数*/
                  if(num[i]) printf("%c:%d\n,i  【26】  , num[i]);  
              }

    (18) 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。 
    #include <stdio.h>
    main()
    { int i,a[10],*p=a,sum=0;
      printf("Enter 10 num:\n");
     for(i=0;i<10;i + + ) scanf("%d",&a[i]);
     for(i=0;i<10;i + + )
      if(isprime(*(p+ 【27】 )) = = 1){ printf("%d",*(a+i)); sum+=*(a+i); }
    printf("\nThe sum=%d\n",sum); }
    isprime(x)
    int x;
    { int i; for(i=2;i<=x/2;i + + )
      if(x%i = = 0) return (0);  【28】 ; }


    答案:

    一、选择题
    1) B 2) C 3) C 4) A 5) D 6) B 7)  D 8) C 9) C 10) B
    11)  A 12) A 13) D 14) A 15) D 16) A 17) D 18) B 19) A 20) C
    21) B 22) D 23) B 24) C 25) C 26) A 27) B 28) C 29) A 30) D
    31) C 32) C 33) C 34) B 35) B 36) D 37) B 38) D 39) A 40) D
    41) A 42) C 43) B 44) A 45) B 46) B 47) D 48) B 49) B 50) A
    51) C 52) B 53) C 54) C 55) D 56) C 57) A 58) B 59) C 60) D    

     二、填空题  
(1)24  (2)&a[i]  (3)a[i]  (4)  1 3 7 15  (5)a[i-1]  (6)a[9-i]  (7)10  (8)p[5]  (9)=a  (10)a  (11)sum/n  (12)  x[i]<ave  (13)024  (14)49  (15)r+b[k]或b[k]或*(b+k)+r  (16)*x  (17)p=p+7  (18)2  (19)2  (20)*(pa+i)或 pa[i]  (21)avg/n 或avg/(float)n 或 avg/(double)n  (22)6  (23)12  (24)k=p  (25)(c=getchar())  (26)+65   或  +'A'  (27)I  (28)return 1
打印本文 打印本文  关闭窗口 关闭窗口