二级C语言笔试-465
(总分91, 做题时间90分钟)
一、选择题
1. 
与十进制数200等值的十六进制数为______。
   A) A8    B) A4    C) C8  D) C4
A  B  C  D 
    分值: 1
答案:C
[解析] 十进制数200转换成二进制数,其结果为1100 1000,1100 1000对应了十六进制数C8。
因此答案选C。
2. 
下列叙述中正确的是______。
   A) 一个逻辑数据结构只能有一种存储结构
   B) 数据的逻辑结构属于线性结构,存储结构属于非线性结构
   C) 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理效率
   D) 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理效率
A  B  C  D 
    分值: 2
答案:D
[解析] 逻辑结构是反映了元素之间的逻辑关系的数据结构,存储结构是逻辑结构在计算机中
的存放形式,它们都具有线性结构和非线性结构。逻辑结构有顺序、链接、索引等存储结构,采用不同的存储结构,数据处理的效率不同。
3. 
对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是______。
   A) 冒泡排序为n/2    B) 冒泡排序为n
   C) 快速排序为n        D) 快速排序为n(n-1)/2
A  B  C  D 
    分值: 2
答案:D
[解析] 存最坏情况下,快速排序退化为冒泡排序,冒泡排序法的基本过程参见本题的理论链
接。冒泡排序的每个元素都要与它前面的元素相比较,因此比较次数为(n-1)+(n-2)+…+1=n(n-1)/2。
4. 
冒泡排序在最坏情况下的比较次数是______。
   A) n(n+1)/2    B) nlog2n    C) n(n-1)/2    D) n/2
A  B  C  D 
    分值: 2
答案:C
[解析] 在最坏情况下冒泡排序法需要比较的次数为n(n-1)/2。
5. 
关于结构化程序设计原则和方法描述错误的是(    )。
   A) 选用的结构只准许有一个入口和一个出口
   B) 复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
   C) 不允许使用GOTO语句
   D) 语言中所没有的控制结构,应该采用前后一致的方法来模拟
A  B  C  D 
    分值: 2
答案:C
[解析] 限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。
6. 
下列描述中正确的是______。
   A) 程序就是软件
   B) 软件开发不受计算机系统的限制
   C) 软件既是逻辑实体,又是物理实体
   D) 软件是程序、数据与相关文档的集合
A  B  C  D 
    分值: 2
答案:D
[解析] 计算机软件是包括程序、数据及相关文档的完整集合,软件是一种逻辑实体,软件的开发、运行对计算机系统具有依赖性.受计算机系统的限制。
7. 
简单的交换排序方法是(    )。
   A) 快速排序    B) 选择排序    C) 堆排序    D) 冒泡排序
A  B  C  D 
    分值: 2
答案:D
[解析] 所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。
8. 
SQL语言又称为(    )。
   A) 结构化定义语言  B) 结构化控制语言  C) 结构化查询语言  D) 结构化操纵语言
A  B  C  D 
    分值: 1
答案:C
[解析] 结构化查询语言(Structured Query Language,简称SQL)是集数据定义、数据操作和数据控制功能于一体的数据库语言。
9. 
下列说法正确的是(    )。
   A) 一个C程序可以有多个主函数
   B) 一个C语言的函数中只允许有一对花括号
   C) C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内
   D) 在对C程序进行编译时,可以发现注释行中的拼写错误
A  B  C  D 
    分值: 2
答案:C
[解析] 本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C语言的标识符是由字母、数字、下划线组成的,可以是大写字母,而且标识符区分字母的大小写;③C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释行中的错误。
10. 
设变量已正确定义并赋值,以下正确的表达式是______。
(A) x=y*5=x+z
(B) int(15.8%5)
while语句里的if(C) x=y+z+5,++y
(D) x=25%5.0
A  B  C  D 
    分值: 1
答案:C
11. 
以下选项中不属于字符常量的是______。
(A) 'C'
(B) "C"
(C) '\xCC'
(D) '\072'
A  B  C  D 
    分值: 1
答案:B
12. 
阅读以下程序
   #include  <stdio.h>
   main()
       int case;float printF;
   printf("请输入2个数:");
   scanf("%d  %f",&case,&printF):
   printf("%d  %f\n",case,printF);
   
   该程序在编译时产生错误,其出错原因是
   A) 定义语句出错,case是关键字,不能用作用户自定义标识符
   B) 定义语句出错,PrintF不能用作用户自定义标识符
   C) 定义语句无错,scanf不能作为输入函数使用
   D) 定义语句无错,printf不能输出case的值
A  B  C  D 
    分值: 1
答案:A
[解析] 标识符不能与C编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名,否则程序在编译时会出现错误。题目源程序中使用了已经预定义的关键字case,所以将出现错误。
13. 
有以下程序
   int add(int a,int b)return(a+b);
   main()
   int  k,(*f)(),a=5,b=10;
   f=add;
   
   则以下函数调用语句错误的是
   A) k=(*f)(a,b);    B) k=add(a,b);
   C) k=*f(a,b);    D) k=f(a,b);
A  B  C  D 
    分值: 1
答案:C
[命题目的] 函数的调用。
   [解题要点] 在语句“k=*f(a,b)”中,由于“()”的优先级高于“*”,所以“*f(a,b);”表示其返回类型为指针的带有两个整型参数的函数。
14. 
若变量a,b已正确定义,且b已正确赋值,则合法的语句是(    )。
   A) b=double(B) ;    B) ++b;    C) a=a++=5;    D) a=double(B);
A  B  C  D 
    分值: 2
答案:B
[解析] 要解答此题只要知道两个知识点:①在C语言中规定进行强制类型转换的格式是:(double)变量名;②在C语言中不允许给表达式赋值。
15. 
若有定义int x, y;,并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是______。
   A) (x-y>0)
   B) (x-y<0)
   C) (x-y<0||x-y>0)
   D) (x-y==0)
A  B  C  D 
    分值: 1
答案:C
[解析] 条件运算表达式:“表达式1?表达式2:表达式3”,但表达式1的值为非0时,此时表达
式2的值就是整个条件表达式的值,反之为表达式3的值。故其等价于选项C中的逻辑或表达式。
16. 
设有定义:float a=2,B=4,h=3;,以下C语言表达式中与代数式计算结果不相符的是 ______。
   A) (a十B) *h/2      B) (1/2)*(a+B) *h
   C) (a+B) *h*1/2      D) h/2*(a+B)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。