ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:23.68KB ,
资源ID:3544913      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3544913.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C理论自测题及参考答案第3次.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C理论自测题及参考答案第3次.docx

1、C理论自测题及参考答案第3次一、单选题1.以下关于函数的叙述中,正确的是 。 A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值B.在函数体中至少必须有一个return语句C.在函数体中可以定义另一个函数D. 在函数体中可以调用函数自身2. 以下关于变量的叙述中,不正确的是 。 A.一个变量的作用域完全取决于该变量声明的位置B.全局变量可以在函数以外的任何位置声明C.动态局部变量的生存期仅限于本次函数调用,无法将局部变量的值保存到函数下一次调用D.用static声明一个变量是为了限制其他编译单位引用该变量3. 以下选项是一个自定义函数的头部,其中正确的是 。 A. in

2、t fun(int a, b) B. int fun(int a, int a)C. int fun(int a,int b) D. int fun(static int a,int b)4. 关于函数返回值,以下叙述中正确的是 。 A. 函数返回值的类型由函数体内return语句包含的表达式类型决定B函数返回值的类型由函数头部定义的函数类型决定C若函数体中有多个return语句,则函数返回值是排列在最后的return语句中表达式的值D若函数体内没有return语句,则函数没有返回值5. 以下程序中main函数需要调用fun函数,所给选项中正确的调用语句是 。A. fun(1,2); B. f

3、un(1,2); C. f(); D. fun(fun(1);void fun (int c) printf(“%d”,c ); 6. 已知函数f定义如下:void f(void) printf(“ Thats great!”);则调用f函数的正确形式是 。 A. f; B. f(); C. f(void); D. f(1);7. 已知有函数f的定义如下: int f(int a, int b) if (ab)return (a,b); else return (b,a); 在main函数中若调用函数f(2,3),得到的返回值是 。A. 2 B. 3 C. 2和3 D. 3和28. 在以下程序

4、中,需要在fun函数中声明一个int型的变量,所给选项中不能用作该变量名的是 。 A. x B. y C.a D. fun#includeint y;main() int a=1; fun(a);int fun(int x) /* int 型变量声明位置*/9. 若有程序:int x;int f(int y) return 标识符 ; #includeint w;main() int z=2; f(z); 则在函数f中,return语句后允许出现的标识符是 。 A. x或w B. x或y C. z或w D. NULL10. 在main函数体内部和外部均允许出现的实体是 。 A. 预处理命令 B

5、. 操作语句 C另一函数的定义 D函数形式参数声明11. 设有下列程序段:static char b=2;void Y ( ) static float d=4;. int a=1;void X ( ) int c=3; . 关于程序段中各变量的属性,以下叙述中错误的是 。 A. a是全局变量,函数X可以访问,函数Y不能访问 B. b是全局变量,函数X和函数Y都可以访问 C. c是动态局部变量,函数X可访问,函数Y不可访问 D. d是静态局部变量,函数X和函数Y都可以访问12. 对应main函数中的fun函数调用,以下给出的四个fun函数定义的首部中,错误的是 。 main() int a,n

6、; fun(n,&a); Avoid fun(int m,int x) Bvoid fun(int s,int h41) Cvoid fun(int p,int *s) Dvoid fun(int n,int a)13. 下列全局变量声明中,正确的是 。 Aauto int i=1; B. float a=1, b=0.5, c=a+b;C. char for=1; D. static char ch;14. 若有数组 A和B的声明“static char A = ABCDEF,B = A, B, C, D, E, F ;”,则数组A和数组B的长度分别是 。 A. 7,6 B. 6,7 C.

7、6,6 D. 7,715. 以下程序运行后的输出结果是 。 A.2 2 B.7 2 C. 7 5 D.6 2#includemain() char a7=a00a00; int i,j; i=sizeof(a); j=strlen(a); printf(%d %d,i,j); 16. 假定已有声明“char a30,*p=a;”,则下列语句中能将字符串This is a C program.正确地保存到数组a中的语句是 。 A. a30=This is a C program.; B. a=This is a C program.;C. p= This is a C program.; D.

8、strcpy(p,This is a C program.);17. 以下数组声明中正确的是 。 A. int n=10, an; B. int a; C. int a23=1,2,3; D. int a3=1,2,3;18若有声明int a10,b33; 则以下对数组元素赋值的操作中,不会出现越界访问的是 。 A. a -1=0 B. a10=0 C. b30=0 D. b03=019.已有声明“int S23”,以下选项中 正确地引用了数组S中的元素。 A. S12!1) B. S20 C. S1 D. S20. 已知函数fun的定义如下:void fun(int x,int y) int

