二级C语言分类模拟题511_第1页
二级C语言分类模拟题511_第2页
二级C语言分类模拟题511_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、二级 C 语言分类模拟题 511( 总分: 57.00 ,做题时间: 90 分钟 )一、选择题 (总题数: 35,分数: 57.00)1. 下列叙述中正确的是 。(分数: 1.00 )A. 算法就是程序B. 设计算法时只需要考虑数据结构的设计C. 设计算法时只需要考虑结果的可靠性D. 以上3种说法都不对V解析:解析程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。 设计算法时要考虑到数据结构的设计,但是不仅是要考虑到数据结构的设计,还要考虑到其他的程序结构 的问题。设计算法时不能只考虑结果的正确性和可靠性,还需要考虑到程序的时间冗余度等方面。所以答 案选择

2、 D。2. 若有以下程序段:struct stint n;struct st*next; stmct st a3=5,a1,7, a2,9,"/0",*p;p=a0; 则以下选项中值为 6 的表达式是 (分数: 1.00 )A. p- > nB. (*p).nC. p- > n+D. +(p- >n) V解析:解析本题考查结构体变量的引用,其中a为定义的结构体数组,D选项中p- >n为5, +(p- >n)为 6,所以 D 选项正确。3. 下面程序输出的结果是 。main() int i;int a33=1,2,3,4,5,6,7,8,9; f

