一、选择题: (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
|