2018年度计算机二级C语言学习知识专业考试真命题汇总
20183月全国计算机等级考试二级C语言上机题库100套(光碟拷贝版)

2018年3月全国计算机等级考试二级C语言上机题库100套(从光碟拷贝出来的最完整版)(可以拷贝在U盘里,然后ctrl+F搜索,百分百有答案,祝考试成功)第一套1. 程序填空给定程序中,函数fun的功能是:计算下式前n 项的和作为函数值返回。
例如:当形参n的值为10 的时,函数返回:9.6125588。
第一处s=0;第二处for(i=1;i<=n;i++)第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t);2. 程序修改给定程序MODI1.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现伯次数。
/**found**/for(i=0;str[i];i++)/**found**/if(substr[k+1]==’\0’)3. 程序设计请编写一个函数fun,它的功能是:根据以下公式求JI的值(要求满足精度0.0005,即某项小于0.0005时停止送代):程序运行后,如果输入精度为0.0005,则程序输出为3.14…。
double fun(double eps){ double s=1,t=1./3;int n=1;while(t>=eps){s+=t;n++;t=t*n/(2.0*n+1);}return(s*2.0);}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;2. 程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/p=j;/**found**/p=i;3. 程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
二级C语言模拟题2018年(60)_真题(含答案与解析)-交互

二级C语言模拟题2018年(60)(总分100, 做题时间90分钟)一、程序填空题1.程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。
函数fun的功能是:将形参a所指结构体变量s中的数据进行修改,并把a的地址作为函数值返回主函数,从主函数中输出修改的数据。
例如,a所指变量s中的学号、姓名和3门课的成绩依次是:10001、“ZhangSan”、95、80、88,修改后输出t中的数据应为:10002、“LiSi”、96、81、89。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#include<string.h>struct student{long sno;char name[10];float score[3];};/**********found**********/______fun(struct student *a){int i;a->sno=10002;strcpy(a->name, "LiSi");/**********found**********/for(i=0; i<3; i++)______+=1;/**********found**********/return ______;}main(){struct student s=[10001, "ZhangSan", 95, 80, 88}, *t;int i;printf("\n\nThe original data:\n");printf("\nNo:%ld Name:%s\nScores:", s.sno, );for(i=0; i<3; i++)printf("%6.2f", s.score[i]);printf("\n");t=fun(&s);printf{"\nThe data after modified:\n");printf("\nNo:%ld Name:%s\n Scores:", t->sno, t->name);for(i=0; i<3; i++)printf("%6.2f", t->score[i]);printf("\n");}SSS_FILL分值: 30(1)struct student * (2)a->score[i] (3)a [解析] 填空1:函数定义时,类型标识符指明了本函数的类型,我们前面已经多次提到,函数的类型实际上是函数返回值的类型。
2018年9月计算机二级C语言考试章节习题及答案(6)

2018年9月计算机二级C语言考试章节习题及答案(6) 第2章 C程序设计的初步知识2.3 整型数据1[单选题] 用8位无符号二进制数能表示的最大十进制数为( )A.127B.128C.255D.256参考答案:C参考解析:2^8-1=256-1=2552[单选题] 若有以下程序段(n所赋的是八进制数)int m=32767,n=032767printf("%d,%o/n",m,n);执行后输出结果是( )A.32767,32767B.32767,032767C.32767,77777D.32767,077777参考答案:A3[单选题] 有以下程序main(){ char *s[]={"one","two","three"},*p;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}执行后输出结果是( )A.n,twoB.t,oneC.w,oneD.o,two参考答案:C4[单选题] 以下定义语句中正确的是A.int a =b =0;B.char A = 65 + 1,b='b';C.float a = 1,*b=&a,*c=&b;D.double a = 0.0;b=1.1;参考答案:B参考解析:A选项中定义时赋值不能用连等。
C选项中变量C和&b的类型不匹配。
D选项中变量b前是分号,所以变量b没有类型,即未定义。
B为变量定义时赋值的正确表达形式5[单选题] 设有定义:int x=2;以下表达式中,值不为6的是 ( )A.x*=x+1B.x++=2*XC.X*=(1 X)D.2*X,X+=2参考答案:D参考解析:选项A和C很容易看出结果是6。
选项B和D是逗号表达式,逗号表达式是从左到右顺序求子表达式的值,整体的逗号表达式的值取最后一个子表达式的值,很容易判断出答案D错误。
二级C语言模拟题2018年(152)_真题(含答案与解析)-交互