3、or(i=0; i printf("% d", a2-ii); (分数: 1.00 )A. 1 5 9B. 7 5 3VC. 3 5 7D. 5 9 1解析: 解析 本题用循环的方法考查对数组概念的掌握。首先,当 i=0 时,数组中的位置是 a20=7,当然,如果用排除法,就不用考虑后面的循环,因为在4个选项中,第1个数为7的选项只有B本题执行第 2次循环时, i 的值为 1,则 printf 函数中的数组指向为 a11=5 ,依次循环,可求出答案。4. 函数 ftell(fp) 的作用是 。(分数: 2.50 )A. 得到 fp 所指向文件的当前读写位置 VB. 初始化流

4、式文件的位置指针C. 移动流式文件的位置指针D. 以上答案均正确解析: 解析 位置指针当前值函数 ftell() 的基本调用格式为 ftell(fp) 。ftell 函数的功能: 得到 fp 所指向文件的当前读写位置, 即位置指针的当前值, 如果函数的返回值为 -1L , 表示出错。5. 设有如下函数定义#include < stdio.h >int fun(int k if(k < 1) return 0;else if(k=1) return 1;else return fun(k-1)+1;若执行调用语句“ n=fun(3); ”,则函数 fun 总共被调用的次数是 。

5、(分数: 1.00 )A. 3VB. 2C. 4D. 5解析:解析首先调用“n=fun(3) ”,3被当作参数传递进去,进行了第一次调用,3被当作参数传进去后,程序会执行语句“ else return fun(k -1)+1; ”进行第二次调用,参数是 3-1 也就是 2, 2 被当作参数 传进去后,程序会执行语句“ else return fun(k - 1)+1; ”进行第三次调用,参数是 2-1 也就是 1, 1 被当 作参数传进去后,程序会执行语句“ else if(k=1)return 1; ”不再递归调用,因此最终结果为 3 次,选 项 A 正确。6. 若变量已正确定义,在if(W

6、)printf("%d/n",k);中,以下不可替代 W的是。(分数: 2.50 )A. a <> b+c VB. ch=getchar()C. a=b+cD. a+解析:解析选项A是非法的表达式,C语言中没有“<>”运算符。7. 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是(分数: 2.00 )A. auto 和 register VB. extern 和 registerC. auto 和 staticD. static和 register解析:解析在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。8. 下列程序的输出结果是

7、 。#include < stdio.h >void main() int a=0,b=1,c=2;if(+a > 0|+b > 0)+c;printf("%d,%d,%d",a,b,c);(分数: 2.50 )A. 0,1,2B. 1,2,3C. 1,1,3VD. 1,2,2解析:解析本题考查if语句。先判断if语句的条件是否成立,因为“ +a=1>0”,所以条件成立,又 因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算对象的真假,即 不进行+b操作,就可以直接得出整个表达式的值为逻辑1,执行下面的+c。9. 若

8、已定义x和y为double类型,则表达式“ x=1, y=x+3/2 ”的值是 。(分数: 1.00 )A. 1B. 2C. 2.0VD. 2.5解析: 解析 本题中的表达式为逗号表达式,此表达式的结果为 y=x+3/2 的值。 y=x+3/2 的运算次序为: 先进行 3/2 运算,两个运算数均为整型量, 结果也为整型量, 等于 1 ,此结果将与 double 类型数进行相加, 要转换为 1.00.00 。最后将 x 的值 1 转换成 double 型,与 1.00.00 相加。10. 在数据库设计中,将 E-R图转换成关系数据模型的过程属于 。(分数: 1.00 )A. 需求分析阶段B. 概

9、念设计阶段C. 逻辑设计阶段 VD. 物理设计阶段解析:解析将E-R图转换成关系数据模型是把图形分析出来的联系反映到数据库中,即设计出表,因此 属于逻辑设计阶段,答案为C。11. C 语言中,字符 (char) 型数据在微机内存中的存储形式是 。(分数: 1.00 )A. 反码B. 补码C. EBCDIC 码D. ASCII 码 V解析: 解析 ASCII 码其他 3个是用来进行数值处理的。12. 算法分析的目的是 。(分数: 2.50 )A. 找出数据结构的合理性B. 找出算法中输入和输出之间的关系C. 分析算法的易懂性和可靠性D. 分析算法的效率以求改进 V解析: 解析 算法分析是指对一个

10、算法的运行时间和占用空间做定量的分析,计算相应的数量级,并用时 间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执 行效率。13. 下面 4 个选项中,均是不合法的用户标识符的选项是 。(分数: 1.00 )A. A P_0 doB. float la0_AC. b-a goto intVD. _123 temp int解析:解析合法的标识符只能由字母、数字或下划线组成。C选项中b-a出现非法字符“ -”;goto和int 均为关键字。故本题答案为C。14. 以下关于结构化程序设计的叙述中正确的是(分数: 1.00 )A. 一个结构化程序必须同时由顺序

11、、分支、循环三种结构组成B. 结构化程序使用 goto 语句会更便捷C. 在C语言中,程序的模块化是利用函数实现的VD. 由 3 种基本结构构成的程序只能解决小规模的问题 解析:解析 结构化程序设计由顺序、分支和循环 3 种结构组成,但不是必须在每个程序中都同时包含这 3 种结构,这 3 种基本结构构成的程序也可以解决大规模的问题。结构化程序设计应该尽量避免使用 goto 无条件转向语句,这个语句会破坏结构化程序的总体结构。故选项A、B、D错误。C语言中,程序模块化是利用函数来实现的。15. 有以下程序:#include < stdio.h >main()char c1="

12、;A", c2="Y" printf("%d, %d/n", c1, c2); 程序的输出结果是 。(分数: 2.50 )A. 因输出格式不合法,无正确输出B. 65, 90C. A, YD. 65, 89 V解析:解析直接输出A和Y的ASCII值,他们的ASCII值分别为65和89,因此正确答案为 D项。16. 有以下程序:#include < stdio.h >main() char c1, c2, c3, c4, c5, c6; scanf("%c% c% c%c",c1, c2, c3, c4);c5=g

13、etchar(); c6=getchar();putchar(c1); putchar(c2); printf("%c% c/n", c5, c6); 程序运行后,若从键盘输入 (从第 1列开始 ): 123<回车>45678<回车> 则输出结果是 (分数: 2.00 )A. 1267B. 1256C. 1278D. 1245 V解析: 解析 putchar(c1) 输出 1, putchar(c2) 输出 2, printf("%c% c/n", c5, c6) 输出 45。17. 下列选项中不属于结构化程序设计原则的是 。(分

14、数: 2.50 )A. 可封装 VB. 自顶向下C. 模块化D. 逐步求精解析: 解析 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用go to 语句,因此本题答案为 A。18. 若有以下程序:#include < stdio.h > int *f(int *s,int *t) int *k;if(*s < *t) k=s; s=t; t=k; return s;main() int i=3,j=5, *p=&i, *q=&j,*r;r=f(p,q); printf("%d,%d,%d,%d,%d/n",i,j,*p,*q,

15、*r);则程序的输岀结果是。(分数:2.00 )A. 3,5,5,3,5B. 3,5,3,5,5VC. 5,3,5,3,5D. 5,3,3,5,5解析:解析在主函数中分别给整型变量i、j和指针型变量p、q赋初值,并声明指针变量r;调用f函数,并将实参变量p和q的值传递给形参变量 s和t,而且f函数是指针型函数,即函数的返回值是一个 地址。在f函数中,如果条件成立,则将指针变量s和t互换,并且将指针 s的地址返回主函数。最后输出i,j,*p,*q,*r 的值,即3,5,3,5,5 。因此B选项正确。19. 在面向对象方法中,描述的是具有相似属性与操作的一组对象。(分数:2.50)A. 属性B.

