国家二级(C语言)机试模拟试卷120(题后含答案及解析)_0
国家二级(C语言)机试模拟试卷120 (题后含答案及解析)
题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题
程序填空题(30分)
1. 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于M。程序中库函数strstr(s1,s2)的功能是在s1串中查找s2子串,若没有,函数值为0,若有,为非0。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!
正确答案:(1)N (2)substr (3)0
解析:本题中函数fun的功能是在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。 在fun函数中,利用循环逐个查找ss所指字符串数组中的每一个字符串,并判断是否含有substr所指的子串,有则输出。
程序修改题(30分)
2. 给定程序MODll.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:80.5 60 72 90.598 51.5
88 64则低于平均分的学生人数为:4(平均分为:75.5625)。请改正程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
正确答案:(1)t+=s[k]; (2)*aver=ave;
解析:该程序功能是统计出低于平均分的学生人数,首先求得平均分,然后再求得低于平均分的人数。从已给定源程序的main.主函数开始入手,printf语句中的fun(s,m,&aver)l调用函数实现题目中的要求。
程序设计题(40分)
3. 请编写函数fun,其功能是:计算并输出例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
正确答案:
解析:该程序功能是对题干中给出的多项式的求解。根据题干中给出的数列,
首先推出每一项的表达式,然后再对多项式进行累加求和。
国家二级C语言机试(程序设计题)模拟试卷2(题后含答案及解析)
国家二级C语言机试(程序设计题)模拟试卷2 (题后含答案及解析)
题型有:1.
1. 使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。例如,若8所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF12345”。注意:部分源程序在文件PROG1.C中。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<string.h>void fun(char*s,char t[]){}main( ){char s[100],t[100];void NONO( );printf(“\nPlease enter string S:”);Scanf(“%s”,s);fun(s,t);printf(“\nThe result is:%s\n”,t);NONO( );}void NONO( ){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FTLE*rf,*wf;int i;rf=fopen(“in.dat”,”r”);wf=fopen(“out.dat”,”w”);for(i=0;i<10;i++){fscanf(rf,”%s”,s);fun(s,t);fprintf(wf,”%s\n”,t);}fclose(rf);fclose(wf);}
正确答案:void fun(char*s,char t[]){int i,j=0;for(i=0;i<strlen(s);i++)if(!((i%2)==0&&(s[i]%2)))t[j++]=s[i];t[j]=0;}
国家二级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语言(数据结构与算法)机试模拟试卷2(题后含答案及解析)
国家二级C语言(数据结构与算法)机试模拟试卷2 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的
A.正当性
B.可行性
C.确定性
D.有穷性
正确答案:C
解析:本题考查算法的基本特征。算法的可行性表示算法中执行的任何步骤都是可以被分解为基本的可执行的操作步:确定性是指算法的每一步骤必须有确切的含义;有穷性是指算法必须能在执行有限个步骤之后终止。 知识模块:数据结构与算法
2. 下列叙述中正确的是
A.算法就是程序
B.设计算法时只需要考虑数据结构的设计
C.设计算法时只需要考虑结果的可靠性
D.以上三种说法都不对
正确答案:D
解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。 知识模块:数据结构与算法
3. 下列叙述中正确的是
A.算法的效率只与问题的规模有关,而与数据的存储结构无关
B.算法的时间复杂度是指执行算法所需要的计算工作量
C.数据的逻辑结构与存储结构是一一对应的
D.算法的时间复杂度与空间复杂度一定相关
正确答案:B
解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的
时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的;数据的存储结构是研究数据元素和数据元素之问的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。 知识模块:数据结构与算法
国家二级C语言机试(数据结构与算法)模拟试卷5(题后含答案及解析)
国家二级C语言机试(数据结构与算法)模拟试卷5 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 设二叉树共有375个结点,其中度为2的结点有187个。则度为1的结点个数是
A.0
B.1
C.188
D.不可能有这样的二叉树
正确答案:A
解析:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。本题中,度为2的结点有187个,叶子结点应该有187+1=188个,度为1的结点个数=375-187-188=0。 知识模块:数据结构与算法
2. 在带链队列中,经过一系列正常的操作后,如果front=rear,则队列中的元素个数为
A.0或1
B.0
C.1
D.队列满
正确答案:A
解析:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的链式存储也称为链队列。为了便于操作,可给链队列添加1个头结点,并令头指针指向头结点。队列为空的判断条件是头指针和尾指针的值相同,且均指向头结点。当队列为空(0)或1时,front=rear。 知识模块:数据结构与算法
3. 设一棵树的度为3,其中没有度为2的结点,且叶子结点数为5。该树中度为3的结点数为
A.1
B.2
C.3
D.不可能有这样的树
正确答案:B
解析:树的度是指一棵树中,最大的结点的度称为树的度。本题中树的度为3,那么树中最少有一个结点的度为3。而树中没有度为2的结点,叶子结点数为5,度为1的结点下面只有一个叶子结点。因此,该树中含2个度为3的结点满足题目要求。 知识模块:数据结构与算法
国家二级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语言机试(C语言基础知识)模拟试卷20
国家二级C语言机试(C语言基础知识)模拟试卷20
(总分:60.00,做题时间:90分钟)
一、 选择题(总题数:30,分数:60.00)
1.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是
(分数:2.00)
A.一条C语句可能会被转换成多条机器指令
B.一条C语句对应转换成一条机器指令 √
C.一条C语句可能会被转换成零条机器指令
D.某种类型和格式的C语句被转换成机器指令的条数是固定的
解析:解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。
2.以下选项中不属于C语言程序运算符的是
(分数:2.00)
A.sizeof
B.()
C.<> √
D.&&
解析:解析:sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。而<>不是C语言的运算符,C语言中!=表示不等于。
3.若变量已正确定义并赋值,以下不能构成C语句的选项是
(分数:2.00)
A.A=a+b;
B.B++;
C.a=a+b √
D.A?a:b;
解析:解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。
4.以下叙述中正确的是
(分数:2.00)
A.程序必须包含所有三种基本结构才能成为一种算法
B.如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达
C.只有简单算法才能在有限的操作步骤之后结束
D.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令 √
解析:解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。
国家二级C语言程序设计机试(选择题)模拟试卷3
国家二级C语言程序设计机试(选择题)模拟试卷3
(总分:80.00,做题时间:90分钟)
一、 选择题(总题数:40,分数:80.00)
1.下列数据结构中,属于非线性结构的是( )。
(分数:2.00)
A.循环队列
B.带链队列
C.二叉树 √
D.带链栈
解析:解析:线性结构的特点:①有且只有一个根结点;②每一个结点最多有一个前驱,也最多有一个后继。不满足线性结构条件的称为非线性结构,二叉树的非叶子结点最多可以用两个后继结点,属于非线性结构。
2.算法的空间复杂度是指( )。
(分数:2.00)
A.算法在执行过程中所需要的计算机存储空间 √
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的临时工作单元数
解析:解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,因此本题答案为A。
3.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
(分数:2.00)
A.循环队列
B.栈 √
C.队列
D.二叉树
解析:解析:栈是按“先进后出”的原则组织数据的;队列是按“先进先出”的原则组织数据的,因此本题答案为B。
4.软件设计中划分模块的一个准则是( )。
(分数:2.00)
A.低内聚、低耦合
B.高内聚、低耦合 √
C.低内聚、高耦合
D.高内聚、高耦合
解析:解析:一般较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此本题答案为B。
5.结构化程序的三种基本控制结构是( )。
(分数:2.00)
A.顺序、选择和重复(循环) √
B.过程、子程序和分程序
C.顺序、选择和调用
D.调用、返回和转移
解析:解析:结构化程序设计中三种基本控制结构为顺序、选择和重复(循环),故正确答案为A。
6.软件需求规格说明书在软件开发中的作用不包括( )。
国家二级C++机试(C++流)模拟试卷2(题后含答案及解析)
国家二级C++机试(C++流)模拟试卷2 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 下列关于C++流的说明中,正确的是( )。
A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现
B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作
C.cin是一个预定义的输入流类
D.输出流有一个名为open的成员函数,其作用是生成一个新的流对象
正确答案:A
解析:此题考查的是C++流的概念。从输入流中提取数据称为提取操作,把表达式插入到输出流中的操作称为插入操作,故选项B错误:cin是一个预定义的输入流对象而不是流类,故选项C错误;输入输出流中没有open成员函数,故选项D错误。 知识模块:C++流
2. 在语句cin>>data;中,cin是( )。
A.C++的关键字
B.类名
C.对象名
D.函数名
正确答案:C
解析:此题考查的是预定义流对象。C++有4个预定义的流对象:cin一标准输入:cout一标准输出;cerr一标准出错信息输出:clog一带缓冲的标准出错信息输出。 知识模块:C++流
3. 如果利用C++流进行输入输出,下面的叙述中正确的是( )。
A.只能借助于流对象进行输入输出
B.只能进行格式化输入输出
C.只能借助于cin和cout进行输入输出
D.只能使用运算符>>和<<进行输入输出
正确答案:A
解析:此题考查的知识点是C++流。利用C++流既可以进行有格式输入输出,也可以进行无格式输入输出,所以选项B错误:CH的4个预定义的流对象为:cin一标准输入,cout一标准输出,cerr一标准出错信息输出,clog一带缓冲的标准出错信息输出,选项C错误;C++流除了可以使用提取“>>”插入“<<”进行输入输出外,还可以通过流对象的一些成员函数进行输入输出,故选项D错误。 知识模块:C++流
4. 下列有关C++流的叙述中,错误的是( )。
国家二级C语言(C语言程序设计)机试模拟试卷12(题后含答案及解析)
国家二级C语言(C语言程序设计)机试模拟试卷12 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 有以下计算公式若程序前面已经在命令行中包含math.h文件,不能够正确计算上述公式的程序段是
A.y=sqrt(x) ; if(x<0) y=sqrt(-x);
B.if(x>=0) y=sqrt(x); else y=sqrt(-x);
C.if(x>=0) y=sqrt(x); if(x<0) y=sqrt(-x);
D.y=sqrt(x>=0?x :-x);
正确答案:A
解析:由题意可知计算公式的含义是:当x大于等于0时,y值等于x的算术平方根;当x小于0时,y值等于x的相反数的算术平方根。所以选项B用一个完整的if else语句表达了计算公式的含义;选项C用两个if语句表达了计算公式的含义;选项D在求平方根函数的后面用x≥0?x:-x条件表达式来表达了计算公式的含义。选项A没有用C语言语句正确的表达计算公式的含义。 知识模块:C语言程序设计
2. 有以下程序 #include main( ) { int x; scanf(“%d”, &x); if(x<=3) ; else
if(x!=10) printf(“%d\n”, x); } 程序运行时,输入的值在哪个范围才会有输出结果
A.不等于10的整数
B.大于3或等于10的整数
C.小于3的整数
D.大于3且不等10的整数
正确答案:D
解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于3且不等于10时打印出来。 知识模块:C语言程序设计
3. 有以下程序main( ) { int a=1,b=2,c=3,d=0;if (a==1 && b++==2)if
(b!=2||c--!=3)printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);else
