2018年计算机二级C语言模拟题1
(总分:100.00,做题时间:120分钟)冒泡排序代码c语言
一、选择题
(每题1分,共40分)
(总题数:40,分数:40.00)
1.程序流程图中带有箭头的线段表示的是(     )。

(分数:1.00)
 A.图元关系
 B.数据流
 C.控制流 
 D.调用关系
解析:【解析】在数据流图中,用标有名字的带箭头线段表示数据流。在程序流程图中,用标有名字的带箭头线段表示控制流,因此本题答案为C)。
2.结构化程序设计的基本原则不包括(     )。

(分数:1.00)
 A.多态性 
 B.自顶向下
 C.模块化
 D.逐步求精
解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto 语句,多态性是面向对象的程序设计的思想,因此本题答案为A)。
3.软件设计中模块划分应遵循的准则是(     )。

(分数:1.00)
 A.低内聚低耦合
 B.高内聚低耦合 
 C.低内聚高耦合
 D.高内聚高耦合
解析:软件设计中,模块划分应遵循的准则是高内聚低耦合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的准则,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性高,易于理解和维护。模块之间的耦合应尽可能地低,模块的内聚应尽可能地 高,因此本题答案为B)。
4.算法的有穷性是指(     )。

(分数:1.00)
 A.算法程序的运行时间是有限的 
 B.算法程序所处理的数据量是有限的
 C.算法程序的长度是有限的
 D.算法只能被有限的用户使用
解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。算法的有穷性是指算法程序的运行时间是有限的,因此本题答案为A)。
5.在软件开发中,需求分析阶段产生的主要文档是(     )。

(分数:1.00)
 A.可行性分析报告
 B.软件需求规格说明书 
 C.概要设计说明书
 D.集成测试计划
解析:A )错误,可行性分析阶段产生可行性分析报告。C )错误,总体设计阶段产生概要设计说明书。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是需求分析阶段产生的主要文档,是后续工作如设计、编码等需要的重要参考文档。
6.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是(     )。

(分数:1.00)
 A.快速排序
 B.冒泡排序
 C.直接插入排序
 D.堆排序 
解析:快速排序、冒泡排序和直接插入排序在最坏情况下,比较次数都是n(n-1)/2,堆排序在最坏情况下的比较次数最少,是O(log2n),因此本题答案为D)。
7.下列关于栈的叙述正确的是(     )。

(分数:1.00)
 A.栈按“先进先出”组织数据
 B.栈按“先进后出”组织数据 
 C.只能在栈底插人数据
手机中at是什么文件夹
 D.不能删除数据
解析:栈是只允许在同一端进行插入和删除运算的线性表,按“先进后出”组织数据,因此本题答案为B)。
8.在数据库设计中,将E-R图转换成关系数据模型的过程属于(     )。

(分数:1.00)
 A.需求分析阶段
 B.概念设计阶段
 C.逻辑设计阶段 
 D.物理设计阶段
解析:将E-R图转换成关系数据模型是把图形分析出来的联系反映到数据库中,即设计出表,因此属于逻辑设计阶段,答案为C)。
9.有三个关系R、S和T如下:

由关系R和S通过运算得到关系T,所使用的运算为(     )。

(分数:1.00)
 A.并
 B.自然连接
 C.笛卡儿积
 D.交 
解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此B)错误。笛卡儿积是用R集合中的元素为第一元素,S集合中的元素为第二元素构成的有序对,因此C)错误。根据关系T可以很明显地看出是从关系R与关系S中取得相同的关系组,所以使用的是交运算,选择D)。
10.下列叙述中错误的是(     )。

(分数:1.00)
 A.—个C语言程序只能实现一种算法 
 B.C程序可以由多个程序文件组成
 C.C程序可以由一个或多个函数组成
 D.—个C函数可以单独作为一个C程序文件存在
解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法。
11.设有表示学生选课的三张表,学生S (学号,姓名,性别,年龄,身份证号),课程C (课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为(     )。

(分数:1.00)
foreach里循环遍历 A.课号,成绩
 B.学号,成绩
 C.学号,课号 
 D.学号,姓名,成绩
解析:学号是学生表S的主键,课号是课程表C的主键,因此选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,故本题答案为C)。
12.以下选项中,能用作数据常量的是(     )。

(分数:1.00)
 A.115L 
 B.0118
 C.1.5el.5
 D.o115
解析:选项中115L表示115是长整型数据,合法。B)选项是八进制常量的表示方法,但是在八进制中不能含有数字8,因此B)选项错误。C)选项中e后面应该是整数,不能是小数(1.5),因此C)选项错误。D)选项中八进制常量应该是以数字“0”开始,而不是以字母“o”开始。故本题答案为A)。
13.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(     )。

