国家二级(C语言)机试模拟试卷11(题后含答案及解析)_1
国家二级(C语言)机试模拟试卷11 (题后含答案及解析)
题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题
程序填空题(30分)
1. 请完成函数fun( ),它的功能是:求Fibonacc数列中小于t的最大的一个数,结果由函数 0返回。Fibonacc数列F(n)定义为: F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2) 例如:t=1000时,函数为987。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在下划线上填入所需的内容。 #include<conio.h> #include<stdio.h>
#include<math.h> in fun(int t){int a=l,b=1,c=0,i;do{ 【 】; a=b;
b=C; }while( 【 】);c= 【 】;return C;}main( ){ int n; clrscr( );
n=1000; printf(“n=%d,f=%d\n”,n,fun(n)); }
正确答案:int fun(int t) { int a=1,b=1,c=O,i; do { c=a+b; a=b;
b=c; } while(c<t); C=a; return c; }
解析:该数列的最终结果是由两个数列之和组成,所以可以在循环体内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b通过不断地重新赋值,但始终代表第n-1项。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。
程序修改题(30分)
2. 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun( )的功能是计算数组元素中值为负数的平均值(不包括0)。 例如:数组中元素的值依次为43,47,-21,53,-8,12, 0,则程序的运行结果为-25.333333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <conio.h> #include <stdio.h>
double fun(int x[]) { double sum=0.0; int c=0,i=0;
/*************found*************/ while(x[i]==0) {if(x[i]<0)
{ sum=sum+x[i]; c++; }i++; } /************found***********/
sum=sum\c; return sum; } main( ) { int x[1000];
int i=0; clrscr( ); printf(“\nPlease enter some data(end with 0) :”);
do { scanf(“%d”,&x[i]); }while(x[i++]!=0); printf(“%f\n”,fun(x)); }
正确答案:(1) 错误:while(x[i]==0) 正确:while(x[i]!=0)(2) 错误:sum=sum\c;正确:sum=sum/c;
解析:错误1:此处考查的是对循环条件的理解,当被判断的数组元素为0时,说明这是数组的最后一个元素,此时要跳出循环。错误2:C语言中的除法运算符是“/”,而不是“、”。
程序设计题(40分)
3. 请编写函数fun,它的功能是:求任意两个正整数的最小公倍数和最大公约数,最小公倍数放在指针变量bei所指的变量中,最大公约数放在指针变量yue所指的变量中。 注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 vOid fun(int m,int n,int*bei,int*yue) {int s=l,i; if(m>n){s=m;m=n;n=S;} for(i=2,s=1;i<m i++) if((m%i=0)&&(n%i=0)) { }
*yue=s; *bei=S*m*n; } main( ) {int a,b,beishu,yueshu; chscr( );
printf(“please input a,b:”);scanf(“%d,%d,”&a,&b); fun(a,b,&beishu,&yueshu); printf(“a,b beishu:%d\n”,beishu); printf(“a,b
yueshu:%d\n”,Yueshu); }
正确答案:void fun(int m,int n,int*bei,int*yue) {int s=l,i;if(m>n){s=m;m=n;n=s;}for(i=2,s=1;i<m;i++) if((m%i==0)&&(n%i==0)) {m=m/i; n=n/i;
S=s*i: i=1: } *yue=s;*bei=s*m*n; }
解析:本题考查编程解决一般数学问题的能力。本题函数fun的实现了拐除法,在2~ m之间从小到大依次取数i同时整除m和n,若能整除,则累乘到s中,最后的s就是最大公约数,s*m*n就是最小公倍数。
国家二级ACCESS机试(简单应用题)模拟试卷11(题后含答案及解析)
国家二级ACCESS机试(简单应用题)模拟试卷11 (题后含答案及解析)
题型有:1.
考生文件夹下存在一个数据库文件“samp2.accdb”,里面已经设计好表对象“tTeacher”、“tCourse”、“tStud”和“tGrade”,试按以下要求完成设计:
1. 创建一个查询,按输入的教师姓名查找教师的授课情况,并按“上课日期”字段降序显示“教师姓名”、“课程名称”、“上课日期”三个字段的内容,所建查询命名为“qT1”。当运行该查询时,应显示参数提示信息:“请输入教师姓名”。
正确答案:步骤1:双击打开“samp2.accdb”数据库,在【创建】功能区的【查询】分组中单击“查询设计”按钮,系统弹出查询设计器。在【显示表】对话框中添加“tTeacher”、“tCourse”表,关闭对话框,双击“教师姓名”字段,双击“tCourse”的“课程名称”、“上课日期”字段,在“教师姓名”的条件行内输入:[请输入教师姓名],在“上课日期”所在“排序”行的下拉框中选择“降序”,如图3-80所示。步骤2:单击快速访问工具栏中的“保存”按钮,输入“qt1”文件名,单击“确定”按钮,关闭“qt1”查询窗口。
解析:本题考查参数查询的设置方法以及查询中的排序。
2. 创建一个查询,查找学生的课程成绩大于等于80且小于等于100的学生情况,显示“学生姓名”、“课程名称”和“成绩”三个字段的内容,所建查询命名为“qT2”。
正确答案:步骤1:在【创建】功能区的【查询】分组中单击“查询设计”按钮,系统弹出查询设计器。添加“tStud”、“tGrade”、“tCourse”表,关闭【显示表】对话框。双击“tStud”表“学生姓名”字段、“tCourse”表“课程名称”字段、“tGrade”表的“成绩”字段。在“成绩”所对应的条件行内输入:>=80and<=100。步骤2:单击快速访问工具栏中的“保存”按钮,输入文件名“qt2”,单击“确定”按钮,关闭“qt2”窗口。
国家二级C语言(数据结构与算法)机试模拟试卷1(题后含答案及解析)
国家二级C语言(数据结构与算法)机试模拟试卷1 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 算法具有五个特性,以下选项中不属于算法特性的是
A.有穷性
B.简洁性
C.可行性
D.确定性
正确答案:B
解析:算法的五个特性分别是:有穷性、可行性、确定性、输入和输出。 知识模块:数据结构与算法
2. 算法的有穷性是指
A.算法程序的运行时间是有限的
B.算法程序所处理的数据量是有限的
C.算法程序的长度是有限的
D.算法只能被有限的用户使用
正确答案:A
解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 知识模块:数据结构与算法
3. 算法的时间复杂度是指
A.算法的执行时间
B.算法所处理的数据最
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的基本运算次数
正确答案:D
解析:算法的时间复杂度,是指执行算法所需要的计算工作量。算法的工作量可以用算法在执行过程中所需基本运算的执行次数来度量。 知识模块:数据结构与算法
4. 对存储器按字节进行编址,若某存储器芯片共有10根地址线,则该仔储器芯片的存储容量为
A.1kb
B.2kb
C.4kb
D.8kb
正确答案:A
解析:10根地址线,每根地址线有0和1两种情况,地址范围就是2的10次方=1024=1K。 知识模块:数据结构与算法
5. 磁盘处于写保护状态时其中的数据
A.不能读出,不能删改
B.可以读出,不能删改
C.不能读出,可以删改
D.可以读出,可以删改
正确答案:B
解析:磁盘处于写保护状态时其中的数据可以读出来,但是不能修改和删除。
知识模块:数据结构与算法
6. 在Windows环境下,单击当前窗口中的按钮“”,其功能是
A.讲当前应用程序转为后台运行
B.退Windows后再关机
C.终止当前应用程序的运行
D.退出Windows后重新启动计算机
国家二级C语言机试(选择题)模拟试卷107(题后含答案及解析)
国家二级C语言机试(选择题)模拟试卷107 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 下列选项中不属于结构化程序设计原则的是( )。
A.可封装
B.自顶向下
C.模块化
D.逐步求精
正确答案:A
解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。 知识模块:选择题
2. 有两个关系R和T如下:则由关系R得到关系T的操作是( )。
A.投影
B.交
C.选择
D.并
正确答案:A
解析:从表图中可以看出,关系T是从关系R中选取一部分字段(A和C)及其值构成新的关系,是一种纵向操作产生新列,属于投影,正确选项为A。 知识模块:选择题
3. 有以下程序:#include <stdio.h>main( ){printf(″%d\n”,NULL);}程序运行后的输出结果是( )。
A.1
B.变量无定义,输出不确定
C.—1
D.0
正确答案:D
解析:NULL为一个符号常量,对应的ASCⅡ码值为0,答案选D。 知识模块:选择题
4. 有以下程序:#include<stdio.h>#define f(x)x*x*xmain( ){int a=3,s,t;s=f(a+1);t=f((a+1));printf(″%d,%d\n″,s,t);}程序运行后的输出结果是( )。
A.10,64
B.10,10
C.64,10
D.64,64
正确答案:A
解析:C语言中带参数的宏可以理解为用参数直接替代定义式中的变量,而不经过任何修改。所以s=f(a+1)=a+1*a+1*a+1,t=f((a+1))=(a+1)*(a+1)*(a+1),所以有无括号的运算结果是不同的。 知识模块:选择题
5. 有以下程序:#include<stdio.h>int f(int x,int y){return((y—x) * x);}void
国家二级C语言(数据结构与算法)机试模拟试卷2(题后含答案及解析)
国家二级C语言(数据结构与算法)机试模拟试卷2 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的
A.正当性
B.可行性
C.确定性
D.有穷性
正确答案:C
解析:本题考查算法的基本特征。算法的可行性表示算法中执行的任何步骤都是可以被分解为基本的可执行的操作步:确定性是指算法的每一步骤必须有确切的含义;有穷性是指算法必须能在执行有限个步骤之后终止。 知识模块:数据结构与算法
2. 下列叙述中正确的是
A.算法就是程序
B.设计算法时只需要考虑数据结构的设计
C.设计算法时只需要考虑结果的可靠性
D.以上三种说法都不对
正确答案:D
解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。 知识模块:数据结构与算法
3. 下列叙述中正确的是
A.算法的效率只与问题的规模有关,而与数据的存储结构无关
B.算法的时间复杂度是指执行算法所需要的计算工作量
C.数据的逻辑结构与存储结构是一一对应的
D.算法的时间复杂度与空间复杂度一定相关
正确答案:B
解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的
时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的;数据的存储结构是研究数据元素和数据元素之问的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。 知识模块:数据结构与算法
国家二级C语言(公共基础知识)机试模拟试卷11
国家二级C语言(公共基础知识)机试模拟试卷11
(总分:60.00,做题时间:90分钟)
一、 选择题(总题数:30,分数:60.00)
1.下面描述中不属于软件需求分析阶段任务的是( )。
(分数:2.00)
A.撰写软件需求规格说明书
B.软件的总体结构设计 √
C.软件的需求分析
D.软件的需求评审
解析:解析:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。软件的总体结构设计属于软件设计阶段的任务。
2.下面不属于软件需求规格说明书内容的是( )。
(分数:2.00)
A.软件的可验证性 √
B.软件的功能需求
C.软件的性能需求
D.软件的外部接口
解析:解析:软件需求规格说明应重点描述软件的目的,软件的功能需求、性能需求、外部接口、属性及约束条件等。
3.下面可以作为软件需求分析工具的是( )。
(分数:2.00)
A.N-S图
B.程序流程图
C.PAD图
D.数据流程图(DFD图) √
解析:解析:常见的需求分析方法有结构化分析方法和面向对象的分析方法。结构化分析方法工具包括数据流图(DFD)、数据字典(DD)、判定表和判定树等。程序流程图、N-S图、PAD图属于软件设计阶段使用的工具。
4.数据流图(DFD)中的有向箭头(→)表示( )。
(分数:2.00)
A.控制流
B.数据流 √
C.输入流
D.输出流
解析:解析:数据流图中的主要图形元素与说明如下:加工(转换):输入数据经加工变换产生输出。
→数据流:沿箭头方向传送数据的通道,一般在旁边标注数据流名。存储文件:表示处理过程中存放各种数据的文件。数据的原点和终点:表示系统和环境的接口,属系统之外的实体。
5.下列数据流图(DFD)构造规则中正确的是( )。
(分数:2.00)
A.子图的输入输出数据流与父图中相关加工的输入输出数据流必须一致 √
国家二级C语言选择结构循环结构机试模拟试卷1_真题(含答案与解析)-交互
国家二级C语言(选择结构、循环结构)机试模拟试卷1
(总分66, 做题时间90分钟)
1. 选择题
1.
下列选项中,当x为大于1的奇数时,值为0的表达式是( )。
SSS_SINGLE_SEL
A x%2==0
B x/2
C x%2!=0
D x%2==1
分值: 2
答案:A
解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是O。C选项的值为真,即1。D选项的值为真,即1。
2.
若a是数值类型,则逻辑表达式(a==1)‖(a!=1)的值是( )。
SSS_SINGLE_SEL
A 1
B 0
C 2
D 不知道a的值,不能确定
分值: 2
答案:A
解析:逻辑或“‖”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是l,则右边运算对象的值为1,所以总能保证一边非零。
3.
当变量e的值不为2、4、6时,值为“真”的表达式是( )。
SSS_SINGLE_SEL
A (c>=2&&e<=6)&&(c%2 1=1)
B (c==2)‖(c==4)‖(c==6)
C (c>=2&&c<=6)&&!(c%2)
D (c>=2&&c←6)‖(c!=3)lI(c!=5)
分值: 2
答案:D
解析:逻辑或运算符中只要有一个运算量为真,结果就是真,当c>=2&&c<=6条件不成立时,c的值肯定不是2、3、4、5、6,所以c!:3与c!:5均成立,所以D选项的结果一定为真。
4.
有以下程序: #include main() { int a=1,b=2,c=3,d=0;
if(a==1&&b++==2) if(b!=2‖c一!=3) prinff(“%d,%d,%d\n”,a,
b,c); else prinff(“%d,%d,%d\n”,a,b,c); else prinff(“%d,%d,%d\n”,a,b,c); } 程序的运行结果是( )。
国家二级C语言机试(选择题)模拟试卷118(题后含答案及解析)
国家二级C语言机试(选择题)模拟试卷118 (题后含答案及解析)
题型有:1.
1. 下列叙述中正确的是( )。
A.二分查找法只适用于顺序存储的有序线性表
B.二分查找法适用于任何存储结构的有序线性表
C.二分查找法适用于有序循环链表
D.二分查找法适用于有序双向链表
正确答案:A
解析:二分查找法(又称对分查找法)只适用于顺序存储的有序表。在此所说的有序表是指线性表的中元素按值非递减排列(即从小到大,但允许相邻元素值相等)。 知识模块:公共基础知识
2. 下列不属于软件设计阶段任务的是( )。
A.软件总体设计
B.算法设计
C.制定软件确认测试计划
D.数据库设计
正确答案:C
解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计,所以A、B、D选项正确,C选项为软件测试阶段的任务。 知识模块:公共基础知识
3. 以下选项中合法的实型常量是
A..914
B.3.13e-2.1
C.0
D.2.0”10
正确答案:A
解析:实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。实型常量分为以下两种形式: ①小数形式:小数形式是山数字和小数点组成的一种实数农示形式。例如0.345、.123、0.0等是合法的实数。这种表示形式必须要有小数点。 ②指数形式:在C语言中,用“e”或“E”后跟一个整数来表示以10为底的幂数。注意:字母“e”或“E”之前必须要有数字,后面的指数必须为整数。 选项B)中e后必须为整数,选项C)没有小数点,向选项D)则出现非法字符*。 知识模块:C语言基础知识
4. 以下叙述中正确的是
A.整型常量和实型常量都是数值型常量
B.常量的类型不能从字面形式上区分,需要根据类型名来决定
C.预定义的标识符是C语言关键字的一种,不能另作它用
D.只能在函数体内定义变量,其他地方不允许定义变量
正确答案:A
解析:整型常量和实型常量都是数值型常量,选项A正确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B错误:预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C错误;变量可以定义住程序中任何的地方,属于不同的变量,选项D错误。 知识模块:C语言基础知识
国家二级C语言机试(选择题)模拟试卷252(题后含答案及解析)
国家二级C语言机试(选择题)模拟试卷252 (题后含答案及解析)
题型有:1.
1. 下列数据结构中,属于非线性结构的是
A.循环队列
B.带链队列
C.二叉树
D.带链栈
正确答案:C
解析:根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。 知识模块:数据结构与算法
2. 某二叉树的中序遍历序列为CBADE,后序遍历序列为CBEDA,则前序遍历序列为( )。
A.CBADE
B.CBEDA
C.ABCDE
D.EDCBA
正确答案:C
解析:二叉树的后序遍历序列为CBEDA,由于后序遍历最后访问根结点,可以确定该二叉树的根结点是A。再由中序遍历序列为CBADE,可以得到子序列(cB)一定在左子树中,子序列(DE)一定在右子树中。结点C、B在中序序列和后序序列中顺序未变,说明结点B是结点c的父结点;结点D、E在中序序列和后序序列中顺序相反,说明结点D是结点E的父结点。因此该二叉树的前序遍历序列为ABcDE。 知识模块:公共基础知识
3. 已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是
A.c=(‘A’+c)%26-’a’
B.c=C+32
C.c=C-’A’+’a’
D.c=(C一’A’)%26+’a’
正确答案:A
解析:由题意可知,小写字符a和大写字符A的ASCII代码相差为32,所以选项C)能将大写字符C的ASCII代码转换为小写字符c的ASClI代码:选项D)和C)左侧的表达式都是大写字符c与大写字符A的差与’a’的ASCII代码的和就是小写字符c的ASCII代码。而选项A)中应该是加上’a’,而不是减去’a’。 知
识模块:C语言基础知识
4. 设有定义:inta;floatb;执行scanf(‘‘%2d%f’,&a,&b);语句时,若从键盘输入876543.0则a和b的值分别是
国家二级C语言机试(函数和数组)模拟试卷10
国家二级C语言机试(函数和数组)模拟试卷10
(总分:54.00,做题时间:90分钟)
一、 选择题(总题数:27,分数:54.00)
1.有以下程序 #include<stdio.h>> main() {int a[]={10,20,30,40),*p=a,i; for(i=0;i<=3;i++){a[i]=*p;p++;} pfintf("%d\n",a[2]);}程序运行后的输出结果是
(分数:2.00)
A.20
B.30 √
C.10
D.40
解析:解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数组a中的元素的值不变。
2.若有以下程序 main(){int i,j=0; char a[]="How are you!"; for(i=0;a[i];i++)
if(a[i]!='')a[j++]=a[i]; a[j]='\0'; printf("%s\n",a);}则程序的输出结果是
(分数:2.00)
A.Howareyou
B.Hay!
C.Howareyou! √
D.How are you!
解析:解析:主函数中利用for循环访问字符串的每一个字符,判断当前字符是否为空格,如果是空格则删除。因此删除字符串”How are you!”中空格以后,字符串为How are you!。
3.若有以下程序 #include<stdio.h> main(){int i,j=0; char a[]="How are you!",b[10]; for(i=0;a[i];i++) if(a[i]=='')b[j++]=a[i+1]; b[j]='\0'; printf("%s\n",b);}则程序的输出结果是
(分数:2.00)
A.Howareyou
B.Hay!
C.Howareyou!
D.ay √
解析:解析:主函数中利用for循环访问字符串a的每一个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。在字符串"How are you!"中,第一个空格后面字符为'a',第二个空格后面字符为'v'。
计算机专业基础综合(操作系统)模拟试卷11(题后含答案及解析)
计算机专业基础综合(操作系统)模拟试卷11 (题后含答案及解析)
题型有:1. 单项选择题
单项选择题1-40小题,每小题2分,共80分。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
1. 死锁现象是由于( )造成的。
A.CPU数量不足
B.内存数量不足
C.多个进程抢夺并独占资源
D.作业批处理
正确答案:C
解析:死锁是指多个进程在占有一定资源的同时还寄希望得到其他进程占有的资源,而该进程也是占有一定的资源且不放弃的同时期望获得其他进程占有的资源,进程间相互不让步,造成各个进程均无法推进的现象。 知识模块:操作系统
2. 临界区是指( )。
A.一组临界资源的集合
B.可共享的一块内存区
C.访问临界资源的一段代码
D.请求访问临界资源的代码
正确答案:C
解析:每个进程中访问临界资源的那段程序称为临界区(临界资源是一次仅允许一个进程使用的可轮流分享的资源)。使用时,每次只准许一个进程进入临界区,一旦一个进程进入临界区之后,不允许其他进程同时进入。 进程进入临界区的调度原则是: (1)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。 (2)任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其他所有试图进入临界区的进程必须等待。
(3)进入临界区的进程要在有限时间内退出,以便其他进程能及时进入自己的临界区。 (4)如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。 知识模块:操作系统
3. 在一段时间内,只允许一个进程访问的资源称为( )。
A.共享资源
B.独占资源
C.临界资源
D.共享区
正确答案:C
解析:在现代计算机系统中,有一些资源不能被多个进程同时使用,这样的资源如果使用或分配不当会造成错误,它们只能被排他地使用,这样的资源就是临界资源。 知识模块:操作系统
