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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

二级C语言111.docx

1、二级C语言111二级C语言-111(总分:100.00,做题时间:90分钟)一、选择题(总题数:41,分数:100.00)1.若有以下程序: #include stdio.h main( ) int a=1,b=2; for( ;a8;a+ +) b+ =a; a+ =2; printf(%d,%d/n,a,b); 则程序运行后的输出结果是_。(分数:2.00)A.9,18B.8,11C.7,11D.10,14解析:解析 第一次循环a的值为1,满足条件,执行b+=a与a+=2,则b的值变为3,a的值变为3。执行a+,a的值为4,满足条件进入第二次循环,执行完循环体后b的值为7,a的值为6。执行

2、a+,a的值为7,满足条件进入第三次循环,执行完循环体后b的值为14,a的值为9。执行a+,a的值变为10,不满足条件循环结束。所以选择D选项。2.若有以下程序: #include stdio.h main( ) int x=8; for( ;x0; x-) if(x%3) printf(%d,x-); continue; printf(%d,-x); 则程序的运行结果是_。(分数:2.00)A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,解析:解析 coutinue的作用是跳出循环体中剩余的语句而进行下一次循环。第一次循环,x的值为8,循环体中if条件成立,打印x

3、的值8后将x减1,再执行continue语句,跳出本次循环。第二次判断循环条件时,x的值变为6,不满足循环体内if条件,执行打印-x的操作,即打印5后跳出循环。第三次判断循环条件时x的值为4,满足循环体中if条件。执行打印x-的操作,即打印4后将x值减1,执行continue语句,跳出本次循环。第四次判断循环条件时x的为2,满足循环体中if条件,打印x-,即打印2后将x减1,执行continue语句,跳出本次循环。在进行for条件表达式中第三个表达式x-的操作后x的值为0,不满足条件结束循环。所以打印结果为8,5,4,2,。3.若有以下程序: #include stdio.h main( )

4、int a=6,b=0, c=0; for (;a;) b + = a; a - = + + c; printf(%d,%d,%d/n,a,b,c); 则程序的输出结果是_。(分数:2.50)A.1,14,3B.0,14,3C.0,18,3D.0.14,6解析:解析 本循环的条件判断时,只要a为0就退出循环体,初始a的值为6,满足条件,执行完循环体后b的值为6,a-=+c即a=a-(+c),所以a的值为5,c的值为1;第二次循环后b的值为11,a的值为3,c的值为2;第三次也是最后循环后,a的值为0,b的值14,c的值为3。4.若有以下程序: #include stdio.h main( )

5、int a=6,b=0,c=0; for(;a&(b= =0);) b + =a; a- = c+ + ; printf(%d,%d,%d/n,a,b,c); 则程序的输出结果是_。(分数:2.50)A.5,6,0B.6,0,0C.6,6,1D.5,6,1解析:解析 本题重点考查C语言中for语句和逻辑表达式,for语句的一般形式为: fbr(表达式1;表达式2;表达式3)语句 其循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺省,但“;”不能缺省。该题目中省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。fo

