您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 模拟题 >> 正文    
  二级C语言教程章节测试12.用户标识符的作用域和存储类 【注册男护士专用博客】          

二级C语言教程章节测试12.用户标识符的作用域和存储类

www.nanhushi.com     佚名   不详 

一、选择题:
    (1)有以下程序
     int  a=2;
     int f(int  n)
     { static int  a=3;
       int  t=0;
       if(n%2){ static int  a=4;    t += a++;  }
       else   { static int  a=5;    t += a++;  }
       return  t+a++;
     }
     main()
     { int  s=a, i;
       for( i=0; i<3; i++)  s+=f(i);
       printf("%d\n", s);
     }
    程序运行后的输出结果是______
     A)26   B)28   C)29   D)24

    (2) 以下叙述中正确的是______
    A) 局部变量说明为static存储数,其生存期将得到延长
    B) 全局变量说明为static存储类,其作用域将被扩大
    C) 任何存储类的变量在未赋初值时,其值都是不确定的
    D) 形参可以使用的存储类说明符与局部变量完全相同

    (3) 有以下程序
    int a=2;
    int f(int *A)
    {return (*A) ++;}
    main( )
    {  int s=0;
         { int a=5;
           s+=f(&A) ;
         }
        s+=f(&A) ;
        printf(“%d\n”,s);
    }
    执行后输出结果是______
    A) 10     B) 9     C) 7     D) 8

    (4) 以下叙述中正确的是______
    A) 全局变量的作用域一定比局部变量的作用域范围大
    B)静态(static)类别变量的生存期贯穿于整个程序的运行期间
    C)函数的形参都属于全局变量
    D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值

    (5) 有以下程序
    int a=3;
    main()
    {  int s=0;
    { int a=5;  s+=a++; }
    s+=a++;printf(“%d\n”,s);
    }
    程序运行后的输出结果是______
    A) 8   B) 10   C) 7    D) 11

    (6) 以下程序的输出结果是______
    int   f()
    {   static  int  i=0;
    int  s=1;
    s+=i;  i++;
    return  s;
    }
     main()
    {   int  i,a=0;
    for(i=0;i<5;i++)  a+=f();
    printf("%d\n",a);
    }
    A) 20   B) 24   C) 25   D) 15

    (7) 在C语言中,形参的缺省存储类是______
    A) auto     B) register    C) static     D) extern

    (8) 以下程序的输出的结果是______
    int x=3;
    main()
    {   int i;
    for (i=1;i<x;i++)  incre();
    }
    ncre()
    {   staic   int  x=1;
    x*=x+1;
    printf("  %d",x);
    }
    A) 3  3      B) 2   2      C) 2   6      D) 2   5

    (9 ) 设有以下函数:
    f ( int  a)
    {   int   b=0;
    static int  c = 3;
    b++;  c++;
    return(a+b+c);
    }
    如果在下面的程序中调用该函数,则输出结果是______
    main()
    {   int  a = 2,  i;
    for(i=0;i<3;i++)  printf(“%d\n”,f(a));
    }
    A) 7    B)  7           C) 7            D) 7
    8     9       10       7
    9    11      13      7

    (10) 以下程序的输出结果是______
    int   a, b;
    void fun()
    {   a=100; b=200;  }
    main()
    {   int  a=5, b=7;
    fun();
    printf(“%d%d \n”, a,b);
    }
    A) 100200   B) 57    C) 200100   D) 75



    (11) 以下只有在使用时才为该类型变量分配内存的存储类说明是______
    A) auto和 static       B) auto和 register
    C) register和 static      D) extern和 register

    (12) 在C语言中,函数的隐含存储类别是______
    A) auto            B) static          C) extern         D) 无存储类别

    (13) 下列程序的输出结果是______
    A) 4            B) 6              C) 8             D) 10
           int b=2;
           int func(int *a)
           { b += *a; return(b);}
           main()
           { int a=2, res=2;
             res += func(&a);
             printf("%d \n",res);
           }

    (14) 以下程序的输出结果是______
    A) 6  9  9   B) 6  6  9     C) 6  15  15      D) 6  6  15
       int   d=1;
       fun(int  p)
       {   static  int  d=5;
           d+=p;
           printf("%d ",d);
           return(d);
       }
       main(  )
       {   int   a=3;  printf("%d \n",fun(a+fun(d)));   }

    (15) 以下程序运行后,输出结果是______
    A) 8,15          B) 8,16           C) 8,17           D) 8,8
           func(int  a,  int   b)
           {   static int   m=0,i=2;
               i+=m+1;
               m=i+a+b;
               return(m);
            }
            main()
           {  int   k=4,m=1,p;
              p=func(k,m);printf("%d,",p);
              p=func(k,m);printf("%d\n",p);
           }

    (16) 以下程序运行后,输出结果是______
    A) 84            B) 99             C) 95             D) 44
           int   d=1;
           fun(int p)
           {  int   d=5;
              d+=p++;
              printf("%d,d);
           }
           main()
           {   int a=3;
               fun(a);
               d+=a++;
               printf("%d\n,d);
           }

    (17) 以下叙述中不正确的是______
    A) 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。
    B) 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。
    C) 在C中,外部变量的隐含类别是自动存储类别。
    D) 在C中,函数形参可以说明为register变量。

    (18) 下面程序的输出是______
    int w=3;
    main()
    { int w=10;  printf("%d\n",fun(5)*w);  }
    fun(int k)
    { if(k==0) return w;
    return(fun(k-1)*k);   }
    A)360        B)3600        C)1080        D)1200

    (19) 下列程序执行后输出的结果是______
    #include <stdio.h>
    f(int a)
    {  int b=0;        static c=3:
    a=c+ +,b+ +;
    return (a);     }
    main( )
    {  int a=2,i,k;
    for(i=0;i〈2;i=+ +〉     k=f(a+ +);
    printf("%d\n",k);     }

    (20) 下列程序执行后输出的结果是______
    int d=1;
    fun (int q)
    { int d=5;
    d + =p + +;   printf("%d".d);     }
    main( )
    { int a=3;
    fun(a);
    d + = a + +;     printf("%d\n",d);     }
    A) 8   4       B) 9   6         C) 9   4         D) 8    5

    (21) 下面程序的输出是______
    A) 3             B) 4              C) 6              D) 9
    fun3(int x)
    static int a=3;
    a+=x;
    return(a);}
    main()
    { int k=2, m=1, n;
    n=fun3(k);
    n=fun3(m);
    printf("%d\n",n);}

    (22) 下面程序的输出是______
    A) 1             B) 2              C) 7              D) 10
    int m=13;
    int fun2(int x, int y)
    { int m=3;
    return(x*y-m);
    }
    main()
    { int a=7, b=5;
    printf("%d\n",fun2(a,b)/m);}

    (23) 请读程序:
    #include<stdio.h>
    void fun( int *s)
    { static int j=0;
    do
    s[j]+=s[j+1];
    while(++j<2);
    }
    main()
    { int k, a[10]={1,2,3,4,5};
    for(k=1; k<3; k++) fun(a);
    for(k=0; k<5; k++) printf("%d", a[k]);
    }
    上面程序的输出结果是______
    A) 34756         B) 23445          C) 35743          D) 12345

    (24) 以下程序的输出结果是______
    # include <stdio.h>
    main()
    { int k=4,m=1,p;
        p=func(k,m);  printf("%d,",p);  p=func(k,m);  printf("%d\n",p);}
    func(a,b)
    int a,b;
    { static int m=0,i=2;
     i+=m+1;  m=i+a+b;   return(m);  }
     A) 8,17       B) 8,16      C) 8,20     D) 8,8


    二、填空题:
    (1)以下程序运行后的输出结果是 【1】
    fun(int  a)
    {
       int b=0;static  int c=3;
       b++;   c++;
       return  (a+b+c);
    }
    main()
    {
       int i,a=5;
       for(i=0;i<3;i++)
          printf("%d %d  ",i,fun(a));
       printf("\n");
    }

    (2) 以下程序运行后的输出结果是 【2】
    int   a=5;
    fun(int  b)
    {  static   int  a=10;
    a+=b++;
    printf("%d",a);
    }
    main()
    {  int  c=20;
    fun(c);
    a+=c++;
    printf("%d\n",a);
    }

    (3) 以下程序输出的最后一个值是【3】 。
    int  ff(int  n)
    {  static  int  f=l;
    f=f*n;
    return  f;
    }
    main()
    {   int   i;
    for(I=1;I<=5;I++  printf(“%d\n”,ff(i));
    }

    (4) 以下程序的输出结果是 【4】  。
    void  fun()
    {    static   int   a=0;
    a+=2;    printf(“%d”,a);
    }
    main()
    {  int   cc;
    for(cc=1;cc<4;cc++) fun()
    printf(“\n”);
    }

    (5) 以下程序的运行结果是  【5】    
          #include <stdio.h>
          main()
          {  int  k=4, m=1, p;
             p=func(k,m); printf("%d,",p);
             p=func(k,m); printf("%d \n",p);
          }
          func(int  a, int  b)
          {  static  int m=0, i=2;
             i+=m+1;
             m=i+a+b;
             return m;
          }

    (6) 以下程序的输出结果是【6】 。
        #include    
        int   fun(int   x,int  y)
        { static  int   m=0,i=2;
          i+=m+1;
          m=i+x+y;
          return  m
        }
        main()
        { int   j=4,m=1,k;
          k=fun(j,m);        printf("%d,",k);
          k=fun(j,m);        printf("%d\n",k);
        }

    (7) 下面程序的输出是【7】 。
    #define MAX 5
    int a[MAX],k;
    main()
    { fun1();fun3(); fun2();  fun3();
    printf("\n");  }
    fun1()
    { for(k=0;k<MAX;k++) a[k]=k+k; }
    fun2()
    { int a[MAX],k;
    for(k=0;k<5;k++)  a[k]=k; }
    fun3()
    { int k;
    for(k=0;k<MAX;k++) printf("%d",*(a+k)): }

    (8) 阅读下列程序:
                  #include<stdio.h>
                  #define MAX_COUNT 4
                  void fun();
                  main()
                  {  int count;
                      for (count=1; count<=MAX_COUNT; count++)  fun();
                  }
                  void fun()
                  {  static int i;
                     i+=2;  printf("%d",i);
                  }
    上述程序的输出结果是 【8】  。
    


    答案:
    一、选择题:
    1) C 2) A 3) C 4) B 5) A 6) D 7) A 8) C 9) A 10) B
    11) B 12) C 13) B 14) C 15) C 16) A 17) C 18) B 19) D 20) A
    21) C 22) B 23) C 24) A 25)  26)  27)  28)  29)  30) 
    
     二、填空题:
    (1) 0   10   1  11   2  12
    (2) 30 25
    (3) 120
    (4) 246
    (5) 8,17
    (6) 8,17
    (7) o246802468
    (8) 2468

 

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

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

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