二级C语言模拟题2018年(152)(总分100, 做题时间90分钟)一、程序填空题1.下列给定程序中,函数fun的功能是:计算如下公式前n项的和,并作为函数值返回。
例如,当形参n的值为10时,函数返回值为9.612558。
请在下划线处填入正确的内容,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>double fun(int n){int i;double s,t;/********found********/s=______;/********found********/for(i=1;i<=______;i++){t=2.0*i;/********found********/s=______;}return s;}void main(){int n=-1;while(n<0)(printf("Please input(n>0):");scanf("%d",&n);}printf("\nThe result is:%f\n",fun(n));}SSS_FILL分值: 300 n sf(t*t-1)/(t*t) [考点]本题关键字有:变量赋初值;for循环语句;表达式求值。
一般用一个变量求表达式的值,若该变量存放各项之和,则赋初值0;若存放各项之积,则赋初值1。
[解析]填空1:变量s用来存放公式的前n项和,因此给s赋初值为0。
填空2:表达式各项的和通过for循环语句存于变量s中,变量i的取值为1-n。
填空3:根据题目要求确定表达式通项,因此应填(t*t)。
二、程序改错题1.下列给定程序中,函数fun的功能是:统计substr所指的字符串在str所指的字符串中出现的次数。
例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。
请改正程序中的错误,使它能得出正确的结果。
2018年计算机二级C语言考试强化提分试题(5)

2018年12月计算机二级C语言考试强化提分试题(5)1、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是( )。
A.编译程序B.操作系统C.教务管理系统D.汇编程序参考答案:C参考解析:编译软件、操作系统、汇编程序都属于系统软件,只有C教务管理系统才是应用软件。
2、设有定义:int a=1,b=2,e=3;以下语句中执行效果与其他三个不同的是( )。
A.if(a>b) c=a,a=b,b=c;B.if(a>b) {e=a,a=b,b=e;}C.if(a>b)e=a;a=b;b=C;D.if(a>b) {c-7-a;a=b;b=e;}参考答案:C参考解析:由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。
而A、B、D选项由于条件不成立.所以什么也没有做,所以选择C选项。
3、若有以下定义:则对x数组元素的正确引用是( )。
A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)参考答案:D参考解析:没有A选项的引用形式。
*与&放在一起作用抵消,所以B选项错误,最大只能引用到x[9]。
*(pt+i)表示引用指针pt所指元素后的第i个元素,所以c选项错误,最大只能为*(pt+9)。
因此D选项正确。
4、若有定义语句:double a,* P=&a;以下叙述中错误的是( )。
A.定义语句中的*号是一个间址运算符B.定义语句中的*号是一个说明符C.定义语句中的P只能存放double类型变量的地址D.定义语句中,*P=&a把变量a的地址作为初值赋给指针变量P参考答案:A参考解析:在变量定义double a,* P=&a;中,*号是一个指针运算符,而非间址运算符,所以A错误。
5、若有定义语句:int x=10;,则表达式x-=x+x的值为( )。
A.0B.-20C.-10D.10参考答案:C参考解析:算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式x-=x+x 可以表示成x=x-(x+x)=10-(10+10)=-10,选择C。
2018年计算机二级C语言模拟题3_真题(含答案与解析)-交互