9、 k; for(k=0;ky;k+) xk+=y;若main函数中有声明int a10=10;及调用fun函数的语句,则正确的fun函数调用形式是 。 A. fun(a,a0); B.fun(a0,a0); C.fun(&a0,a0); D. fun(a0,&a0);21以下单目运算符均只需要一个操作数,其中要求操作数类型必须是指针型的选项是 。 A. & B. + C. ! D. *22已有声明“int a5;”,以下表达式中不能正确取得数组元素a1地址的选项是 。 A&a1 B+a C&a0+1 Da+123已知有声明:“int good=1;”, 若要使得表达式p=good+good在编

10、译时不出现语法错和警告,p应当声明为 。 A.char p; B. char *p; C. int p; D. int *p;24下列程序段的输出结果是 。 int i,x33=9,8,7,6,5,4,3,2,1,*p=&x11; for(i=0;i4;i+=2)printf(%d , *(p+i); A. 5 2 B. 5 1 C. 5 3 D. 9 7 25若有以下声明和定义,如果在main函数中需要调用fun函数,以下调用语句中错误是 。A. fun(1); B. (*a)(1); C. b=fun; (*b)(1); D. c=a;(*c)(1);void fun (int c) pr

11、intf(“%d”,c ); main () void (*a)(int)=fun , *b(int), (*c)(int); /*调用fun函数语句位置*/void *b(int c) 26若有声明“int a4=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,*+p D. p+=4,+*p27. 已知某程序中有声明int a4,j;及语句for(j=0;j4;j+)pj=a+j;,则标识符p正确的声明形式应为 。 Aint p4; Bint *p4; Cint *p4; Dint (

12、*p)4;参考答案:15:DDCBB 610:BBABA 1115:DDDAB 1620:DDDAC2125:DBBCC 2627:BB二、多选题1. 在定义一个函数时,下列选项中 (21) 可以缺省。 A. 函数名之前的数据类型 B. 函数名之后一对圆括号 C. 函数名 D. 形式参数声明 E. 函数体中的语句2. 以下程序中需要在main函数之后定义一个函数,在所给的选项中不能用作该函数名的标识符是 。 A.x B.y C. p D.a#define p 1int y;main() int a=1; 函数名(a);int 函数名(int x) return x*x;3. 若已定义一个无返回

13、值的函数,则以下关于调用该函数的叙述中错误的是 。A函数调用可以作为独立的语句存在B函数调用可以出现在表达式中C函数调用可以作为一个函数实参D函数调用可以作为一个函数形参参考答案:1.ADE 2. BCD 3.BCD三、填空题1. 以下程序运行后输出结果是 。 #includefun (int k) static int i; int j=0; return(+k*(+i+(+j);main( ) int i,n; for (i=0;i3;i+) printf(%3dt,fun(i); 2. 以下程序运行后输出结果是 。 void fun1(int);void fun2(void);main(

14、) extern int x; printf(%d ,x+=2); fun1(2);int x=1;void fun1(int x) printf(%d ,x+); fun2();void fun2(void) printf(%d ,x); while(1) int x=5; printf(%d ,x); break; 3. 以下程序运行后输出结果是 。int x=1;main() int y,k; y=f(3); printf(%d,%d,x,y);int f(int x) if(x=3) int x=2; return x; elseb return x;4. 下列程序运行后输出结果是 。

15、 #includetrans(int m, int n ) int q; if(mn) q=m; else q=m%n; trans( m/n, n ); if(q10) printf(%d, q ); else printf( %c, a+q-10 );main() trans( 30, 4);5. 下列程序运行后输出结果是 。 #includeint fun(int n);main() printf(%d,fun(5);int fun(int n) if(n=1)return 1; return n-fun(n-1);6.以下程序运行后的输出结果是 。 void fun(int x, in

16、t y, int *z) y=x*x; *z=x*x*x;void main( ) int a=2, b=0, c=0; fun(a, b, &c); printf(%d %d %d , a,b,c );7. 以下程序运行后输出结果中第一行为 (1) ,第二行为 (2) 。#include int fun(int a,int n,int b) int i=0,j,m=0,c,x; for(i=0;in;i+) x=ai;c=1; for(j=i+1;j=n)i=j; if(c=1) bm+=x; else bm+=-c; bm+=x; return m;void main() int x=4,

17、4,4,4,4,4,4,4,1,2,y10,i,j,n=10; n=fun(x,n,y); for(i=0;in;i+) if(i%2=0)printf(n); printf(%5d,yi); 8以下程序运行后输出结果第一行是 (1) ,第二行是 (2) 。 #includeint convert(char s1,char s2) int i=0,j,s; char tab84=000,001,010,011,100,101,110,111; for(i=0,j=0;s1i!=0;i+,j=j+3) strcpy(&s2j,tabs1i-0); for(i=0,s=0;istrlen(s2);

