C理论自测题及参考答案第3次.docx
- 文档编号:2168366
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:20
- 大小:23.76KB
C理论自测题及参考答案第3次.docx
《C理论自测题及参考答案第3次.docx》由会员分享,可在线阅读,更多相关《C理论自测题及参考答案第3次.docx(20页珍藏版)》请在冰豆网上搜索。
C理论自测题及参考答案第3次
一、单选题
1.以下关于函数的叙述中,正确的是。
A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
B.在函数体中至少必须有一个return语句
C.在函数体中可以定义另一个函数
D.在函数体中可以调用函数自身
2.以下关于变量的叙述中,不正确的是。
A.一个变量的作用域完全取决于该变量声明的位置
B.全局变量可以在函数以外的任何位置声明
C.动态局部变量的生存期仅限于本次函数调用,无法将局部变量的值保存到函数下一次调用
D.用static声明一个变量是为了限制其他编译单位引用该变量
3.以下选项是一个自定义函数的头部,其中正确的是。
A.intfun(inta,b)B.intfun(inta,inta)
C.intfun(inta[],intb)D.intfun(staticinta,intb)
4.关于函数返回值,以下叙述中正确的是。
A.函数返回值的类型由函数体内return语句包含的表达式类型决定
B.函数返回值的类型由函数头部定义的函数类型决定
C.若函数体中有多个return语句,则函数返回值是排列在最后的return语句中表达式的值
D.若函数体内没有return语句,则函数没有返回值
5.以下程序中main函数需要调用fun函数,所给选项中正确的调用语句是。
A.fun(1,2);B.fun((1,2));C.f();D.fun(fun
(1));
voidfun(intc)
{printf(“%d”,c);}
6.已知函数f定义如下:
voidf(void)
{printf(“That’sgreat!
”);}
则调用f函数的正确形式是。
A.f;B.f();C.f(void);D.f
(1);
7.已知有函数f的定义如下:
intf(inta,intb)
{if(a
在main函数中若调用函数f(2,3),得到的返回值是。
A.2B.3C.2和3D.3和2
8.在以下程序中,需要在fun函数中声明一个int型的变量,所给选项中不能用作该变量名的是。
A.xB.yC.aD.fun
#include
inty;
main()
{inta=1;
fun(a);
}
intfun(intx)
{/*int型变量声明位置*/
}
9.若有程序:
intx;
intf(inty)
{return标识符;}
#include
intw;
main()
{intz=2;f(z);}
则在函数f中,return语句后允许出现的标识符是。
A.x或wB.x或yC.z或wD.NULL
10.在main函数体内部和外部均允许出现的实体是。
A.预处理命令B.操作语句C.另一函数的定义D.函数形式参数声明
11.设有下列程序段:
staticcharb=2;
voidY()
{staticfloatd=4;.......}
inta=1;
voidX()
{intc=3;......}
关于程序段中各变量的属性,以下叙述中错误的是。
A.a是全局变量,函数X可以访问,函数Y不能访问
B.b是全局变量,函数X和函数Y都可以访问
C.c是动态局部变量,函数X可访问,函数Y不可访问
D.d是静态局部变量,函数X和函数Y都可以访问
12.对应main函数中的fun函数调用,以下给出的四个fun函数定义的首部中,错误的是。
main()
{inta,n;
fun(n,&a);
}
A.voidfun(intm,intx[])B.voidfun(ints,inth[41])
C.voidfun(intp,int*s)D.voidfun(intn,inta)
13.下列全局变量声明中,正确的是。
A.autointi=1;B.floata=1,b=0.5,c=a+b;
C.charfor=1;D.staticcharch;
14.若有数组A和B的声明“staticcharA[]="ABCDEF",B[]={'A','B','C','D','E','F'};”,则数组A和数组B的长度分别是。
A.7,6B.6,7C.6,6D.7,7
15.以下程序运行后的输出结果是。
A.22B.72C.75D.62
#include
main()
{chara[7]="a0\0a0\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d",i,j);
}
16.假定已有声明“chara[30],*p=a;”,则下列语句中能将字符串"ThisisaCprogram."正确地保存到数组a中的语句是。
A.a[30]="ThisisaCprogram.";B.a="ThisisaCprogram.";
C.p="ThisisaCprogram.";D.strcpy(p,"ThisisaCprogram.");
17.以下数组声明中正确的是。
A.intn=10,a[n];B.inta[];
C.inta[2][3]={{1},{2},{3}};D.inta[][3]={{1},{2},{3}};
18.若有声明inta[10],b[3][3];则以下对数组元素赋值的操作中,不会出现越界访问的是。
A.a[-1]=0B.a[10]=0C.b[3][0]=0D.b[0][3]=0
19.已有声明“intS[2][3]”,以下选项中正确地引用了数组S中的元素。
A.S[1>2][!
1])B.S[2][0]C.S[1]D.S
20.已知函数fun的定义如下:
voidfun(intx[],inty)
{intk;
for(k=0;k x[k]+=y; } 若main函数中有声明inta[10]={10};及调用fun函数的语句,则正确的fun函数调用形式是。 A.fun(a[],a[0]);B.fun(a[0],a[0]);C.fun(&a[0],a[0]);D.fun(a[0],&a[0]); 21.以下单目运算符均只需要一个操作数,其中要求操作数类型必须是指针型的选项是。 A.&B.++C.! D.* 22.已有声明“inta[5];”,以下表达式中不能正确取得数组元素a[1]地址的选项是。 A.&a[1]B.++aC.&a[0]+1D.a+1 23.已知有声明: “intgood=1;”,若要使得表达式p="good"+good在编译时不出现语法错和警告,p应当声明为。 A.charp;B.char*p;C.intp;D.int*p; 24.下列程序段的输出结果是。 inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1]; for(i=0;i<4;i+=2) printf("%d",*(p+i)); A.52B.51C.53D.97 25.若有以下声明和定义,如果在main函数中需要调用fun函数,以下调用语句中错误是。 A.fun (1);B.(*a) (1);C.b=fun;(*b) (1);D.c=a;(*c) (1); voidfun(intc){printf(“%d”,c);} main() {void(*a)(int)=fun,*b(int),(*c)(int); /*调用fun函数语句位置*/ } void*b(intc){} 26.若有声明“inta[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);”,则值为9的表达式是. A.p+=3,*p++B.p+=4,*(p++)C.p+=4,*++pD.p+=4,++*p 27.已知某程序中有声明inta[4],j;及语句for(j=0;j<4;j++)p[j]=a+j;,则标识符p正确的声明形式应为。 A.intp[4];B.int*p[4];C.int**p[4];D.int(*p)[4]; 参考答案: 1~5: DDCBB6~10: BBABA11~15: DDDAB16~20: DDDAC 21~25: DBBCC26~27: BB 二、多选题 1.在定义一个函数时,下列选项中(21)可以缺省。 A.函数名之前的数据类型B.函数名之后一对圆括号 C.函数名D.形式参数声明 E.函数体中的语句 2.以下程序中需要在main函数之后定义一个函数,在所给的选项中不能用作该函数名的标识符是。 A.xB.yC.pD.a #definep1 inty; main() {inta=1; 函数名(a); } int函数名(intx) {returnx*x; } 3.若已定义一个无返回值的函数,则以下关于调用该函数的叙述中错误的是。 A.函数调用可以作为独立的语句存在 B.函数调用可以出现在表达式中 C.函数调用可以作为一个函数实参 D.函数调用可以作为一个函数形参 参考答案: 1.ADE2.BCD3.BCD 三、填空题 1.以下程序运行后输出结果是。 #include fun(intk) {staticinti; intj=0; return(++k*(++i+(++j))); } main() {inti,n; for(i=0;i<3;i++) printf("%3d\t",fun(i)); } 2.以下程序运行后输出结果是。 voidfun1(int); voidfun2(void); main() {externintx; printf("%d",x+=2); fun1 (2); } intx=1; voidfun1(intx) {printf("%d",x++); fun2(); } voidfun2(void) {printf("%d",x); while (1) {intx=5; printf("%d",x);break; } } 3.以下程序运行后输出结果是。 intx=1; main() {inty,k; y=f(3);printf("%d,%d",x,y); } intf(intx) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理论 自测 参考答案