二级C语言教程章节测试12.docx
《二级C语言教程章节测试12.docx》由会员分享,可在线阅读,更多相关《二级C语言教程章节测试12.docx(11页珍藏版)》请在冰点文库上搜索。
二级C语言教程章节测试12
二级C语言教程章节测试12.用户标识符的作用域和存储类
一、选择题:
(1)有以下程序
int a=2;
intf(int n)
{staticint a=3;
int t=0;
if(n%2){staticint a=4; t+=a++; }
else {staticint 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)有以下程序
inta=2;
intf(int*A)
{return(*A)++;}
main()
{ ints=0;
{inta=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)有以下程序
inta=3;
main()
{ ints=0;
{inta=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)以下程序的输出的结果是______
intx=3;
main()
{ inti;
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)设有以下函数:
f(int a)
{ int b=0;
staticint 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;
voidfun()
{ 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
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=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)
{ staticint 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(intp)
{ int d=5;
d+=p++;
printf("%d,d);
}
main()
{ inta=3;
fun(a);
d+=a++;
printf("%d\n,d);
}
(17)以下叙述中不正确的是______
A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。
B)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。
C)在C中,外部变量的隐含类别是自动存储类别。
D)在C中,函数形参可以说明为register变量。
(18)下面程序的输出是______
intw=3;
main()
{intw=10; printf("%d\n",fun(5)*w); }
fun(intk)
{if(k==0)returnw;
return(fun(k-1)*k); }
A)360 B)3600 C)1080 D)1200
(19)下列程序执行后输出的结果是______
#include
f(inta)
{ intb=0; staticc=3:
a=c++,b++;
return(a); }
main()
{ inta=2,i,k;
for(i=0;i〈2;i=++〉 k=f(a++);
printf("%d\n",k); }
(20)下列程序执行后输出的结果是______
intd=1;
fun(intq)
{intd=5;
d+=p++; printf("%d".d); }
main()
{inta=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(intx)
staticinta=3;
a+=x;
return(a);}
main()
{intk=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);}
(22)下面程序的输出是______
A)1 B)2 C)7 D)10
intm=13;
intfun2(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun2(a,b)/m);}
(23)请读程序:
#include
voidfun(int*s)
{staticintj=0;
do
s[j]+=s[j+1];
while(++j<2);
}
main()
{intk,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
main()
{intk=4,m=1,p;
p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p);}
func(a,b)
inta,b;
{staticintm=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)
{
intb=0;static intc=3;
b++; c++;
return (a+b+c);
}
main()
{
inti,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
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 intm=0,i=2;
i+=m+1;
m=i+a+b;
returnm;
}
(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】。
#defineMAX5
inta[MAX],k;
main()
{fun1();fun3();fun2(); fun3();
printf("\n"); }
fun1()
{for(k=0;k fun2()
{inta[MAX],k;
for(k=0;k<5;k++) a[k]=k;}
fun3()
{intk;
for(k=0;k}
(8)阅读下列程序:
#include
#defineMAX_COUNT4
voidfun();
main()
{ intcount;
for(count=1;count<=MAX_COUNT;count++) fun();
}
voidfun()
{ staticinti;
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)3025
(3)120
(4)246
(5)8,17
(6)8,17
(7)o246802468
(8)2468转贴于:
计算机等级考试_考试大