6、r(;a&(b=0);)b+=a;a-=c+;相当于while(a&(b=0)b+=a;a-=c+;。因此C选项正确。5.若有以下程序: #include stdio.h main( ) int i, sum; for(i=1; i6; i + + ) sum+ =1; printf(%d/n,sum); 则程序运行后的输出结果是_。(分数:2.50)A.随机值B.0C.15D.16解析:解析 本题重点考查for语句,变量没有初始化的情况下,默认值与编译器有关系,不同的编译器有不同的值。因此A选项正确。6.若有以下程序: #include stdio.h main( ) int i,j; fo

7、r(i=1; i4; i + +) for(j=i; j4; j + +) pfinff(%d*%d=%d,i,j,i*j); printf(/n); 则程序运行后的输出结果是_。(分数:2.50)A.1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9B.1*1=1 1*2=2 1*3=32*1=2 2*2=43*1=3C.1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9D.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9解析:解析 外循环第一次i的值为1,内循环第一次的初值为1,打印1*1=1;内循环第二次j的值为2,打印1*2=2;内循环

8、第三次j的值为3,打印1*3=3,打印回车换行,退出内循环。外循环第二次i的值为2,内循环第一次j的初值为2,打印2*2=4;内循环第二次j的值为3,打印2*3=6,打印回车换行,退出内循环。外循环第3次,i的值为3,内循环第一次j的初值为3,打印3*3=9,打印回车换行,退出内循环。7.若有以下程序: #include stdio.h main( ) int i=5; do if(i%3= =1) if(i%5= =2) printf(%*d,i); break; i+ +; while(i! =0); pnnff(/n); 则程序的运行结果是_。(分数:2.50)A.*2*6B.*3*5C

9、.*5D.*7解析:解析 dowhile语句是先执行后判断,所以第一次先执行循环体,判断i%3=1的条件,由于i为5,所以余数为2,条件不成立,执行i+,i的值为6,判断while条件为真,第二次执行循环体,同第一次循环体的执行过程一样,i的值变为7,判断while条件为真,第三次执行循环体,此时i%3=1条件成立,判断i%5=2也成立,打印*与i的值,即*7,然后执行break语句,跳出循环。所以选择D选项。8.若有以下程序: #inelude stdio.h main( ) int i,j; for(i=3; i=1; i-) for(j=1; j=2; j+ +) printf(%d,i

10、+j); printf(/n); 则程序的运行结果是_。(分数:2.50)A.4 32 54 3B.4 53 42 3C.2 33 42 3D.2 33 42 3解析:解析 第一次执行外循环,i的值为3;第一次执行内循环,j的值为1,j=2条件成立,打印i+j的值,即4。第二次执行内循环,j的值为2,j=2条件成立,打印i+j的值,即5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环,i的值为2,内循环的执行同第一次一样,所以打印3和4,打印回车换行,结束内循环。第三次执行外循环i的值为1,同理内循环中打印2和3,打印回车换行符,结束内循环。9.若有以下程序: #include

11、 stdio.h main( ) int i,j,m=1; for(i=1;i3;i+ +) for(j=3;j0;j- -) if(i*j3) break; m*=i*j; printf(m=%d/n,m); 则程序运行后的输出结果是_。(分数:2.50)A.m=4B.m=2C.m=6D.m=5解析:解析 第一次外循环i的值为1,第一次内循环j的值为3,不满足条件,执行m*=i*j,即m的值为3;第二次j的值为2,不满足条件,执行m*=i*j,即m的值为6;第三次j的值为1,不满足条件,执行m*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循

12、环。10.若有以下程序: #inelude stdio.h main( ) int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i3;i+ +) for(j=i;j=i;j+ +) t + = bibji; printf(%d/n,t); 则程序运行后的输出结果是_。(分数:2.50)A.3B.4C.1D.9解析:解析 每次内循环只循环一次就结束,第一次外循环时,t=t+b0b00=1+b00=1+0=1;第二次外循环时t=t+b1b11=1+b11=1+1=2;第三次外循环时,t=t+b2b22=2+b22=2+2=4。11.若有以下程序: #include

13、 stdio.h main( ) int i; for(i=1;i=40; i+ +) if(i+ +%5= =0) if(+ +i%8= =0) printf(%d,i); printf(/n); 则执行后的输出结果是_。(分数:2.50)A.5B.24C.32D.40解析:解析 本题的含义是在1-40的整数的范围中,只有当i的值能被5整除,且i+2的值能被8整除时,打印i的值,满足这个条件的只有32,选择C选项。12.以下叙述中正确的是_。(分数:2.50)A.continue语句的作用是使程序的执行流程跳出包含它的所有循环B.break语句只能用在循环体内和switch语句体内C.在循环

