您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 模拟题 >> 正文    
  二级C语言教程章节测试8.指针 【注册男护士专用博客】          

二级C语言教程章节测试8.指针

www.nanhushi.com     佚名   不详 

  一、选择题

    (1)设有定义:int  n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是
     A)*p=*q;  B)p=q;   C)*p=&n1;   D)p=*q;

    (2)若有定义:int  x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是
     A)随机值  B)0   C)x的地址   D)p的地址

    (3) 以下定义语句中正确的是
     A) char a='A'b='B';     B) float a=b=10.0;
     C) int a=10,*b=&a;     D) float *a,b=&a;

    (4) 有以下程序 
    main()
    { int a=7,b=8,*p,*q,*r;
      p=&a;q=&b;
      r=p; p=q;q=r;
      printf("%d,%d,%d,%d\n",*p,*q,a,b);
    }
    程序运行后的输出结果是
    A) 8,7,8,7   B) 7,8,7,8   C) 8,7,7,8   D) 7,8,8,7

    (5) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
    A) scanf(“%d”,pA) ;     B) scanf(“%d”,A) ;
    C) scanf(“%d”,&pA) ;    D) scanf(“%d”,*pA) ;

    (6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
    A) p=1;    B) *q=2;    C) q=p;    D) *p=5;

    (7) 有以下程序
    void  fun(char  *a,  char  *b)
    {  a=b;    (*a)++;  }
    main ()
    { char   c1="A", c2="a", *p1, *p2;
    p1=&c1;  p2=&c2;   fun(p1,p2);
    printf(“&c&c\n”,c1,c2);
    }
    程序运行后的输出结果是
    A) Ab        B) aa        C) Aa           D) Bb

    (8) 若程序中已包含头文件stdio.h,  以下选项中,正确运用指针变量的程序段是
    A) t  *i=NULL;                  B) float  *f=NULL;
    scanf("&d",f);                  *f=10.5;
    C) char  t="m", *c=&t;          D) long   *L;
    *c=&t;                          L=‘\0’;

    (9) 有以下程序
    #inc1ude   <stdio.h>
    main()
    {  printf("%d\n", NULL);  }
    程序运行后的输出结果是
    A) 0          B) 1            C) -1          D) NULL没定义,出错

    (10) 已定义以下函数
    fun (int   *p)
    {  return   *p:  }
    该函数的返回值是
    A) 不确定的值                          B) 形参p中存放的值
    C) 形参p所指存储单元中的值     D) 形参p的地址值


    (11) 下列函数定义中,会出现编译错误的是
    A) max(int  x, int  y,int  *z)   B) int  max(int   x,y)
    { *z=x>y  ? x:y;  }             int  z ;
    z=x>y  ? x:y;
    return  z ;
    }
     C) max (int  x,int  y)          D) int  max(int  x,int  y)
    {  int   z;                     {   return(x>y?x:y) ; }
    z=x>y?x:y;  return(z);
    }

    (12) 有以下程序段
    main()
    { int  a=5,  *b,   **c;
    c=&b;   b=&a;
    ……
    }
    程序在执行了c=&b:b=&a;语句后,表达式:**c的值是
    A) 变量a的地址  B) 变量b中的值 C) 变量a中的值  D) 变量b的地址

    (13) 有以下程序
    main()
    { char a,b,c,*d;
     a=’\’;  b=‘\xbc’;
     c=‘\0xab’;  d="\017";
     print("%c%c%c\n",a,b,c,*d);
    }
    编译时出现错误,以下叙述中正确的是
    A) 程序中只有a=’\’;语句不正确 B) b=‘\xbc’;语句不正确
    C) d="\0127";语句不正确                D) a=’\’;和c=‘\0xab’;语句都不正确

    (14) 若有以下定义和语句
    #include    <stdio.h>
    int a=4,b=3,*p,*q,*w;
    p=&a;  q=&b;  w=q;  q=NULL;
    则以下选项中错误的语句是
    A) *q=0;   B) w=p;   C) *p=a;  D) *p=*w;

    (15) 有以下程序
    int *f(int *x,int *y)
    { if(*x<*y)
      return x;
     else
      return y;
    }
    main()
    { int a=7,b=8,*p,*q,*r};
    }
    执行后输出结果是
    A) 7,8,8    B) 7,8,7   C) 8,7,7   D) 8,7,8

    (16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是
    A) p=q;   B) *p=*q;  C) n=*q;  D) p=n;

    (17) 有以下程序
    void fun(char *c,int d)
    {   *c=*c+1;d=d+1;
    printf(“%c,%c,”,*c,d);
    }
    main()
    {  char a=’A’,b=’a’;
    fun(&b,a);  printf(“%c,%c\n”,a,b);
    }
    程序运行后的输出结果是
    A)B,a,B,a      B) a,B,a,B     C) A,b,A,b     D) b,B,A,b

    (18) 若有说明语句:int  a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是
    A) scanf("%d%d%d",&a,&b,d);    B) scanf("%d%d%d",&a,&b,&d);
    C) scanf("%d%d%d",a,b,d);      D) scanf("%d%d%d",a,b,*d);

    (19) 若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为
     A) 无确定值     B) a的地址     C) 512       D) 511

    (20) 若有说明:int  i, j=2,*p=&i;,则能完成i=j赋值功能的语句是
     A) i=*p;    B)  p*=*&j;  C) i=&j;   D) i=**p;


    (21) 下列程序段的输出结果是
     A) 2 1 4 3          B) 1 2 1 2          C) 1 2 3 4           D) 2 1 1 2
    void fun(int  *x, int  *y)
    {   printf(“%d  %d”, *x, *y); *x=3; *y=4;}
    main()
    {  int  x=1,y=2;
       fun(&y,&x);
       printf(“%d %d”,x, y);
    }

    (22) 下列程序的运行结果是
     A) 6  3            B) 3   6          C) 编译出错         D) 0  0
    void fun(int  *a, int  *b)
    {  int  *k;
       k=a; a=b; b=k;
    }
    main()
    {  int  a=3, b=6,  *x=&a, *y=&b;
       fun(x,y);
       printf(“%d  %d”, a, b);
    }

    (23) 有如下程序段
    int  *p,a=10,b=1
    p=&a;  a=*p+b;
    执行该程序段后,a的值为
    A) 12              B) 11              C) 10             D) 编译出错

    (24) 有以下函数
    char  fun(char *p)
    {  return  p;  }
    该函数的返回值是
    A) 无确切的值                        B) 形参p中存放的地址值 
    B) 一个临时存储单元的地址            D) 形参p自身的地址值

    (25) 请选出正确的程序段
     A) int  *p;                      B) int  *s, k;
            scanf("%d",p);                   *s=100;
            …                               …
     C) int  *s, k;                   D) int  *s, k;
            char *p, c;                      char *p, e;
            s=&k;                            s=&k;
            p=&c;                            p=&c;
            *p='a';                          s=p;
            …                               *s=1;
                                             …

    (26) 若有以下定义和语句:
           double  r=99, *p=&r;
           *p=r;
        则以下正确的叙述是
     A) 以下两处的*p含义相同,都说明给指针变量p赋值
     B) 在"double  r=99, *p=&r;"中,把r的地址赋值给了p所指的存储单元
     C) 语句"*p=r;"把变量r的值赋给指针变量p
     D) 语句"*p=r;"取变量r的值放回r中

    (27) 以下程序运行后,a的值是
     A) 4             B) 1              C) 0              D) 运行时出错,a无定值
           main()
          {  int   a,k=4,m=6,*p1=&k,*p2=&m;
             a=p1==&m;
             printf("%d\n",a);
          }

    (28) 有以下程序
    int fun(int  x,int  y,int   *cp,int  *dp)
    {  *cp=x+y;    *dp=x-y;  }
    main()
    {  int a, b, c, d;
    a=30;  b=50;
    fun(a,b,&c,&d);
        printf("%d,%d\n", c, d);
    }
    输出结果是
     A) 50,30          B) 30,J50          C) 80,-20          D) 80,20

    (29) 若有定义和语句:
    int **pp,*p,a=10,b=20;
    pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);
    则输出结果是:
    A)10,20       B)10,10       C)20,10           D)20,20

    (30) 以下程序的输出结果是
    #include
    subl(char  a,char b)    {char c; c=a;a=b;b=c;}
    sub2(char* a,char b)    {char c; c=*a;*a=b;b=c;}
    sub3(char* a,char*b)    {char c; c=*a;*a=*b;*b=c;}       { char a,b;
      a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);
      a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);
      a='A';b='B';sub1(a,b);putchar(a);putchar(b);
    }
    A) BABBAB        B) ABBBBA   C) BABABA          D) BAABBA

    (31) 若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是
    A) I= *P;        B) *P=*&J;      C) i=&j;             D) i=* *p;

    (32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确招待此功能的函数是
    A)funa(int *x,int *y)            B) funb(int x,int y)
    {int *p;                              {int t;
    *p=*x;*x=*y;*y=*p;}                   t=x;x=y;y=t;}
    C) func(int *x,int *y)             D) fund(int x,int y)
    {*x=*y;*y=*x;}                          {*x=*x+*y; *y=*x-*y; *x=*x-*y; }

  二、填空题:

    (1) 有以下程序
    void f( int y,int *x)
    {y=y+*x;  *x=*x+y;}
    main( )
    {  int x=2,y=4;
       f(y,&x);
       printf(“%d   %d\n”,x,y);
    }
    执行后输出的结果是【1】 。

    (2) 下面程序的运行结果是:   [2]   。
    void swap(int *a,int *b)
    {  int  *t;
    t=a;   a=b;  b=t;
    }
    main()
    {  int  x=3,y=5,*p=&x,*q=&y;
    swap(p,q);
    printf(“%d%d\n”,*p,*q);
    } 

    (3) 设有以下程序:
    main()
    {   int   a, b, k=4, m=6, *p1=&k, *p2=&m;
    a=pl==&m;
    b=(*p1)/(*p2)+7;
    printf(“a=%d\n”,a);
    printf(“b=%d\n”,b);
    }
    执行该程序后,a的值为【3】 ,b的值为【4】 。  
     (4) 下列程序的输出结果是 【5】 。
    void fun(int *n)
    {  while( (*n)--);
         printf(“%d”,++(*n));
    }
    main()
    {  int  a=100;
       fun(&a);
    }

    (5) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
    void func(int x,int y, [6] z) 
    {   *z=x+y;   }

    (6) 函数 void fun(float  *sn, int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。  
      
             void  fun( float *sn, int n)
             {  float  s=0.0, w, f=-1.0;
                int i=0;
                for(i=0; i<=n; i++)
                { f= [7]  * f;
                  w=f/(2*i+1);
                  s+=w;
                }
                 [8] =s;
             }

    (7) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。 
         exchange(int  *x,  int  *y)
         {  int t;
            t=*y;   *y= 【9】  ;    *x=  【10】 ;
         }

    (8) 下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。  
       int add(int x,int y,  【11】  z)
    {  【12】  =x+y;}


    答案:

    一、选择题
    1) A 2) B 3) C 4) C 5) A 6) D 7) A 8) D 9) A 10) C
    11) B 12) C 13) D 14) A 15) B 16) D 17) D 18) A 19) D 20) B
    21) A 22) B 23) B 24) B 25) C 26) D 27) C 28) C 29) D 30) A
    31) B 32) D 

    二、填空题
    (1) 8   4
    (2) 3  5
    (3) 0
    (4) 7
    (5) 0
    (6) int *
    (7) –1
    (8) *sn
    (9) *x
    (10) t
    (11) int *
    (12) *z

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目