您好,欢迎访问三七文档
第七章变量的存储类别一、选择题1.有以下程序#includestdio.hinta=2;intf(intn){staticinta=3;intt=0;if(n%2){staticinta=4;t+=a++;}else{staticinta=5;t+=a++;}returnt+a++;}voidmain(){ints=a,i;for(i=0;i3;i++)s+=f(i);printf(%d\n,s);}程序运行后的输出结果是______。)26B)28C)29D)24答案:C2.凡是函数中未指定存储类别的局部变量,其默认的存储类别是。A)autoB)registerC)externD)static答案:A3.以下不正确的说法是。A)在不同的函数中可以使用名称相同的变量B)在函数内定义的变量只在本函数范围内有效C)形式参数是局部变量D)在函数内的复合语句中定义的变量在本函数范围内有效答案:D4.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。A)autoB)registerC)externD)static答案:D5.如果在一个函数中的复合语句中定义了一个变量,则以下说法正确的是。A)在本函数范围内有效B)在本程序范围内有效C)只在复合语句中有效D)非法变量答案:C6.下列变量定义错误的是。A)intx,y;B)registerstaticinta,b,c;C)autointx,y;D)externintA;答案:B7.以下程序的正确运行结果是_____________。#includestdio.hintm=1;intn=5;intmin(inta,intb);voidmain(){intm=100,n=10,t;t=min(m,n);printf(%d\n,t);}intmin(inta,intb){intc;c=(a=b)?a:b;return(c);}A)1B)5C)10D)0答案:C8.以下程序的正确运行结果是_____________。#includestdio.hvoidmain(){intm=1,n=2,t=3;++m;t+=++n;{intn=10,t;t=n*2;m+=t;printf(%d,%d,%d\n,m,n,t);}printf(%d,%d,%d\n,m,n,t);}A)22,11,5B)22,10,2018,5,622,3,6C)32,9,5D)16,21,610,10,2022,3,9答案:B9.以下叙述中正确的是。(A)全局变量的作用域一定比局部变量的作用域范围大(B)静态(static)类别变量的生存期贯穿于整个程序的运行期间(C)函数的形参都属于全局变量(D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B10.下面程序的输出是。#includestdio.hintfun3(intx){staticinta=3;a+=x;return(a);}voidmain(){intk=2,m=1,n;n=fun3(k);n=fun3(m);printf(%d\n,n);}(A)3(B)4(C)6(D)9答案:C11.有以下程序#includestdio.hinta=2;intf(int*a){return(*a)++;}voidmain(){ints=0;{inta=5;s+=f(&a);}s+=f(&a);printf(%d\n,s);}执行后输出结果是。(A)10(B)9(C)7(D)8答案:C12.以下只有在使用时才为该类型变量分配内存的存储类说明是。(A)auto和static(B)auto和register(C)register和static(D)extern和register答案:B13.下面叙述中正确的是。A)全局变量的作用域一定比局部变量的作用域范围大B)静态(static)类别变量的生存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B14.在C语言中,形参的缺省存储类型是。A)autoB)registerC)staticD)extern答案:A15.下面程序运行后的输出结果是。#includestdio.hintf(){staticinti=0;ints=1;s+=i;i++;returns;}voidmain(){inti,a=0;for(i=0;i5;i++)a+=f();printf(%d\n,a);}A)20B)24C)25D)15答案:D16.以下程序:#includestdio.hvoidmain(){inti=1,j=3;printf(%d,,i++);{inti=0;i+=j*2;printf(%d,%d,,i,j);}printf(%d,%d\n,i,j);}其输出结果是A)1,6,3,1,3B)1,6,3,2,3C)1,6,3,6,3D)1,7,3,2,3答案:B)17.以下程序:#includestdio.hvoidfun(int*s){staticintj=0;dos[j]+=s[j+1];while(++j2);}voidmain(){intk,a[10]={1,2,3,4,5};for(k=1;k3;k++)fun(a);for(k=0;k5;k++)printf(%d,a[k]);}其输出结果是A)34756B)23445C)35745D)12345答案:C)18.以下程序的输出结果是。#includestdio.hinta=1;intfun(intk){staticinta=5;a+=k;printf(%d,a);return(a);}voidmain(){intb=3;printf(%d\n,fun(b+fun(a)));}(A)699(B)669(C)61515(D)6615答案:C19.下列程序的输出结果为。#includestdio.hintc=6;voidtest(int*x,inty){*x=3*(*x);y=*x+y;c=y%(*x);printf(x=%d,y=%d,c=%d\n,*x,y,c);}voidmain(){inta=1,b=4;test(&a,b);printf(a=%d,b=%d,c=%d\n,a,b,c);}(A)x=1,y=7,c=3(B)x=3,y=7,c=1a=3,b=4,c=1a=4,b=3,c=1(C)x=3,y=7,c=1(D)x=3,y=4,c=1a=3,b=4,c=1a=3,b=7,c=1答案:C20.以下程序的运行结果是。#includestdio.hintd=1;voidfun(intp){intd=5;d+=p++;printf(%d,d);}voidmain(){inta=3;fun(a);d+=a++;printf(%d\n,d);}A)53B)84C)58D)54答案:B二、填空题1.只有在函数内才能使用的变量称为_【_1_】_变量。答案:【1】内部或局部2.主函数也_【_1_】_使用其它函数中定义的局部变量。答案:【1】不能3.不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。此说法正确吗?_【_1_】_。答案:【1】正确4.在所有函数之外定义的变量称为_【_1_】_变量。答案:【1】外部或全局5.设全局变量的作用是:增加了_【_1_】_间数据联系的渠道。答案:【1】函数6.全局变量可以为其它函数所共用,它的有效范围为:从_【_1_】_的位置开始到文件结束。答案:【1】定义7.建议不在必要时不要使用全局变量,因为它使函数的_【_1_】_降低了。答案:【1】通用性或可靠性8.外部变量的定义只能有_【_1_】_次,而外部变量的说明可以有_【_2_】_次。答案:【1】一;【2】多9.对外部变量的初始化只能在_【_1_】_时进行。答案:【1】定义10.如果在局部变量的作用范围内与外部变量同名,则_【_1_】_变量不起作用。答案:【1】外部11.从变量的_【_1_】_(即从空间)角度来分,可以分为全局变量和局部变量。答案:【1】作用域12.从变量值存在的时间(即_【_1_】_)角度来分,可以分为静态存储变量和动态存储变量。答案:【1】生存期13.在C语言中每一个变量和函数有两个属性:_【_1_】_和数据的存储类别。答案:【1】数据类型14.存储类别指的是数据在_【_1_】_中的存储方法。答案:【1】内存15.在C语言中,存储方法分为两大类:静态存储类和动态存储类,具体包含四种:自动的、_【_1_】_、静态的、_【_2_】_。前两种属于动态存储类,后两种属于静态存储类。答案:【1】寄存器的;【2】外部的16.静态存储是整个程序运行时间都存在,而动态存储则是在调用函数时临时分配单元。所以,形式参数属于_【_1_】_存储类。答案:【1】动态17.自动变量、寄存器变量、形式参数都属于局部变量,在离开函数时,其值_【_1_】_,而静态局部变量在离开函数时,其值_【_2_】_。答案:【1】就消失;【2】仍保留18.如果需要保留函数上一次调用结束时的值,或变量初始化后只被引用而不改变其值,则这时采用_【_1_】_变量比较方便,以免每次调用时重新赋值。答案:【1】静态19.如不必要,不要多用静态局部变量。不仅长期占用内存不释放,浪费空间,而且当调用次数多时往往弄不清其当前值是什么,降低了程序的_【_1_】_。答案:【1】可读性20.对自动变量如果不赋初值,则它的值是一个_【_1_】_值。答案:【1】不确定的21.对静态变量和外部变量是在编译时赋初值的,即只赋初值一次。如果在定义时不赋初值的话,则系统自动对数值型变量赋初值_【_1_】_或对字符型变量赋初值_【_2_】_。答案:【1】0;【2】'\0'22.全局变量包括外部变量和静态外部变量,两者的区别是:_【_1_】_变量只限于本文件引用,而_【_2_】_变量允许其它文件引用。答案:【1】静态外部;【2】外部23.函数本质上是全局的,因为一个函数要被另外的函数调用,但是,根据函数能否被其它源文件调用,将函数区分为_【_1_】_函数和_【_2_】_函数。答案:【1】内部;【2】外部24.如果在定义函数时省略关键字_【_1_】_,则隐含为外部函数。答案:【1】extern25.在定义内部函数时,需在函数类型前面加上关键字_【_1_】_。答案:【1】static26.以下程序的正确运行结果是_____________。#includestdio.hintf(inta);voidmain(){inta=2,k;for(k=0;k3;k++)printf(%d,f(a));}intf(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}答案:78927.以下程序的正确运行结果是_____________。#includestdio.hinta=4,b=6;intmax(inta,intb){intc;c=ab?a:b;return(c);}voidmain(){inta=8;printf(%d\n,max(a,b));}答案:828.以下程序的正确运行结果是_____________。#includestdio.hintf(inta){autointb=0;staticc=2;b++;c++;return(a+b+c);}voidmain(){inta=1,n;for(n=0;n=2;n++)printf(%d,f(a));}答案:56729.以下程序的正确运行结果是_____________。#includestdio.hintn=1;voidf();voidmain(){staticintx=10;inty;y=n;f();printf(main:%d,%d,%d\n,x,y,n);}voidf(){staticintx=5;inty=4;x=x+1;n=
本文标题:变量的存储类别题库
链接地址:https://www.777doc.com/doc-2570275 .html