用户标识符的作用域和存储类.docx
《用户标识符的作用域和存储类.docx》由会员分享,可在线阅读,更多相关《用户标识符的作用域和存储类.docx(10页珍藏版)》请在冰豆网上搜索。
用户标识符的作用域和存储类
第十三部分:
用户标识符的作用域和存储类
一、选择题:
(1)有以下程序
inta=2;
intf(intn)
{staticinta=3;
intt=0;
if(n%2){staticinta=4;t+=a++;}
else{staticinta=5;t+=a++;}
returnt+a++;
}
main()
{ints=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)以下程序的输出结果是
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;
}
main()
{inti,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()
{staicintx=1;
x*=x+1;
printf("%d",x);
}
A)33
B)22
C)26
D)25
(9)设有以下函数:
f(inta)
{intb=0;
staticintc=3;
b++;c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是
main()
{inta=2,i;
for(i=0;i<3;i++)printf(“%d\n”,f(a));
}
A)7B)7C)7D)7
89107
911137
(10)以下程序的输出结果是
inta,b;
voidfun()
{a=100;b=200;}
main()
{inta=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)4B)6C)8D)10
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
(14)以下程序的输出结果是
A)699
B)669
C)61515
D)6615
intd=1;
fun(intp)
{staticintd=5;
d+=p;
printf("%d",d);
return(d);
}
main()
{inta=3;printf("%d\n",fun(a+fun(d)));}
(15)以下程序运行后,输出结果是
A)8,15
B)8,16
C)8,17
D)8,8
func(inta,intb)
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{intk=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
intd=1;
fun(intp)
{intd=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)84
B)96
C)94
D)85
(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(inta)
{
intb=0;staticintc=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】
inta=5;
fun(intb)
{staticinta=10;
a+=b++;
printf("%d",a);
}
main()
{intc=20;
fun(c);
a+=c++;
printf("%d\n",a);
}
(3)以下程序输出的最后一个值是【3】。
intff(intn)
{staticintf=l;
f=f*n;
returnf;
}
main()
{inti;
for(I=1;I<=5;I++printf(“%d\n”,ff(i));
}
(4)以下程序的输出结果是[4]。
voidfun()
{staticinta=0;
a+=2;printf(“%d”,a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun()
printf(“\n”);
}
(5)以下程序的运行结果是[5]
#include
main()
{intk=4,m=1,p;
p=func(k,m);printf("%d,",p);
p=func(k,m);printf("%d\n",p);
}
func(inta,intb)
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
returnm;
}
(6)以下程序的输出结果是【6】。
#include
intfun(intx,inty)
{staticintm=0,i=2;
i+=m+1;
m=i+x+y;
returnm
}
main()
{intj=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;kfun2()
{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】。
答案:
一、选择题:
01)C 02)A 03)C 04)B 05)A
06)D 07)A 08)C 09)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
二、填空题:
(1)010111212
(2)3025
(3)120
(4)246
(5)8,17
(6)8,17
(7)o246802468
(8)2468