16、事件C. 方法D. .类 V解析:解析类(class)描述的是具有相似属性与操作的一组对象,具体对象是类的实例。20. 若已建立以下链表结构,指针p、s分别指向如图所示结点:则不能将s所指结点插入到链表末尾的语句组是 。(分数:1.00 )A. p=p- > next:s- > next=p;p- > next=s; VB. s- > next="/0"p=p-> next;p- > next=s;C. p=p- > next;s- > next=p- > next;p- >next=s;D. p=(*p). ne

17、xt;(*s). next=(*p). next;(*p). next=s;解析:解析本题考查向链表中插入结点。 A选项中,执行语句p=p- >next;后指针p指向data F所在的 结点。执行语句s- >next=p ;后data F所在的结点移动到指针 s所指结点之后。执行语句 p- >next=s ; 后指针s所指结点又回移到data F所在的结点之后,与题目要求不符,语句显然是错误的。21. 逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是 。(分数:1.00 )A. 关系模型VB. 谓词模型C. 物理模型D. 实体一联系模型解析:解析逻辑模型是面向数据库系统的

18、模型,着重于在数据库系统一级的实现。成熟并大量使用的逻 辑模型有层次模型、网状模型、关系模型和面向对象模型等。22. 以下叙述中正确的是。(分数:1.00 )A. if语句只能嵌套一层B. if子句和else子句中可以是任意的合法的 C语句 VC. 不能在else子句中再嵌套if语句D. 改变if-else语句的缩进格式,会改变程序的执行流程解析:解析A选项中,if语句的嵌套没有规定层数; C选项中,可以在else子句中再嵌套if语句;D 选项中,改变 if-else 语句的缩进格式,不会改变程序的执行流程,但需要注意 if 和 else 的配对问题。 因此B选项正确。23. 若希望下列的程序

19、运行后输出 25,程序空白处的正确选项是 。main()int id=50, a=7, 4, 10, 5, 8;forj+=ai;printf("%d", j-40);(分数: 2.50 )A.i=1; i< 4; +iB.i=1; i< 3; +iC.i=4; i> 2; i-D.i=2; i< 4; +iV解析: 解析 要想使程序输出 25,则 j-40=25 , j=65 ,而 j 初值是 50,所以填入 for 循环的语句,使引 用的数组元素累加 65-50=15即可。D选项中,i下标从0开始,i=2指向第3个数50+a2=50+10=60,

20、继 续循环 60+a3=60+5=65 ,此时 i=4 跳出,循环结束。24. 有以下程序:#include < stdio.h >main() FILE*fp;int i,a6=1,2,3,4,5,6;f=fopen("d2.dat","w+");for(i=0;i < 6;i+)fprintf(fp,"%d/n",ai);rewind(fp);for(i=0;i < 6;i+)fscanf(fp,"%d",a5-i);fclose(fp);for(i=0;i < 6;i+)prin