18、i+) s=s*2+s2i-0; return s;main() char ss1=15,ss280; int y; y=convert(ss1,ss2); printf(%dn%s,y,ss2);9以下程序运行后输出结果第一行是 (1) ,第二行是 (2) 。main() int a33=1,2,3,4,5,6,7,8,9,m,k,t; for(m=0;m3;m+) for(k=0;k=m;k+) if(m+k)%2) t=amk,amk=akm,akm=t; for(m=0;m3;m+) for(k=0;k3;k+) printf(%d ,amk); printf(n); 10.以下程序运

19、行后输出结果第一行是 (1) ,第三行是 (2) 。#includevoid mat_change(int b44) int i,j,m,n,k,c66; for(i=0;i6;i+) for(j=0;j6;j+)cij=1; for(i=1;i5;i+) for(j=1;j5;j+)cij=bi-1j-1; for(i=1;i5;i+) for(j=1;j5;j+) if(cij=0) k=0; for(m=-1;m=1;m+) for(n=-1;n=1;n+) if(!(m=0&n=0)k=k+ci+mj+n; if(k=8)cij=1; for(i=1;i5;i+) for(j=1;j5

20、;j+) bi-1j-1=cij;main() int i,j,a44=0,1,1,1,1,1,0,1,0,1,0,1,1,1; mat_change(a); for(i=0;i4;i+) for(j=0;j4;j+)printf(%d ,aij); printf(n); 11.已知某程序中有如下片段:int i; float f; /* p的声明 */p=&i; p=&f; 若要保证该段程序没有任何语法错误,p应当声明为 。 12. 以下程序运行时输出结果是 。main() int i,a6= 1,2,3,4,5,6; fun(a,a+5); for(i=0; i6; i+) printf(

21、%2d,ai);fun(int *p1 , int *p2) int t; if(p1p2) t=*p1; *p1=*p2; *p2=t; fun(p1+=2, p2-=2); 13. 以下程序运行时输出结果第一行是 (1) ,第二行是 (2) 。 void swap(int *a,int *b) int c; c=*a;*a=*b;*b=c;main() int i,j,a33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) for(j=0;j2-i;j+) if(i=j)swap(&aij,&ai+2j+2); else swap(&aij,&ai+1j+1); for

22、(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,aij); printf(n); 14. 以下程序运行时输出结果第一行是 (1) ,第二行是 (2) ,第三行是 (3) 。#include #include long fun(char *s) long n, sign, base=10,t; for(; isspace(*s);s+); sign=(*s=-)?-1:1; if(*s=+|*s=-) s+; if(*s=0&s+) if(*s=x|*s=X) base=16; s+; else base=8; for(n=0,t=1;t &(isdigit(*s)|

23、isalpha(*s);s+) switch(base) case 10: n=n*base+*s-0;break; case 8: if(*s =0& *s =A & toupper(*s)x & iright) i+ ; while(sjleft)j-; if( i=j) y=si; si=sj ;sj=y; i+; j-; while( i=j );main() char str16=abcde,str27=25134; q(str1,0,4); puts(str1); q(str2,1,4); puts(str2); 参考答案:1. 2 6 12 2. 3 2 3 5 3. 1,2 4

24、. 132 5. 3 6. 2 0 8 7. (1) -8 4 (2) 1 2 8. (1)13 (2) 9. (1)1 4 3 (2)2 5 8 10. (1)1100 (2)0111 11. void *p; 12. 6,2,4,3,5,1 13. (1)9 6 3 (2) 8 5 2 14. (1) 31 (2) 32 (3) -33 15. (1) edcba (2) 25431 四、完善程序1、以下程序中函数sort的功能是把a、b数组中的数据从大到小有序归并到c数组中,m保存a数组中数据的个数,n保存b数组中数据的个数,函数返回归并到c数组的数据个数。算法提示:首先将b数组中数据倒

25、序,再将a、b数组有序合并到c数组中。#include void swap(int *a,int *b) int c; c=*a,*a=*b,*b=c;int sort(int *a,int m,int *b,int n,int *c) int i,j,k,x; for(i=0;in/2 ;i+) swap(&bi, (1) ); i=0; j=0; k=0; while(im & jn) if( (2) ) x=ai; i+; else x=bj; j+; ck=x ; k+; while(km+n) if(jn) ck=bj ; k+; j+; else if(im) (3) ; k+; i+; return m+n;void main

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1