


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二级C语言分类模拟题520(总分:51.50 ,做题时间:90分钟)一、选择题(总题数:35,分数:51.50)1. 若有以下定义;char a ; int b; float c ; double d ;则表达式“ a*b+d-c”值的类型为 (分数:1.00)A. floatB. intC. charD. doubleV解析:2. 表达式:(int)(double)9/2)-(9)%2的值是。(分数:1.00 )A. 0B. 3VC. 4D. 5解析:解析本题考查了强制类型转换。9/2为double型,所以结果为4.5,又强制转换为整型,所以结 果为4。9%2为取余运算,结果为1。最终结果4
2、-仁3。3. 有以下程序#include < stdio.h >fun(int x,int y) static int m=0,i=2;i+=m+1; m=i+x+y; return m;main() int j=1,m=1,k;k=fun(j,m); printf("%d,",k);k=fun(j,m); printf("%d/n",k);执行后的输岀结果是。(分数:1.00 )A. 5,11VB. 5,5C. 11,11D. 11,5解析:解析声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该 变量保留上一次
3、函数调用结束时的值。本题子函数fun中的变量i和m均为静态局部变量。因此第一次调用fun函数,返回m的值为5,第二次再调用fun函数时,i的值为3,m的值已经是5 了,所以执行i+=m+1, i的值变为9,m=i+x+y=9+1+1=11,故本题答案为 A。4. 有以下程序:#include < stdio.h >void fun(int*s,int n1,int n2)int i,j,t;i=n1;j=n2;while(i < j)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
4、(a,4,9);fun(a,0,9);for(k=0;k < 10;k+)printf("%d",ak);printf("/n");程序运行后的输出结果是 。(分数: 1.00 )A. 4321098765B. 5678901234VC. 0987654321D. 0987651234解析: 解析 该程序首先给一维数组赋值,然后三次调用 fun 函数,其中 fun(a,0,3) ;功能是将一维数 组中第 1 个元素和第 4 个元素互换,第 2 个元素和第 3 个元素互换;其中 fun(a,4,9) ;功能是将一维数组 中第5个元素和第10个元素互换
5、,第6个和第9个元素互换,第7个元素和第8个元素互换;其中fun(a,0,9);功能是将将一维数组中第1个元素和第10个元素互换,第2个元素和第9个元素互换依此类推。因此B 选项正确。5. 设有如下定义:struct skint m;float x;data,*q;若要使q指向data中的m域,正确的赋值语句是 。(分数: 2.00 )A. q=&data.m;B. *q=data.m;C. q=(struct sk*)&data.m;VD. q=(struct sk*)data.m;解析:6. 有以下程序:#include < stdio.h >#include
6、< stdlib.h >main()FILE * fp;char ch, str5;if(fp=fopen("file.txt", "wb+")=NULL)printf("error!/n"); exit(0);ch=getchar();while(ch!="!")fputc(ch, fp);ch=getchar();rewind(fp);dofgets(str, 4, fp);puts(str);while(!feof(fp);fclose(fp);程序运行时输入:c:/test! v回车,则程序的输
7、岀结果是 。(分数:1.00 )A. c:/testVB. c:/testC. c:testD. c:/test解析:解析分析程序可知,程序是首先以可写方式打开文件file.txt,然后使用getchar()逐个读入输入的字符并写到文件file.txt 中,直到输入的字符是”!",停止写入文件;然后使用 rewind()将文件指针 定位到文件开头位置,再调用 fgets()函数,将文件中的内容读入 str字符数组中,再用puts()输出,直 到遇到文件结尾符,关闭文件。其中写入文件时是逐个写入的,而读出时调用fgets(str, 4, fp) ,由此可知fgets至多读取3个字符到s
8、tr,然后在结尾自动加上"/0"字符,作为字符串的结尾标志, 使用puts() 输出时,输出3个字符并完成换行,当输入 c:/test!v回车时,输出结果如下:c:/test故答案为A选项。7. 对下列二叉树进行中序遍历的结果是 。(分数:1.00 )A. ACBDFEG VB. ACBDFGEC. ABDCGEFD. FCADBEG解析:8. 已知字母a的ASCII码为十进制数97,下面程序的输出结果是 。#include v stdio.h >main()char cl,c2;c1="a"+"6"_"0"
9、c2="a"+"3"_"0"printf("%c,%c/n",c1,c2);(分数:2.00 )A. 输岀无定值B. d,eC. e,fD. g,d V解析:9. 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是(分数:1.00 )A. C语言程序仅可以编译执行VB. C语言程序仅可以解释执行C. C语言程序既可以编译执行又可以解释执行D. 以上说法都不对解析:解析 解释执行是计算机语言的一种执行方式。 由解释器现场解释执行, 不生成目标程序。 如 BASIC 便是解释执行。一般解释执行效率
10、较低,低于编译执行。而C 语言程序是经过编译生成目标文件然后执行的,所以 C 语言程序是编译执行。10. 有以下程序:#include < stdio.h >main() int a,b;for(a=1,b=1;a< =100;a+) if(b > =20)break;if(b%3=1)b=b+3;continue;b=b-5;printf("%d/n",a);程序运行后的输出结果是 。(分数: 1.00 )A. 10B. 9C. 8 VD. 7解析:解析首先注意for循环的控制条件,当b> =20或者a> 100则跳出for循环,也即b
11、< 20且a<=100时执行for循环。第一次进入循环a=1, b=1均满足循环条件,但 b%3=1条件满足,故执行 b=b+3,得到b=4,注意有continue,所以后面语句不执行,直接跳转到a+这个语句,所以第一次循环完之后 a=2, b=4;进入第二轮循环,b%3=1也是满足的,故再次 b=b+3,此轮循环执行之后 a=3,b=7,进入下一轮。此 后和前面循环同理,都是 b%3=1 满足,因为每次都是加 3,而之后又去模 3,且都跳过 for 后面语句直接 执行a+,所以,一直循环到 b=22跳出for循环,此时a为8。综合起来就是,每次循环b增加3, a增加I, 且当b&
12、gt;22时跳出循环,结束程序。所以b从1增加到22,有(22-1)/3 =7 ,所以a=1+7=8。因此C选 项正确。II. 若以“a+”方式打开一个已存在的文件,以下叙述正确的是 。(分数: 1.00 )A. 文件打开时,原有文件内容不被删除,可以进行添加和读操作VB. 文件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作C. 文件打开时,原有文件内容不被删除,位置指针移到文件中间,可以进行重写和读操作D. 文件打开时,原有文件内容被删除,只可进行写操作解析:解析C语言文件打开时,打开方式“ a+”表示打开一个文本文件,从文件开始位置读,在文件尾 部添加数据,如果指
13、定的文件不存在,系统将使用调用 fopen() 时指定的文件名创建一个新的文件,如果 指定的文件存在,那么文件原有内容将被保存,新的数据追加到原有文件之后,本题答案为A。12. 若有以下定义和语句:#include < stdio.h >char s110="abcd!",*s2="/n123/"printf("%d%d/n",strlen(s1),strlen(s2);则输出结果是 。(分数: 1.00 )A. 10 7B. 10 5C. 5 5VD. 5 8解析: 解析 strlen 函数返回字符串的长度,求字符串长度
14、时,遇到结束标识 "/0" 为止,但是长度不包 括结束标识。字符数组 s1的后5个元素没有赋值,都为"/0",即"abed!"后为"/0",所以strlen(s1) 的值为 5 。字符指针 s2 所指向的字符串中, /n 为转义字符换行符,表示 1 个字符, / 也为转义字符,代表 / , 也是1个字符,其后为字符串结束标识"0"所以strlen(s2)的值也为5。因此C选项正确。13. 为了避免在嵌套的条件语句if-else中产生二义性,C语言中规定的if-else 配对原则是。(分数: 1.
15、00 )A. else 子句与缩排位置相同的 if 配对B. else子句与其之前最近的未被配对的if配对 VC. else 子句与其之后最近的 if 配对D. else 子句与同一行上的 if 配对解析:14. 若有以下程序#include < stdio.h >#define N 4void fun(int aN,int b,int flag) int i,j;for(i=0;i < N;i+) bi=ai0;for(j=1;j < N;j+)if(flag?(bi > aij):(bi< aij)bi=aij;main() int xNN=1,2,3,
16、4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i;fun(x,y,1);for(i=0;i< N;i+)printf("%d,yj);fun(x,y,0);for(i=0;i< N;i+)printf("%d,",yi);printf("/n"); 则程序的输出结果是 。(分数: 2.00 )A. 1,5,9,13,4,8,12,16, VB. 4,8,12,16,1,5,9,13,C. 1,2,3,4,13,14,15,16,D. 13,14,15,16,1,2,3,4,解析: 解析 flag 为 1 求
17、出每行的最小值, flag 为 0 求出每行的最大值,所以选择A。15. 以下叙述正确的是(分数: 1.00 )A. 在 C 语言中,只能用 "/*" 和"*/" 对程序进行注释B. 在 C 语言注释语句中, "/" 和"*" 之间不可以有空格 VC. 注释语句只能使用西文D. 在 C 程序中,注释说明只能位于一条语句的后面解析:解析在C语言程序段中可以对程序进行注释,注释部分必须用“ /* ”和“*/”括起来, 其中,“/”和“*”之间不可有空格,注释可以是西文,也可以是中文,注释说明语同步以出现在程序的任意位置
18、。综 上所述,本题的答案为 B)。16. 若有定义语句:“ int x=10; ”,则表达式 x-=x+x 的值为 。(分数: 1.00 )A. -20B. -10 Vc.oD. 1O解析:解析表达式x=-x+x可以写成x=x-(x+x),所以x的值为-10。17. 在高级语言中,对文件操作的一般步骤是 。(分数:1.00 )A. 打开文件- >操作文件- >关闭文件 VB. 操作文件- >修改文件- >关闭文件C. 读写文件- >打开文件- >关闭文件D. 读文件- >写文件- >关闭文件解析:18. 有以下程序:#include < s
19、tdio.h >#include < string.h >main() char str20="One* World", "One* Dream!",* p=str1;printf("% d,", strlen(p); printf( "% s/n", p);程序运行后的输岀结果是 。(分数:2.00 )A. 10, One * Dream! VB. 9, One * Dream!C. 9, One * WorldD. 10, One * World解析:解析p是指向二维字符数组第二行"
20、One Dream”的数组指针,所以长度是10,打印输出的也是该字符串。19. 有以下计算公式若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是 。(分数:1.00 )A. if(x> =0) y=sqrt(x);else y=sqrt(-x);B. y=sqrt(x);if(x< 0) y=sqrt(-x); VC. if(x> =0) y=sqrt(x);if(x < 0) y=sqrt(-x);D. y=sqrt(x > =0 x:-x);解析:解析应该先判断x是正数还是负数,然后再调用sqrt函数,B选项开始没有判断,所以B错误。
21、20. 有以下程序:#include < stdio.h >main() int a=7;while(a-);printf("%d/n", a);程序运行后的输岀结果是 。(分数:1.00 )A. -1VB. 0C. 1D. 7解析:解析此题考查a-和-a之间的区别,当while(a-)为真循环执行,a-是执行再减1,所以答案 选择A。21. 若有定义“ float a=25, b, *p=&b;",则下列对赋值语句“ *p=a; ”和“ p=&a;"的正确解释为 。(分数: 2.50 )A. 两个语句都是将变量 a 的值赋予
22、变量 pB. *p=a是使p指向变量a,而p=&a是将变量的值赋予变量指针pC. *p=a是将变量a的值赋予变量b,而&a是使p指向变量a VD. 两个语句都是使p指向变量a解析:解析“p”是指针变量,指向一个地址:“*p”为p指针所指向地址的内容。“&”是取变量地址。22. 若变量已正确定义为 int 型,要通过语句scanf("%d, %d, %d", &a, &b, &c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(注:代表一个空格符)。(分数: 3.00 )A. 1,2, 3V回车B. 1, 2, 3
23、 V回车C. 1, 2, 3V回车。.1口2口3 V回车V解析: 解析 本题考查的是格式化输入函数 scanf() 基本用法。使用该语句时,要求除格式控制符以外的 字符都要原样输入,“,”为非格式符,要原样输入。选项D中没有输入非格式符“,”,所以是不正确的。23. 有以下程序:#include v stdio.h >void f(int b)int i;for(i=2;i V 6;i+)bi*=2;main()int a10=1,2,3,4,5,6,7,8,9,10,i;f(a);for(i=0;i V10;i+) printf("%d,",ai); 程序的运行结果
24、是 。(分数: 2.50 )A. 1,2,3,4,5,6,7,8,9,10,B. 1,2,6,8,10,12,7,8,9,10,VC. 1,2,3,4,10,12,14,16,9,10,D. 1,2,6,8,10,12,14,16,9,10,解析: 解析 数组名是常量,表示的是数组首元素的地址。当执行 f(a) 的时候,由于传递的是首地址, 相当于直接对数组 a 进行操作, 所以从数组 a 的第 3 个元素 a2 到元素 a5 ,每个元素值扩大两倍, 因此 B 选项正确。24. 下列叙述中正确的是 。(分数: 2.50 )A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B. 在循
25、环队列中,只需要队头指针就能反映队列中元素的动态变化情况C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D. 循环队列中元素的个数是由队头指针和队尾指针共同决定V解析:解析循环队列有队头和队尾两个指针,但是循环队列仍是线性结构,因此A错误;在循环队列中需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,因此B与C错误,故本题答案为D25. 有以下程序:#include < stdio.h >int fun(int x,int n)static int sum=0,i;for(i=0;i < n;i+)sum+=xi;return sum;main()i
26、nt a=1,2,3,4,5,b=6,7,8,9,s=0;s=fun(a,5)+fun(b,4); printf("%d/n",s);程序执行后的输出结果是 (分数: 1.00 )A. 55B. 50C. 45D. 60 V解析: 解析 内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45 ,s=45+15=60。因此D选项正确。26. 数据库系统的核心是 。(分数: 2.00 )A. 数据模型B. 数据库管理系统 VC. 数据库D.
27、 数据库管理员解析: 解析 数据库管理系统是负责数据库中的数据组织和数据操纵数据维护、控制及保护的数据服务。 它是一种系统软件,是数据库系统的核心。27. 已知大写字母 A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量"/101"是( ) 。(分数: 1.00 )A. 字符 A VB. 字符 aC. 字符 eD. 非法的常量解析: 解析 本题的关键是八进制 101 的十进制是多少。八进制的 101 转换为十进制为 65,也就是字符 A 的 ASCII 码。故应该选择 A。28. 下列选项中,能正确定义数组的语句是 。(分数: 1.00 )A
28、. int num0.2008;B. int num;C. int N=2008;int numN;D. #define N 2008int numN;V解析:解析通过define进行宏定义,将 N赋值为2008,然后定义一个数组,整型长度为2008,所以本题答案为 D。29. 在软件设计中不使用的工具是 。(分数: 2.50 )A. 系统结构图B. PAD 图C. 数据流图(DFD图) VD. 程序流程图解析: 解析 系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的
29、。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图(DFD图)是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑 功能,因此它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以本题答案为C。30. 以下选项中正确的语句组是 。(分数: 1.00 )A. char*s;s="BOOK!"VB. char*s;s="BOOK!"C. char s10;s="BOOK!"D. char s;s="BOOK!"解析: 解析 字符指针可以用字符串直接赋值,字符数组不可以。所以选择A。31. 在结构化程序设计思想提出之前, 在程序设计中曾强调程序的效率。 与程序的效率相比, 人们更重视程 序的(分数: 1.00 )A. 安全性B. 一致性C. 可理解性 VD. 合理性解析: 解析 结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其 二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。32. 有以下程序main()char a="a", "b" , "c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《皮肤烫伤护理指南》课件
- 《设备保养与维护教程》课件
- 《微波炉的奇妙用途》课件
- (13)-考点13 近义词辨析(一)
- 精湛技艺课件:探索工匠精神的内涵与价值
- 三年级道德与法治下册 第二单元 我在这里长大 7请到我的家乡来教学设计2 新人教版
- 九年级道德与法治上册 第二单元 行动的指南 第五课“三个代表”重要思想教学设计 教科版
- 西安美术学院《神经药理学》2023-2024学年第一学期期末试卷
- 江西生物科技职业学院《中国文化与文学精粹》2023-2024学年第一学期期末试卷
- 铁门关职业技术学院《媒介集团研究》2023-2024学年第二学期期末试卷
- 种包谷的老人(2021湖南长沙中考记叙文阅读试题含答案)
- 电梯的中修和大修工作指导规范
- 小学科学课堂教学设计策略课件
- 中药饮片出库单
- 宿舍楼施工方案方案
- 甲醇-水精馏塔
- 中国话剧史专题知识
- GB/T 15544.1-2023三相交流系统短路电流计算第1部分:电流计算
- 大学物理(一)智慧树知到答案章节测试2023年湖南大学
- 道德与法治项目化学习案例
- GB/T 90.3-2010紧固件质量保证体系
评论
0/150
提交评论