21、tf("%d,",ai);程序运行后的输出结果是 。(分数: 1.00 )A. 1,2,3,4,5,6,B. 6,5,4,3,2,1,VC. 4,5,6,1,2,3,D. 1,2,3,3,2,1,解析: 解析 本题考查文件操作函数 fprintf 和 rewind 函数。 rewind 函数将文件内部的位置指针重新指向一个流(数据流/文件)的开头,程序首先是将数组a的六个数写入d2文件中,然后又将a数组从后往前覆盖到d2中的内容,所以结果为“ 6,5,4,3,2,1,”,选项 B正确。25. 有以下程序段:char ch;int k;ch="a"k=12

22、;printf("%c,%d,",ch,ch,k);printf("k=%d/n",k);已知字符 a 的 ASCII 十进制代码为 97,则执行上述程序段后输出结果是 。(分数: 2.00 )A. 因变量类型与格式描述符的类型不匹配输出无定值B. 输出项与格式描述符个数不符,输出为零值或不定值C. a, 97, 12k=12D.a , 97, k=12 V解析:26. 将 E-R 图转换为关系模式时,实体和联系都可以表示为 。(分数: 1.00 )A. 属性B. . 键C. 关系 VD. . 域解析:解析从E-R图到关系模式的转换是比较直接的,实体与联

23、系都可以表示成关系,E-R图中属性也可以转换成关系的属性。所以选择 C 选项。27. 以下选项中,能表示逻辑值“假”的是 。(分数: 1.00 )A. 1B. 0.000001C. 0 VD. 100.0解析: 解析 本题考查逻辑值假,在程序中非 0字符表示逻辑真, 0 表示逻辑假,所以答案选择C。28. 在16位编译系统上,若有定义“ int a=10, 20, 30, *p=&a;”,当执行“ p+; ”后,下列说法错误的是。(分数: 2.50 )A. p 向高地址移了一个字节VB. p 向高地址移了一个存储单元C. p 向高地址移了两个字节D. p 与 a+1 等价解析:解析因为

24、p是整型的指针变量,因此其移动一个位置即两个字节,故选择A选项。29. 下列叙述中正确的是 。(分数: 2.50 )A. 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B. 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C. 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化VD. 在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化解析: 解析 栈是先进后出的数据结构,在对栈操作的整个过程中,栈底指针不变,入栈与出栈操作均由 栈顶指针的变化来完成,因此本题答案C。30. 为了避免在嵌套的if-else语句中产生二义性,C语言规定与else子句配对是。(分数: 1.0

25、0 )A. 与其在同一行上的 if 子句B. 在其之后最近的不带 else 的 if 子句C. 与其缩排位置相同的 if 子句D. 在其之前最近的不带 else 的同层 if 子句 V解析: 解析 注意 if 与 else 的配对关系。原则是 if 总是与它上面最近的、未配对的 else 配对,因此答 案为D选项。31. 循环队列的存储空间为 Q(1:50) ,初始状态为 front=rear=50 。经过一系列正常的入队与退队操作后,front=rear=25 ,此后又正常地插入了一个元素,则循环队列中的元素个数为 。(分数: 1.00 )A. 51B. 50C. 49D. 1 V解析: 解析 循环队列是队列的一种顺序存储结构,用队尾指针 rear 指向队列中的队尾元素,用排头指 针 front 指向排头元素的前一个位置。 入队运算时, 队尾指针进 1( 即 rear+1) ,然后在 rear 指针指向的位 置插入新元素。当 front=rear=25 时可知队列空或者队列满,此后又正常地插入了一个元素说明之前队列 为空,所以插入操作之后队列里只有一个元素。故D 选项正确。32. 关于“ while( 条件表达式 ) 循环体”,以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论