1.以下叙述中不正确的是(C)。A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。B.在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。C.在C中,外部变量的隐含类别是自动存储类别。D.在C中,函数形参可以说明为register变量。2.C语言中规定函数的返回值的类型是由(D)。A.return语句中的表达式类型所决定B.调用该函数时的主调用函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定3.以下所列的各函数首部中,正确的是(C)。A.voidplay(vara:integer,varb:integer)B.voidplay(inta,b)C.voidplay(inta,intb)D.subplay(aasinteger,basinteger)4.C语言允许函数类型缺省定义,此时函数值隐含的类型是(B)。A.floatB.intC.longD.double5.以下函数调用语句中实参的个数是(A)。exce((v1,v2),(v3,v4,v5),v6);A.3B.4C.5D.66.有参函数的返回值,是通过函数中的(A)语句来获得的。A.returnB.printfC.scanfD.函数说明7.以下语句错误的是(B)。A.intx;B.returnx,y;C.x=100;D.return0;8.以下正确的说法是(A)。A.实参和与其对应的形参各占用独立的存储单元B.实参和与其对应的形参共占用一个存储单元C.只有当实参和与其对应的形参同名时才共占用相同的存储单元D.形参不占用存储单元9.以下正确的函数定义是(C)。A.doublefun(intx,y)B.doublefun(intx;inty)C.doublefun(intx,inty)D.doublefun(x,y)10.若某个函数中没有返回值,则应在函数类型处写上关键字(A)。A.voidB.intC.floatD.double11.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是(B)。A.地址传递B.单向值传递C.由用户指定传递方式D.实参传给形参,再由形参传给实参12.C语言规定,函数返回值的类型是由(D)决定的。A.return语句中的表达式类型B.调用该函数时的主调函数类型C.调用该函数时由系统临时D.在定义函数时所指定的函数类型13.若用数组名作为函数调用的实参,传递给形参的是(A)。A.数组首元素的地址B.数组中的全部元素的值C.数组中第一个元素的值D.数组元素的个数14.若有以下定义intf(intx),则变量x为(B)。A.全局变量B.局部变量C.静态变量D.非法变量15.一个源文件中定义的全局变量的作用域为(D)。A.本文件全部范围B.本程序全部范围C.本函数全部范围D.从定义开始至本文件结束16.在一个C语言程序中(B)。A.main函数必须出现在所有函数之前B.main函数可以在任何地方出现C.main函数必须出现在所有函数之后D.main函数必须出现在固定位置17.以下不正确的描述为(D)。A.不同函数中可以使用相同名字的变量B.形参是局部变量C.一个函数内部定义的变量只能在本函数范围内有效D.在一个内部的复合语句中定义的变量可以在本函数范围内有效18.以下函数的类型是(C)。fff(floatx){printf(“%d\n”,x*x);}A.与参数X的类型相同B.void型C.int型D.无法确定19.以下函数调用语句中,含有的实参个数是(B)。Func((exp1,exp2),(exp3,exp4,exp5));A.1B.2C.4D.520.C语言中,形参缺省的存储类别是(A)。A.auto(自动)B.static(静态)C.register(寄存器)D.extern(外部)21.若x为int型变量,则以下函数fun的类型为(C)。fun(x){printf(“%d\n”,x);}A.返回值为void类型B.无法确定返回值C.返回值为int类型D.无返回值22.以下叙述正确的是(A)。A.C程序中各函数之间既允许直接递归调用,也允许间接递归调用B.C程序中各函数之间不允许直接递归调用,也不允许间接递归调用C.C程序中各函数允许直接递归调用,不允许间接递归调用D.C程序中各函数之间不允许直接递归调用,允许间接递归调用23.以下叙述中不正确的是(C)。A.一个变量的作用域完全取决于变量定义语句的位置B.全局变量可以在函数以外的任何部位进行定义C.局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用D.一个变量说明为static存储类别是为于限制其它编译单位的引用24.以下叙述不正确的是(D)。A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中,注释说明只能位于一条语句的后面25.下列说法中正确的是(C)。A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中要调用的函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()函数必须在程序的开始部分26.已知:staticinta[3][4];则数组a中各元素(B)。A.可在程序的运行阶段得到初值0B.可在程序的编译阶段得到初值0C.不能得到确定的初值D.可在程序的编译或运行阶段得到初值027.一个完整的C源程序是(B)。A.要由一个主函数或一个以上的非主函数构成B.由一个且仅由一个主函数和零个以上的非主函数构成C.要由一个主函数和一个以上的非主函数构成D.由一个且只有一个主函数或多个非主函数构成28.以下关于函数的叙述中正确的是(C)。A.C语言程序将从源程序中第一个函数开始执行B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D.main可作为用户标识符,用以定义任意一个函数29.以下关于函数的叙述中不正确的是(B)。A.C程序是函数的集合,包括标准库函数和用户自定义函数B.在C语言程序中,被调用的函数必须在main函数中定义C.在C语言程序中,函数的定义不能嵌套D.在C语言程序中,函数的调用可以嵌套30.以下关于函数叙述中,错误的是(D)。A.函数未被调用时,系统将不为形参分配内存单元B.实参与形参的个数应相等,且实参与形参的类型必须对应一致C.当形参是变量时,实参可以是常量、变量或表达式D.形参可以是常量、变量或表达式31.函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是(D)。A.实参将其地址传递给形参,并释放原先占用的存储单元B.实参将其地址传递给形参,调用结束时形参再将其地址回传给实参C.实参将其值传递给形参,调用结束时形参再将其值回传给实参D.实参将其值传递给形参,调用结束时形参并不将其值回传给实参32.若函数调用时,用数组名作为函数的参数,以下叙述中正确的是(A)。A.实参与其对应的形参共用同一段存储空间B.实参与其对应的形参占用相同的存储空间C.实参将其地址传递给形参,同时形参也会将该地址传递给实参D.实参将其地址传递给形参,等同实现了参数之间的双向值的传递33.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量(C)。A.为全局变量,在本程序文件范围内有效B.为局部变量,只在该函数内有效C.为局部变量,只在该复合语句中有效D.定义无效,为非法变量34.若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量a,则在另一文件中可使用的引用说明是(D)。A.externstaticfloata;B.floata;C.externautofloata;D.externfloata;35.定义一个void型函数意味着调用该函数时,函数(C)A.通过return返回一个用户所希望的函数值B.返回一个系统默认值C.没有返回值D.返回一个不确定的值36.在C语言中,形参必须是(B)。A.常量B.变量C.数值D.表达式37.C语言规定,程序中各函数之间(A)。A.既允许直接递归调用也允许间接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用38.若程序中定义函数floatmyadd(floata,floatb){returna+b;}并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是(A)。A.floatmyadd(floata,b);B.floatmyadd(floatb,floata);C.floatmyadd(float,float);D.floatmyadd(floata,floatb);39.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)。A.auto(自动)B.static(静态)C.register(寄存器)D.extern(外部)40.在一个C源程序文件中,若要定义一个只允许本源文件中所在函数使用的全局变量,则该变量需要使用的存储类别是(B)。A.auto(自动)B.static(静态)C.register(寄存器)D.extern(外部41.下面是求n!的递归函数,下划线处应选择(D)。longfunc(intn){longs=1;if(n==0||n==1)return(s);elses=;}A.sB.s*nC.s*func(n-1)D.n*func(n-1)42.以下程序执行结果为(C)。main(){increment();increment();increment();}increment(){staticintx=0;x+=1;printf(“%d”,x);}A.111B.222C.123D.33343.以下程序的输出结果是(A)。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf(%ld\n,fun(3));}A.1B.2C.3D.444.有以下程序intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf(%d,&x);x=fun(x);printf(%d\n,x);}执行程序时,给变量X输入10,程序的输出结果是(A)。A.55B.54C.65D.4545.有以下程序intfun(intx[],intn){staticintsum=0,i;for(i=0;in;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(%d\n,s);}程序执行后的输出结果是(C)。A.45B.50C.60D.5546.有以下程序main(){chars[]=abcde;s+=2;printf(%d\n,s[0]);}执行后的结果是(D)。A.输出字符a的ASCII码B.输出字符c的ASCII码C.输出字符cD.程序出错47.main(){intx=3,i;for(i=0;i3;i++)printf(%d,f(x));}intf(inta){intb=0;staticc=3;b++;c++;return(a+b+c);}执行此程序后屏幕上显示的结果是(D)。A.81010B.7910C.8911D.891048.下列程序段执行后,s的值是(A)。staticcharch[]=600;inta,s=0;for(a=0;ch[a]='0'&&ch[a]='9';a++)s=10*s+ch[a]-'0';A.600B.6C.0D.出错49.有以下程序#includestdio.hintabc(intu,intv);main(){inta=24,b=16,