(分数:1.00)
 A.下画线
 B.大写字母
 C.数字字符
 D.连接符 
解析:C语言中标识符由字母、下画线或数字组成,且开头必须是字母或下画线。因此D)选项中的连接符不合法。
14.设变量已正确定义并赋值,以下正确的表达式是(     )。

(分数:1.00)
 A.x=y+z+5, ++y 
 B.int(15.8%5)
 C.x=y*5=x+z
 D.x=25%5.0
解析:B)与D)选项中取模运算符%的左右两个操作数均应为整数,因此B)、D)选项错误。C)选项中不能将x+z的值赋给表达式y*5,因此C)选项错误。故本题答案为A)。
15.设有定义“int x=2;”,以下表达式中,值不为6的是(     )。

(分数:1.00)
 A.x++,2*xlinux无法安装
 B.2*x, x+=2 
 C.x*=(l+x)
 D.x*=x+1
解析:选项B)中,2*x对x的值没有影响,x仍为2,“x+=2”执行后,表达式值为4。故本题答案为B)。
16.有以下程序
#include
main()
{int x, y, z;
  x=y=l;
  z=x++,y++,++y;   
  printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是(    )。

(分数:1.00)
 A.2,3,1 
 B.2,3,2
 C.2,3,3
 D.2,2,1
解析:对于表达式“Z=x++,y++,++y;”,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式改成“(z=x++),(y++),(++y)”。然后从左向右先计算表达式z=x++,因为x++先使用后自增,所以z的值为1,x的值为2。再计算逗号表达式第二个表达式y++,此时y的值为1,y++的值为2。最后计算第三个表达式++y,y的值为3,故本题答案为A)。
17.有以下程序 #include随机数表法分4组
main()
{char cl,c2;
  c1=’A’+’8’-’4’;
  c2=’A’+’8’-’5’;
  printf( "%c,%d\n",cl,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是(    )。

(分数:1.00)
 A.E,D
 B.D,69
 C.E,68 
 D.输出无定值
解析:本题中字符变量cl是字符'A'的ASCII码加上4,即69所对应的字符'E'。字符变量c2是字符’A'的ASCII码加上3,即68所对应的字符'D^。但是打印输出时,C1以%c的格式输出,因此是E,c2以%d的格式输出,因此是68。故本题答案为C)。
18.有以下程序
#include
main()
{ int x=l,y=0;
  if(!x) y++;
  else if (x==0) 
      if(x) y+=2; 
      else y+=3;
   printf(“%d\n”,y);
}
程序运行后的输出结果是(    )。

(分数:1.00)
 A.3
 B.2
结构体c C.1
 D.0 
解析:在ifelse语句中else总是与离它最近的if配对。本题目中x为1,因此“!x”为0,所以执行e
lseif语句中的内容,判断“x==0”是否成立,因为x为1,所以条件不成立,因此elseif内部的“if...else”语句不再执行,所以y的值还是初始值0。
19.若有定义“int x,y;”并已正确给变量赋值,则以下选项中与表达式“(x-y)?(x++) : (y++)”中的条件表达式 (x-y)等价的是(    )。

(分数:1.00)
 A.(x-y0) 
 B.(x-y<0)
 C.(x-y>0)
 D.(x-y==0)
解析:条件表达式“x=表达式1?表达式2:表达式3”的含义是:先求解表达式1,若其值为非0(真),则求解表达式2,将表达式2的值赋给x;若表达式1的值为0(假),则求解表达式3,将
表达式3的值赋给x。在本题中与表达式(x-y)等价的是“(x-y<0||x-y>0)”,A)选项正确。
20.有以下程序
#include<stdio.h>
main()
{  int y=9; 
   for(;y>O;y--) 
   if(y%3==O)printf("%d",--y);
}
程序运行后的输出结果是(    )。

(分数:1.00)
 A.852 
 B.963
 C.741
 D.875421
解析:第一次执行for循环,y的值为9,y%3的值为0,满足条件打印,所以执行“--y”语句,即先减1后打印,因此打印8;第二次执行for循环,y的值为7,y%3的值为1,不执行打印语句;第三次执行for循环,y的值为6,y%3的值为0,满足条件打印,所以执行“--y”语句,即先减1后打印,因此打印5;第四次执行for循环,y的值为4,不满足if条件,不执行打印语句;第五次执行for循环,y的值为3,满足if条件,打印输出2;第六次执行for循环,y的值为1,不满足条件,不执行打印语句。故本题答案为A)。

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