二級(jí)C語言教程章節(jié)測試12.用戶標(biāo)識(shí)符的作用域和存儲(chǔ)類

字號(hào):

一、選擇題:
     (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);
     }
     程序運(yùn)行后的輸出結(jié)果是______
     A)26 B)28 C)29 D)24
     (2) 以下敘述中正確的是______
     A) 局部變量說明為static存儲(chǔ)數(shù),其生存期將得到延長
     B) 全局變量說明為static存儲(chǔ)類,其作用域?qū)⒈粩U(kuò)大
     C) 任何存儲(chǔ)類的變量在未賦初值時(shí),其值都是不確定的
     D) 形參可以使用的存儲(chǔ)類說明符與局部變量完全相同
     (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);
     }
     執(zhí)行后輸出結(jié)果是______
     A) 10 B) 9 C) 7 D) 8
     (4) 以下敘述中正確的是______
     A) 全局變量的作用域一定比局部變量的作用域范圍大
     B)靜態(tài)(static)類別變量的生存期貫穿于整個(gè)程序的運(yùn)行期間
     C)函數(shù)的形參都屬于全局變量
     D)未在定義語句中賦初值的auto變量和static變量的初值都是隨機(jī)值
     (5) 有以下程序
     int a=3;
     main()
     { int s=0;
     { int a=5; s+=a++; }
     s+=a++;printf(“%d\n”,s);
     }
     程序運(yùn)行后的輸出結(jié)果是______
     A) 8 B) 10 C) 7 D) 11
     (6) 以下程序的輸出結(jié)果是______
     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語言中,形參的缺省存儲(chǔ)類是______
     A) auto B) register C) static D) extern
     (8) 以下程序的輸出的結(jié)果是______
     int x=3;
     main()
     { int i;
     for (i=1;i     }
     ncre()
     { staic int x=1;
     x*=x+1;
     printf(" %d",x);
     }
     A) 3 3 B) 2 2 C) 2 6 D) 2 5
     (9 ) 設(shè)有以下函數(shù):
     f ( int a)
     { int b=0;
     static int c = 3;
     b++; c++;
     return(a+b+c);
     }
     如果在下面的程序中調(diào)用該函數(shù),則輸出結(jié)果是______
     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) 以下程序的輸出結(jié)果是______
     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) 以下只有在使用時(shí)才為該類型變量分配內(nèi)存的存儲(chǔ)類說明是______
     A) auto和 static B) auto和 register
     C) register和 static D) extern和 register
     (12) 在C語言中,函數(shù)的隱含存儲(chǔ)類別是______
     A) auto B) static C) extern D) 無存儲(chǔ)類別
     (13) 下列程序的輸出結(jié)果是______
     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) 以下程序的輸出結(jié)果是______
     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) 以下程序運(yùn)行后,輸出結(jié)果是______
     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) 以下程序運(yùn)行后,輸出結(jié)果是______
     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中,函數(shù)中的自動(dòng)變量可以賦初值,每調(diào)用一次,賦一次初值。
     B) 在C中,在調(diào)用函數(shù)時(shí),實(shí)在參數(shù)和對(duì)應(yīng)形參在類型上只需賦值兼容。
     C) 在C中,外部變量的隱含類別是自動(dòng)存儲(chǔ)類別。
     D) 在C中,函數(shù)形參可以說明為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) 下列程序執(zhí)行后輸出的結(jié)果是______
     #include
     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) 下列程序執(zhí)行后輸出的結(jié)果是______
     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) 請(qǐng)讀程序:
     #include
     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]);
     }
     上面程序的輸出結(jié)果是______
     A) 34756 B) 23445 C) 35743 D) 12345
     (24) 以下程序的輸出結(jié)果是______
     # include
     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)以下程序運(yùn)行后的輸出結(jié)果是 【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) 以下程序運(yùn)行后的輸出結(jié)果是 【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) 以下程序輸出的最后一個(gè)值是【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) 以下程序的輸出結(jié)果是 【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) 以下程序的運(yùn)行結(jié)果是 【5】
     #include
     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) 以下程序的輸出結(jié)果是【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     fun2()
     { int a[MAX],k;
     for(k=0;k<5;k++) a[k]=k; }
     fun3()
     { int k;
     for(k=0;k     (8) 閱讀下列程序:
     #include
     #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);
     }
     上述程序的輸出結(jié)果是 【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