2018年计算机二级C语言模拟题3(总分100, 做题时间120分钟)选择题(每题1分,共40分)下列各题A)、B)、C )、D)四个选项中,只有一个选项是正确的。
1.下列叙述中正确的是()。
SSS_SINGLE_SELA栈是“先进先出”的线性表B队列是“先进后出”的线性表C循环队列是非线性结构的线性表D有序线性表既可以采用顺序存储结构,也可以采用链式存储结构分值: 1答案:D栈是先进后出的线性表,因此A 错误;队列是先进先出的线性表,因此 B错误;循环队列是线性结构的线性表,因此C错误,故本题答案为D。
2.支持子程序调用的数据结构是()。
SSS_SINGLE_SELA桟B树C队列D二叉树分值: 1答案:A栈支持子程序调用。
栈是一种只能在一端进行插入或删除的线性表,在主程序调用子程序时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,然后继续向下执行,这种调用方式符合栈的特点,因此本题的答案为A。
3.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。
SSS_SINGLE_SELA10B8C6D4分值: 1答案:C根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,因此本题答案是5+1=6,故选择C。
4.下列排序方法中,最坏情况下比较次数最少的是()。
SSS_SINGLE_SELA冒泡排序B简单选择排序C直接插入排序D堆排序分值: 1答案:D冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)n,因此本题答案为D。
/2次,而堆排序在最坏情况下需要比较的次数是n㏒25.软件按功能可以分为应用软件、系统软件和支撑软件(工具软件),下面属于应用软件的是( )SSS_SINGLE_SELA编译程序B操作系统C教务管理系统D汇编程序分值: 1答案:C编译程序、操作系统、汇编程序都属于系统软件,只有教务管理系统才是应用软件,因此本题答案为C。
2018年计算机二级考试C语言章节习题答案三
2018年计算机二级考试C语言章节习题答案三 2018年计算机等级考试即将开始啦!小编在这里为考生们整理了2018年计算机二级考试C语言章节习题答案,希望能帮到大家,想了解更多资讯,请关注的及时更新哦。 2018年计算机二级考试C语言章节习题答案三 第1章 程序设计基本概念 1.3 结构化程序设计和模块化结构 1[单选题] 下列描述中正确的是( )。 A.软件工程只是解决软件项目的管理问题 B.软件工程主要解决软件产品的生产率问题 C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发中的技术问题 参考答案:C 2[单选题] 在软件设计中,不属于过程设计工具的是( )。 A.PDL(过程设计语言) B.PAD图 C.N-S图 D.DFD图 参考答案:D 3[单选题] 下列叙述中正确的是( )。 A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护 C.软件交付使用后其生命周期就结束 D.软件维护是指修复程序中被破坏的指令 参考答案:A 4[单选题] 以下叙述中错误的是( )。 A.C语言是一种结构化程序设计语言 B.结构化程序有顺序、分支、循环三种基本结构组成 C.使用三种基本结构构成的程序只能解决简单问题 D.结构化程序设计提倡模块化的设计方法 参考答案:C 5[单选题] C语言中用于结构化程序设计的三种基本结构是( ) A.顺序结构、选择结构、循环结构 B.if、switch、break C.for、while、do-while D.if、for、continue 参考答案:A 6[填空题] 在结构化分析使用的数据流图(DFD)中,利用_____ 对其中的图形元素进行确切解释。 执行以下程序后的输出结果是 a=14 。 main() {int a=10; a=(3*5,a+4); printf(“a=%d\n”,a); } 参考解析:数据字典 7[单选题] 结构化程序设计的基本原则不包括 ( ) A.多态性 B.自顶向下 C.模块化 D.逐步求精 参考答案:A 参考解析:结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化。程序设计时,应先从最上层总目标开始设计,逐步使问题具体化。对复杂问题,应设计-些子目标作为过渡,逐步细化。模块化是把程序要解决的总目标分解为子目标,再进-步分解为具体的小目标,把每一个小目标称为一个模块。 8[单选题] 下列选项中不属于结构化程序设计原则的是 ( ) A.可封装 B.自顶向下 C.模块化 D.逐步求精 参考答案:A 参考解析:结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用go to语句等。 9[填空题] 在面向对象方法中,_________描述的是具有相似属性与操作的一组对象。 参考解析:类 【解析】在面向对象方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。 10[单选题] 为了使模块尽可能独立,要求( )。 A.内聚程度要尽量高,耦合程度要尽量强 B.内聚程度要尽量高,耦合程度要尽量弱 C.内聚程度要尽量低,耦合程度要尽量弱 D.内聚程度要尽量低,耦合程度要尽量强 参考答案:B 参考解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦台性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。 11[填空题] 符合结构化原则的三种基本控制结构是顺序结构、__________和循环结构。 参考解析:选择结构 【解析】程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。 12[单选题] 结构化程序所要求的基本结构不包括( )。 A.顺序结构 B.GOT0跳转 C.选择(分支)结构 D.重复(循环)结构 参考答案:B 参考解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。 13[填空题] 对软件设计的最小单位(模块或程序单元)进行的测试通常称为 测试。 参考解析:单元 解析:对软件的模板进行的测试通常称为单元测试。 14[填空题] 数据结构分为线性结构与非线性结构,带链的栈属于 。 参考解析:线性结构 【解析】一般将数据结构分为线性结构与非线性结构两大类。如果一个非空的数据结构满足以下两个条件: ①有且只有一个根结点; ②每一个结点最多有一个前件,也最多有一个后件。 则称该数据结构为线性结构,所以带链栈为线性结构。 15[单选题] 针对简单程序设计,以下叙述的实施步骤正确的是( )。 A.确定算法和数据结构、编码、调试、整理文档 B.编码、确定算法和数据结构、调试、整理文档 C.整理文档、确定算法和数据结构、编码、调试 D.确定算法和数据结构、调试、编码、整理文档 参考答案:A 参考解析:简单程序设计的步骤是首先要确定算法和数据结构,然后编码、调试,最后整理相关文档。
全国计算机二级C语言-笔试样卷2018
全国计算机等级考试二级笔试样卷C语言程序设计一、选择题(( 1)~( 10)、(21)~( 40)每题 2 分,(11)~( 20)每题 2 分,共 70 分)以下各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应地点上,答在试卷上不得分。
( 1)以下选项中不切合优秀程序设计风格的是A)源程序要文档化B)数听说明的序次要规范化C)防止滥用 goto 语句D)模块设计要保证高耦合、高内聚( 2)从工程管理角度,软件设计一般分为两步达成,它们是A)纲要设计与详尽设计B)数据设计与接口设计C)软件构造设计与数据设计D)过程设计与数据设计( 3)以下选项中不属于软件生命周期开发阶段任务的是A)软件测试B)纲要设计C)软件保护D)详尽设计( 4)在数据库系统中,用户所见的数据模式为A)观点模式B)外模式C)内模式D)物理模式( 5)数据库设计的四个阶段是:需求剖析、观点设计、逻辑设计和A)编码设计B)测试阶段C)运转阶段 D)物理设计( 6)设有以下三个关系表以下操作中正确的选项是A) T=R∩ S B) T= R∪ SC) T= R× S D) T=R/S( 7)以下表达中正确的选项是A)一个算法的空间复杂度大,则其时间复杂度也必然大B)一个算法的空间复杂度大,则其时间复杂度必然小C)一个算法的时间复杂度大,则其空间复杂度必然小D)上述三种说法都不对( 8)在长度为64 的有序线性表中进行次序查找,最坏状况下需要比较的次数为A)63B)64C)6D)7( 9)数据库技术的根本目标是要解决数据的A)储存问题B)共享问题C)安全问题D)保护问题( 10)对以下二叉树进行中序遍历的结果是A) ACBDFEG B) ACBDFGE C) ABDCGEF D) FCADBEG( 11)以下表达中错误的选项是A)一个 C 语言程序只好实现一种算法B) C 程序能够由多个程序言件构成C) C 程序能够由一个或多个函数构成D)一个 C 函数能够独自作为一个 C 程序言件存在( 12)以下表达中正确的选项是A)每个 C 程序言件中都一定要有一个main()函数B)在 C 程序中 main()函数的地点是固定的C) C 程序中全部函数之间都能够互相调用,与函数所在地点没关D)在 C 程序的函数中不可以定义另一个函数( 13)以下定义变量的语句中错误的选项是A) int _int;B)double int_;C)char For;D) float US$;( 14)若变量A) ++x,y=x--x、y已正确立义并赋值,以下切合 C 语语言法的表达式是B)x+1=y C) x=x+10=x+y D) double(x)/10(15)以下对于逻辑运算符双侧运算对象的表达中正确的选项是A)只好是整数 0 或 1 B)只好是整数0 或非0 整数C)能够是构造体种类的数据D)能够是随意合法的表达式(16)如有定义 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)( 17)有以下程序main(){ int x, y, z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运转后的输出结果是A) 2,3,3B) 2,3,2C) 2,3,1D) 2,2,1(18)设有定义: int a;float b;履行scanf("%2d%f",&a,&b);语句时,若从键盘输入 876 543.0<回车 >,a 和 b 的值分别是A) 876 和 543.000000B) 87和 6.000000C) 87 和 543.000000D) 76和 543.000000( 19)有以下程序main(){ int a=0, b=0;a=10;b=20;printf("a+b=%d\n",a+b);/*/* 给 a 赋值给 b 赋值输出计算结果*/*/}程序运转后的输出结果是A) a+b=10B)a+b=30C) 30D)犯错( 20)在嵌套使用if 语句时, C语言规定else 老是A)和以前与其拥有同样缩进地点的if 配对B)和以前与其近来的if 配对C)和以前与其近来的且不带else 的if配对D)和以前的第一个if 配对( 21)以下表达中正确的选项是A) break 语句只好用于switch 语句B)在 switch 语句中一定使用defaultC) break 语句一定与switch 语句中的 case 配对使用D)在 switch 语句中,不必定使用break 语句( 22)有以下程序main(){ int k=5;while( --k) printf("%d",k -= 3);printf("\n");}履行后的输出结果是A) 1B) 2C) 4D)死循环( 23)有以下程序main(){ int i;for(i=1; i<=40; i++){ if(i++%5==0)if(++i%8==0)printf("%d ",i);}printf("\n");}履行后的输出结果是A) 5B) 24C)32D)40( 24)以下选项中,值为 1 的表达式是A) 1– '0'B)1 - '\0'C) '1' -0D) '\0' - '0'( 25)有以下程序fun(int x, int y){ return (x+y); }main(){ int a=1, b=2, c=3, sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}履行后的输出结果是A) 6B) 7C)8D)9( 26)有以下程序main(){ char s[]="abcde";s+=2;printf("%d\n",s[0]);}履行后的结果是A)输出字符 a 的 ASCII码B)输出字符 c 的 ASCII码C)输出字符 c D)程序犯错( 27)有以下程序fun(int x, int y){ static int m=0, i=2;i+=m+1;m=i+x+y;return m;}main(){ int j=1, m=1, k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}履行后的输出结果是A)5, 5B) 5, 11C) 11, 11D) 11, 5( 28)有以下程序fun(int x){ int p;if(x==0||x==1)return(3);p=x-fun(x -2);return p;}main(){ printf("%d\n",fun(7)); }履行后的输出结果是A) 7B) 3C) 2D)0( 29)在 16 位编译系统上,如有定义int a[]={10,20,30}, *p=&a; ,当履行 p++;后,下列说法错误的选项是A) p 向高地点移了一个字节B) p 向高地点移了一个储存单元C) p 向高地点移了两个字节D) p 与 a+1 等价( 30)有以下程序main(){ int a=1, b=3, c=5;int*p1=&a, *p2=&b, *p=&c;*p =*p1*(*p2);printf("%d\n",c);}履行后的输出结果是A) 1B) 2C) 3D)4( 31)如有定义: int w[3][5]; ,则以下不可以正确表示该数组元素的表达式是A) *(*w+3)B) *(w+1)[4]C) *(*(w+1))D) *(&w[0][0]+1)( 32)如有以下函数首部int fun(double x[10], int *n)则下边针对此函数的函数申明语句中正确的选项是A) int fun(double x, int *n);B) int fun(double, int );C) int fun(double *x, int n);D) int fun(double *,int *);( 33)有以下程序void change(int k[ ]){ k[0]=k[5]; }main(){ int x[10]={1,2,3,4,5,6,7,8,9,10},n=0;while( n<=4 ) { change( &x[n]) ; n++; }for(n=0; n<5; n++)printf("%d ",x[n]);printf("\n");}程序运转后输出的结果是A)678910B)13579C)12345D)62345( 34)有以下程序main(){ int x[3][2]={0}, i;for(i=0; i<3; i++)scanf("%d",x[i]);printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);}若运转时输入: 2 4 6<回车 >,则输出结果为A)200B)204C)240D)246( 35)有以下程序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);( 36)有以下程序#includemain( int argc, char*argv[ ]){ int i=1,n=0;while (iprintf("%d\n",n);}该程序生成的可履行文件名为:proc.exe。
2018年计算机二级考试C语言章节习题答案一
2018年计算机⼆级考试C语⾔章节习题答案⼀ 2018年计算机等级考试即将开始啦!⼩编在这⾥为考⽣们整理了2018年计算机⼆级考试C语⾔章节习题答案,希望能帮到⼤家,想了解更多资讯,请关注店铺的及时更新哦。
2018年计算机⼆级考试C语⾔章节习题答案⼀ 第1章程序设计基本概念 1.1 程序和程序设计 1[单选题] 以下叙述中错误的是( )。
A.C语⾔源程序经编译后⽣成后缀为.obj的⽬标程序 B.C程序经过编译、连接步骤之后才能形成⼀个真正可执⾏的⼆进制机器指令⽂件 C.⽤c语⾔编写的程序称为源程序,它以ASCIl代码形式存放在⼀个⽂本⽂件中 D.C语⾔中的每条可执⾏语句和⾮执⾏语句最终都将被转换成⼆进制的机器指令 参考答案:D 参考解析:并不是源程序中的所有⾏都参加编译。
在条件编译形式下,相关内容只在满⾜⼀定条件时才进⾏编译。
选项D)中的⾮执⾏语句不在其范围内。
2[单选题] 下列描述中正确的是( )。
A.算法是指对解题⽅案的准确⽽完整的描述 B.算法的有穷性是指算法程序的长度是有限的 C.算法是否有效与拥有的情报⽆关 D.算法的基本特征有可⾏性、确定性和有穷性 参考答案:A 参考解析:算法是指对解题⽅案的准确⽽完整的描述。
算法具有4个特征:可⾏性、确定性、有穷性和拥有⾜够的情报。
有穷性指算法必需在有限时间内做完,即算法必需能在执⾏有限个步骤之后终⽌。
当算法拥有⾜够的情报时,此算法才是有效的;⽽当提供的情报不够时,算法可能⽆效。
3[单选题] 下列数据结构中属于⾮线性结构的是( )。
A.队列 B.线性表 C.⼆叉树 D.栈 参考答案:C 参考解析:线性结构满⾜两个条件:有且只有⼀个根结点;每个结点最多只有⼀个前件,也最多只有⼀个后件。
栈、队列、线性表都属于线性结构,⼆叉树是⼀种⾮线性结构,因为除叶⼦结点外,每个结点都有两个后件,不满⾜线性结构的条件。
4[单选题] 4个元素A、B、C、D依次⼊栈,⼊栈过程中允许栈顶元素出栈,假设某⼀时刻栈的状态是C(栈顶)、B、A(栈底),则不可能的出栈顺序是( )。
2018年c语言考试题及答案
2018年c语言考试题及答案一、选择题(每题2分,共20分)1. 下列选项中,哪个是C语言中的合法标识符?A. 2variableB. variable2C. variable_2D. variable-2答案:C2. C语言中,用于定义一个整型变量的关键字是?A. intB. floatC. charD. double答案:A3. 下列哪个选项不是C语言中的运算符?A. %B. &&C. ==D. *答案:D4. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:C5. 下列关于C语言数组的描述,哪个是错误的?A. 数组可以存储相同类型的元素B. 数组的索引从0开始C. 数组的大小在定义时必须确定D. 数组可以动态分配大小答案:D6. C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strncpyD. strcat答案:A7. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. =D. +=答案:A8. 在C语言中,哪个关键字用于声明一个指针变量?A. pointerB. ptrC. *D. var答案:C9. 下列关于C语言函数的描述,哪个是正确的?A. 函数可以没有返回值B. 函数可以返回多个值C. 函数可以没有参数D. 函数必须有参数答案:C10. C语言中,哪个关键字用于定义一个结构体?A. structB. unionC. enumD. type答案:A二、填空题(每题3分,共15分)1. 在C语言中,使用____关键字可以定义一个常量。
答案:const2. C语言中,字符串字面量是用____括起来的。
答案:""3. 使用____运算符可以将一个变量的值赋给另一个变量。
答案:=4. 在C语言中,使用____函数可以计算两个数的和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,. 模拟卷1
1 [填空题] 下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。
例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: ,. 参考解析: 【参考答案】
【解题思路】 填空1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0’。 填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。 填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c。
二、程序修改题 2 [简答题] 下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。
例如,若主函数中a字符串为“aBCDeFgH”,b字符串为"Abcd",则c中的字符串应为“aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 ,. 注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构!
参考解析: 【参考答案】 (1)int k=0; (2)while(*p||*q) 【考点分析】 本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。 【解题思路】 (1)变量k存放数组e的下标,因此应初始化为0。 (2)while循环语句的循环条件是判断两个字符串是否到达结尾。 三. 程序设计题 3 [简答题] ,. 规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。
例如,字符串中的内容为:“****A*BC*DEF*G*******”.删除后,字符串中的内容应当是:“****A*BC*DEF*G”。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
参考解析: 【参考答案】 ,. 【考点分析】 本题考查:删除字符串尾部+号;删除的主要思想是把不删除的字符保留起来。 【解题思路】 对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘\0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号‘\0’。
模拟卷2 一、程序填空题 1 [填空题] 下列给定程序中,函数fun的功能是:从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件BLANK1.C中。 不得增行或删行,也不得更改程序的结构! ,. 参考解析: 【参考答案】 (1)N (2)k (3)ss[i] 【考点分析】 本题考查:for循环语句;if语句条件表达式;字符串拷贝函数strepy的使用。 【解题思路】 填空l:for循环语句作用是遍历字符串数组中的每一个字符串,所以循环变量i的循环条件是i
填空2:题目要求删除串长度小于k的字符串,所以if条件语句的条件表达式是len<=k。 ,. 填空3:通过字符串拷贝函数将串长不大于k的字符串另存,并记录个数。 【解题宝典】 字符串拷贝函数strcpy,其格式为:strepy(字符数组名1,字符数组名2) 功能:把字符数组2中的字符串拷贝到字符数组l中。字符串结束标识‘\0’也一同拷贝。字符数名2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。
二、程序修改题 2 [简答题] 给定程序MODI1.C中,函数fun的功能是:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出“不能分解”。
例如:当输入100时,输出:100=9+10+11+12+13+14+15+16 100=18+19+20+21+22 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: ,. 参考解析: 【参考答案】 (1)m=n; (2)m=m-c;c++; (3)if(m==0) 【解题思路】 (1)每次循环,程序需要对n执行减去连续的正整数序列 来判断n是否刚好为0,即n是否是连续的正整数序列之和,所以需要使用临时变量m寄存n的值,每次循环对m执行减运算操作,不满足继续下一轮。另外,程序声明变量m时,未初始化它的值,所以此处应该修改为:m=n。
(2)语法错误。C语言中每个语句必须以分号结束,所以应修改为:m=m-c;c++;。 (3)题目判断n是否是连续的正整数序列之和,若是,则输出所有序列,程序中m依次减去连续的正整数,当m为0时,表示m(即11)满足条件,再输出当前序列中的每个正整数,所以此处判断条件反了,应修改为:if(m==0)。
3 [简答题] 请编写函数fun,其功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0~P(含P,P小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:1、2、3、4、5、6、7、8、9、10;P的值为3。移动后,一维数组中的内容应为:5、6、7、8、9、10、1、2、3、4。
注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序: ,. 参考解析: 【参考答案】
【解题思路】 本题要求把下标从0~P(含P,P小于等于n-1)的数组元素平移到数组的最后,可以根据输入的P值,通过for循环语句,将P+1-n-1(含n-1)之间的数组元素依次向前移动P+1个存储单元,即W[j-1]=w[j];,同时将0~P个数组元素逐一赋给数组w[n-1],也就是通过语句w[n-1]=ch;来实现此操作的。 ,. 模拟卷3 一、程序填空题 1 [填空题] 给定程序中,函数fun的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序:
参考解析: ,. 【参考答案】
【解题思路】 填空1:由语句fopen("filel.txt","r")可知,fp应该是文件类型指针,因此本空应该填写FILE *。
填空2:feof函数只能对文件类型数据进行操作,因此本空应填写fp。 填空3:putchar()代表输入一个字符,从ch=fgetc(fp)可以看出本题应该填写ch。 二、程序修改题 2 [简答题] 给定程序中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指的数组的尾部。例如,当a所指字符串中的内容为“abcdefg”,b所指字符串中的内容为“1234”时,C所指数组中的内容应为“a4b3c2dlefg”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdefg”时,C所指数组中的内容应该为“192f3e4dcba”。
请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序: ,.
参考解析: 【参考答案】 ,. 【解题思路】 (1)由i和j定义的初始值可知,此处应该判断i是否小于j,所以应改为while(i (2)此处将if错写成If,这个错误比较简单,但往往不容易发现。 三. 程序设计题 3 [简答题] 请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19、23、29、31、37。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序: ,. 参考解析: 【参考答案】
【解题思路】 本题主要考查素数的判定方法,如果一个数不能被除了1和其自身以外的数整除,则这个数为素数。本程序使用循环语句控制需要判断的数,在循环体中判断该数是否为素数,若是则存入数组xx中。