14、体内使用break语句和continue语句的作用相同D.break语句只能用于switch语句体中解析:解析 continue语句的作用是:跳过循环体中剩余的语句而进行下一次循环,所以A选项错误。Break语句的作用是终止正在执行的switch流程,跳出switch结构或者强制终止当前循环,从当前执行的循环中跳出所以C、D选项错误。13.以下叙述中正确的是_。(分数:2.50)A.continue语句使得整个循环终止B.break语句不能用于提前结束for语句的本层循环C.使用break语句可以使流程跳出switch语句体D.在for语句中,continue与break的效果是一样的,可以互

15、换解析:解析 break语句通常用在循环语句和开关语句中。当break用手开关语句switch中时,可使程序跳出switch而执行switch以后的语句;当break语句用于dowhile、for、while循环语句中肘,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。A、B和D三个选项中均有错误。因此C选项正确。14.若有以下定义: int x10, *pt=x; 则对x数组元素的正确引用是_。(分数:2.50)A.pt+3B.*&x10C.*(pt+10)D.*(x+3)解析:解析 没有A选项的引用形式。

16、*与&放在一起作用抵消,所以B选项错误。*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。因此D选项正确。15.若有以下程序: #include stdio.h main( ) int i, s=0, t=1,2,3,4,5,6,7,8,9; for(i=0;i9;i+ =2) a+ =* (t+i); printf(%d/n,s); 则程序执行后的输出结果是_。(分数:2.50)A.20B.25C.45D.36解析:解析 统计19中的奇数和,此题考查指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组

17、的第i+1个元素。程序运行的结果是1+3+5+7+9=25。16.若有以下程序: #include stdio.h void fun(int *s, int n1, int n2) int i,j,t; i=n1; j=n2; while(ij) t=si; si=sj; sj=t; i+ +; j-; main( ) int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k10;k+ +) printf(%d,ak); printf(/n); 则程序的运行结果是_。(分数:2.50)A.43210

18、98765B.5678901234C.0987654321D.0987651234解析:解析 该程序首先给一维数组赋值,然后三次调用fun函数,其中fun(a,0,3);的功能是将一维数组中的第1个元素和第4个元素互换,第2个元素和第3个元素互换;fun(a,4,9);的功能是将一维数组中的第5个元素和第10个元素互换,第6个元素和第9个元素互换,第7个元素和第8个元素互换;fun(a,0,9);的功能是将将一维数组中的第1个元素和第10个元素互换,第2个元素和第9个元素互换依次类推。因此B选项正确。17.若有以下程序: #include stdio.h main( ) int s12=1,2

19、,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+ +) csi+ +; for(i=1;i5;i+ +) printf(%d,ci); printf(/n); 则程序的运行结果是_。(分数:2.50)A.2 3 4 4B.4 3 3 2C.1 2 3 4D.1 1 2 3解析:解析 在for(i=0;i12;i+)csi+;语句中,数组元素si的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。因此B选项正确。18.若有以下程序: #include stdio.h void fun(int a, int n) int t,i,j;

20、 for(i=1;in; i+ =2) for(j=i+2; jn; j + =2) if(ai aj) t=ai; ai=aj;aj=t; main( ) int c10=10,9,8,7,6,5,4,3,2,1,i; fun(c,10); for(i=0;i10;i+ +) printf(%d,ci); printf(/n); 则程序的输出结果是_。(分数:2.50)A.1,10,3,8,5,6,7,4,9,2,B.10,9,8,7,6,5,4,3,2,1,C.2,9,4,7,6,5,8,3,10,1,D.10,1,8,3,6,5,4,7,2,9,解析:解析 本题主要考查for的嵌套循环。

21、该题首先对一维数组进行初始化,c0到c9依次赋值为10到1;fun(c,10);语句调用fun函数,fun函数的功能是将一维数组偶数位元素的数值由小到大排序;最后将排好序的新的一维数组进行输出。因此D选项正确。19.若有以下程序: #include stdio.h main( ) int c6=10,20,30,40,50,60, *p,*s; P=c; s=&c5; printf(%d/n,s-P); 则程序运行后的输出结果是_。(分数:2.50)A.5B.50C.6D.60解析:解析 本题主要考查数组和指针。首先初始化一维数组c6,语句p=c;指将c0元素的地址赋给指针变量p,语句s=&c

22、5;指将c5元素的地址赋给指针变量s。程序最后输出s-p,即结果为5。因此A选项正确。20.若有以下程序: #include stdio.h main( ) int a3=0, i,j,k=2; for(i=0; ik; i+ +) for(j=0;jk;j+ +) aj=ai+1; printf(%d/n,a1); 则程序运行后的输出结果是_。(分数:2.50)A.0B.2C.1D.3解析:解析 该题首先初始化一维数组a3所有元素都为0;执行嵌套循环for语句,当i=0、j=0时,a0=a0+1=1;当i=0、j=1时,a1=a0+1=2;当i=1、j=0时,a0=a1+1=3;当i=1、j

23、=1时,a1=a1+1=3;因此D选项正确。21.有以下程序: #include stdio.h main( ) int a5=2,4,6,8,10, *p,* *k; P=a; k=&p; printf(%,*(p+ +); printf(%d/n,* * k); 程序运行后的输出结果是_。(分数:2.50)A.4 6B.4 4C.2 2D.2 4解析:解析 本题主要考查指针。首先通过p=a使p指向数组的第1个元素,所以输出2;在输出2以后,由于p+,即p就指向数组的第2个元素,* *k就是取出p所指向元素的值,而p指向的是数组的第2个元素,即输出4:因此D选项正确。22.以下叙述中正确的是

24、_。(分数:2.50)A.一条语句只能定义一个数组B.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元C.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式D.在引用数组元素时,下标表达式可以使用浮点数解析:解析 A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,也可以是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因此B选项正确。23.以下叙述中正确的是_。(分数:2.50)A.数组下标的下限是1B.数组下标的下限由数组中第一个非零元素的位置决定C.数组下标的下限由

25、数组中第一个被赋值元素的位置决定D.char c1, c2, *c3,c440;是合法的变量定义语句解析:解析 C语言规定,数组下标值的下限一律为0,对于一维数组amax(max是一个编译时可知的值)来说,它的第一个和最后一个元素分别是a0和amax-1。所以,数组下标值的下限与数组中元素的位置无关,故A、B、C选项错误。24.有以下程序: #include stdio.h #define N 4 void fun(int aN,int b) int i; for(i=0;iN;i+ +) bi = aii; main( ) int xN=1,2,3,4,5,6,7,8,9,10,yN,i;

26、fun(x, y); for(i=0;iN;i+ +) printf(%d, yi); printf(/n); 程序的运行结果是_。(分数:2.50)A.1,0,7,0,B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,解析:解析 该程序首先在定义变量时,对二维数组xN进行赋值操作;调用函数fun,函数fun的功能是将=维数组中的a0儿0、a11、a22和a33赋值给一维数组。最后将输出一维数组1,0,7,0,。25.有以下程序: #include stdio.h int fun(int (*s)4, int n, int k) int m,i; m=s0k; for(i=1;in

27、; i+ +) if(sikm) m=sik; return m; main( ) int a44=1,2,3,4, 11,12,13,14, 21,22,23,24, 31,32,33,34; printf(%d/n,fun(a,4,0); 程序的运行结果是_。(分数:2.50)A.4B.34C.31D.32解析:解析 本题重点考查二维数组名作为实参进行参数传递。在主函数中调用了fun函数,买参为二维数组名a和两个整数4、0,这样对应定义fun函数首部也有三种形式,这里采用第一种形式,也就是行指针,这样在fun函数对sij进行操作实际上就是对主函数中的aij进行操作,再分析fun函数的作用,其是求二维数组第0列中最大的那个元素。因此C选项正确。26.有以下程序: #include stdio.h main( ) int a44=1,4,3,2, 8,6,5,7, 3,7,2,5, 4,8,6,1; int i,j,k,t; for(i=0;i4; i+ +) for(j=0; j3; j+ +) for(k=j+1;k4; k+ +) if(aji ak

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

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