全国计算机等级考试C语言题库试题.doc

上传人:s****u 文档编号:12739684 上传时间:2020-05-20 格式:DOC 页数:15 大小:82.50KB
返回 下载 相关 举报
全国计算机等级考试C语言题库试题.doc_第1页
第1页 / 共15页
全国计算机等级考试C语言题库试题.doc_第2页
第2页 / 共15页
全国计算机等级考试C语言题库试题.doc_第3页
第3页 / 共15页
点击查看更多>>
资源描述
2013年3月全国计算机等级考试无纸化二级语言一、选择题(每一题1分,共40分)(1)程序流程图中带有箭头的线段表示的是( )。 A)图元关系 B)数据流 C)控制流 D)调用关系(2)结构化程序设计的基本原则不包括( )。 A)多态化 B)自顶向下 C)模块化 D)逐步求精(3) 软件设计中模块划分应遵循否认准则是( )。 A)低内聚低耦合 B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文档是( )。 A)可行性分析报告 B)软件需求规格说明书 C)概要设计说明书 D)集成测试计划(5)算法的有穷性是指( )。 A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏的情况下,比较次数不是n(n 1)/ 2的排序方法是( )。 A)快速排序 B)冒泡排序 C)直接插入排序 D)堆排序(7)下列关于栈的叙述正确的是( )。 A)栈按“先进先出”组织数据 B)栈按“先进后出”组织数据 C)只能在栈底插入数据 D)不能删除数据(8)在数据库设计中,将E-R图转化成关系数据模型的过程属于( )。 A)需求分析阶段 B)概念设计阶段 C)逻辑设计阶段 D)物理设计阶段(9)有三个关系R,S和T如下:RBCDa0k1b1niSBCDf3h2a0k1n2x1 TBCDa0k1由关系R和S通过运算得到关系T,则所使用的运算为( )。 A)并 B)自然连接 C)笛卡儿积 D)交(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。 A)课号,成绩 B)学号,成绩 C)学号,课号 D)学号,姓名,成绩(11)以下叙述中错误的是( )。 A)C语言中的每条可执行语句和非执行语句最终都将被转化成二进制的机器指令 B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D)C语言源程序经编译后生成后缀为.obj的目标程序(12)以下选项中,合法的一组C语言数值常量是( )。 A)12. 0Xa23 4.5e0 B)028 .5e-3 -0xf C).177 4el.5 0abc D)0x8A 10,000 3.e5(13)以下选项中不合法的标识符是( )。 A)&a B)FOR C)print D)_00(14)若有代数式 (其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是( )。A)sqrt(fabs(pow(n,x)+exp(x)B)sqrt(fabs(pow(n,x)+pow(x,e)C)sqrt(abs(nx+ex)D)sqrt(fabs(pow(x,n)+exp(x)(15)若有定义:double a=22;int i=0,k=18;则不符合C语言规定的赋值语句是( )。A)i=(a+k)=(i+k); B)i=a%11;C)a=a+,i+; D)i=!a;(16)有以下程序: #include main() int s,t,A=10;double B=6; s=sizeof(A);t = sizeof(B);printf(“%d,%dn”,s,t); 在VC6.0平台上编译运行,程序运行后的输出结果是( )。A)10,6 B)4,4 C)2,4 D)4,8(17)有以下程序: #include main() char a,b,c,d; scanf(“%c%c”,&a,&b); c=getchar();d=getchar(); printf(“%c%c%c%cn”,a,b,c,d); 当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符) 12 34 则输出结果是( )。A) 12 B)12 C)1234 D)12 34 3(18)以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。A)可以是任意合法的表达式 B)只能是整数0或非0整数C)可以是结构体类型的数据 D)只能是整数0或1(19)有以下程序: #include main() int a =0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf(“%d,%d,%d,%dn”,a,b,c,d);程序输出()A)1,1,2,0 B)0,0,0,3 C)编译有错 D)0,1,2,0(20)有以下程序:#include Main()Int x=1,y=0,a=0,b=0;Switch(x)case 1; Switch(y)case 0:a+;break;case 1:b+;break;Case 2:a+;b+:break;Case 3:a+;b+;Printf(“a=%d,b=%dn”,a,b);程序运行结果是()A) a=2,b=2 B)a=2,b=1 C)a=1,b=1 D)a=1,b=0(21)以下程序段中的变量已正确定义:for(i=0;i4;i+;i+)for(k=1;k3;k+);printf(“*”);程序段输出结果是()。A)* * B)* * * * C)* D)* * * * * * * *(22)有以下程序段:#includeint i,n;for(i=0;i8;i+) n=rand() % 5;switch(n) case 1:case 3:printf(“%d n”,n);break;case 2:case 4:printf(“%d n”,n);continue;case 0:exit(0);printf(“%d n”,n);以下关于程序段执行情况的叙述。正确的是()A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2不做任何操作 D)当产生的随机数n为0时结束程序运作(23)有以下程序:#includeint f(int x);main() Int n=1,m;M=f(f(f(n);Printf(“%dn”,m);Int f(intx) Retrun x*2;程序运行后的输出结果是()A)8 B)2 C)4 D)1 (24)以下叙述中错误的是()A)可以给指针变量赋一个整数作为地址值B)函数可以返回地址值C)改变函数形参的值,不会改变对应实参的值D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋值NULL(25)设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是()。A) int *p=(float)x; B)float *p=&x; C)float p=&x; D)float *p=1024;(26)以下数组定义中错误的是()A) int x23=1,2,3,4,5,6; B) int x3=0;C) int x3=1,2,3,4,5,6 ; D) int x23=1,2,3,4,5,6;(27) 有以下程序:includevoid fun(int a,int n) int i,t;for(i=0;in/2;i+) t=ai; ai=an-1-i; an-1-i=t; main() int k10=1,2,3,4,5,6,7,8,9,10,I;fun(k,5);for(i=2;i8;i+)printf(“%d”,ki);printf”n”);程序运行结果是()A)321678B)876543C)1098765D)345678(28)有以下程序::#include#define N 4void fun(int aN,int b) int i;for(i=0;iN;i+)bi=aii-ain-1-i;Main()int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 ,yN,I;fun(x,y);for(i=0:iN;i+)printf(“%d,”yi);printf(“n”);程序运行后的输出结果()A)-3,-1,1,3 B)-12,-3,0,0 C)0,1,2,3 D)-3,-3,-3,-3(29)设有定义:char s81;int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是() A)get(s);B)while(si+=getcher()!=n);si=0;C)scanf(“%s”,s);D)doscanf(“%c”,&si);while(si+!=n);si=n;(30)设有定义:char p =1,2,3,*q=p;一下不能计算出一个char型数据所占有字节数的表达式是()。 A)sizeof(p) B)sizeof(char) C)sizeof(*q) D)sizeof(p0)(31)有以下程序: #include #include main() Char str 20=“One*World”,”One*Dream!”,*p=str1; printf(“%d,”,strlen(p);printf(“%sn”,p);程序运行后的输出结果是( )。A)10,One*Dream! B)9,One*Dream! C)9,One*World D)10,One*World(32) 有以下程序: #include main() char s =”012xy08s34f4w2”;int i, n=0;for(i=0;si!=0;i+) if(si=0&si=9)n+;printf(“%dn”,n);程序运行后的输出结果是( )。A)0 B)3 C)7 D)8(32) 有以下程序: #include fun(int x ,int y) static int m=0,i=2;i+=m+1;m=i+x+y; returnm;main() int j=1,m=1,k;k=fun(j,m);printf(“%d,”,k);k=fun(j,m);printf(“%dn”,k);执行后的输出结果是( )。A)5,11 B)5,5 C)11,11 D)11,5(34)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。 A)auto和static B)extern和register c)auto和register D)static和register(35)下面结构体的定义语句中,错误的是( )。 A)struct ordint x;int y;int z;struct ord a; B)struct ord int x;int y;int z;struct ord a; C)struct ordint x;int y;int z;a; D)structint x;int y;int z;a;(36)有以下程序: #include Typedef structint b,p;A; Void f(A c)/*注意:c是结构变量名*/ int j;c.b+=1;c.p+=2;main() int i; A a=1,2; f(a); printf(“%d,%dn”,a.b,a.p);程序运行后的输出结果是( )。A)2,4 B)1,2 C)1,4 D)2,3(37)以下叙述中正确的是( )。 A)在C语言中,预处理命令行都以“#”开头 B)预处理命令行必须位于C源程序的起始位置 C)#include 必须放在C程序的开头 D)C语言的预处理不能实现宏定义和条件编译的功能(38)有以下程序: #include #include Int fun(int n) int *p;p=(int*)malloc(sizeof(int);*p=n;return *p;main() int a; a=fun(10);printf(“%dn”;a+fun(10);程序的运行结果是( )。A)0 B)10 C)20 D)出错(39)有以下程序: #include main() unsigned char a=8,c;c=a3;printf(“%dn”,c);程序运行后的输出结果是( )。A)16 B)1 C)32 D)0(40)读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);其中buffer代表是( )。A)一个内存块的字节数 B)一个整形变量,代表待读取的数据的字节数 C)一个文件指针,指向待读取的文件 D)一个内存块的首地址,代表读入数据存放的地址-二、程序填空题(共18分)下列给定程序中函数fun的功能是:计算如下公式直到,并且把计算结果作为函数值返回。例如,若形参e的值为le-3,则函数的返回值为0.551690。请在下面划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includedouble fun(double e) int i.k;double s,t,x; s=0;k=1;i=2; /*found*/ x=【1】/4; /*found*/ while(x【2】e); s=s+k*x; k=k*(-1); t=2*i; /*found*/ x=【3】/(t*t) ; i+; return s;main() double e=1e-3; printf(“nThe result is :%fn”,fun(e); 3、 程序修改题(共18分)下列给定程序中函数fun的功能是:求出如下分数序列的前n项目之和,和值通过函数值返回。例如,若n=5,则对应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#include/*found*/ void fun (int n)int a=2,b=1,c,k;double s=0.0;for (k=1;k=n;k+) /*found*/ s=s+(double)a/b; c=a;a=a+b;b=c; return (s);Void main()int n=5;system(“CLS”);printf(“nThe value of function is :%1fn”,fun(n);4、 程序设计题(共24分)请编写函数fun,其功能是:找出2M整型二位数组中最大元素的值,并将此值返回调用函数。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#define M 4#includeint fun(int aM)Void main()int arr2M=5,8,3,45,76,-4,12,82;printf(max=%dn,fun(arr); 无纸化题库试题答案解析一选择题(1) C)【解析】在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流,所以选择C)。(2) A)【解析】结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A)(3) B)【解析】软件设计中模块划分应遵守的准则是高内聚低耦合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。(4) B)【解析】A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。(5) A)【解析】算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。(6) D) 【解析】除了堆排序算法的比较次数是O(),其他的都是(n-1)/2.(7) B)【解析】栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。(8) C)【解析】将E-R图转换成关系模型数据是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。(9) D)【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出其是从关系R与关系S中取得相同的关系组成,所以运用的是交运算,选择D)。(10) C)【解析】学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选C).(11) A)【解析】C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以A)错误。由C语言构成的指令序列成为C源程序,C源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(成为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为。EXE的可执行文件。(12) A)【解析】C语言中八进制整数常量的开头是数字0,十六进制整形常量的开头数字是Ox,C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以e或E后跟一个整数来表示以10为底数的幂数,切规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B)选项中028错误,八进制中没有数字8。C)选项中4e1.5中e后面的指数不是整数。D)选项中3.e5小数点后面缺少数字。(13) A)【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。应为C语言中区分大小写,所以B)选项中的“FOR”可以作为标识符来用。A)选项中含有非法字符&,所以选择A)。(14) A)【解析】B)选项中函数pow(x,e)错误,应该直接使用exp(x)函数。C)选项中函数abs(nx+ex)错误,应该使用fabs()返回浮点数的绝对值。D)选项中的pow(x,n)参数顺序错误。(15) B)【解析】取模运算符“%”为二元运算符,具有左结合性,并且参与运算的量均应为整型。选项B中的a变量double实型,所以B)不符合规定。(16) D)【解析】C语言中利用sizeof()函数判断数据类型长度,在VC6.0平台中,整形int占4个字节,double型数据占8个字节。(17) D)【解析】按照从键盘输入的数据可以判断字符1给了变量a ,字符2给了变量b,字符即回车给了变量c,字符3给了变量d。所以打印出的结果为D)选项。(18) A)【解析】C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A)。(19) C)【解析】本题中if(a=1)b=1;与case d=3;之间多了语句c=2,所以会出现else语句的位置错误的编译失败提示。(20) B)【解析】case常量表达式只起语句标号的作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此字句执行下去,不再进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a+,此时a 的值为1.然后执行外层case2语句的a+;b+;则a为2,b为1.所以结果为B)。(21) C)【解析】由于内层循环for(k=1;k (3)(t+1)【考点分析】本题考查:基本算数运算的类型转换。其转换规则如下:如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。如果双目运算符两边运算数的类型不一致,系统将自动进行类型转换,使运算符两边运算数的类型达到一致后再进行运算,其类型转换规律见下表。运算数1运算数2转换结果类型短整型长整形短整型长整形整形长整形整形长整形字符型整形字符型整形有符号整型无符号整形有符号整形无符号整形整形浮点型整形浮点型while循环语句,一般考察如何根据题意确定循环条件,以及如何通过循环变量的变化实现循环操作。【解题思路】填空1:变量x定义为double类型 ,而运算符“/”后面是整型数,因此给x赋值时,需要需要数据类型,此处不能将3.0写成3。填空2:while循环语句的循环条件。根据题意确定循环变量应大于1e-3,因此此处应填“”。填空3:表达式的通项是,由于程序中已定义t=2*i,所以此处应该填写(t+1)。【解题宝典】本题填空1还可以运用强制类型转换来实现。强制类型转换是通过类型转换运算来实现的,其一般形式为“(类型说明符)(表达式)”。其功能是:把表达式的运算结果强制转换成类型说明符所表示的类型。例如:(float) a 把a转换成实型(int)(x+y) 把x+y的结果转换为整型3、 程序修改题【参考答案】(1) double fun(int n)(2) s=s+(double)a/b;【考点分析】本题考查:函数定义,函数定义的一般形式为“类型标识符函数名(形式参数表列)”,其中类型标识符用来说明函数值的类型,函数的类型实际上是函数返回值的类型。【解题思路】(1) 由语句“return(s);”和变量s定义为double类型可知,该函数定义时其类型标识符为double类型。(2) 主义数据类型double的书写格式。【解题宝典】确定函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为void型,如果函数有返回值,则函数类型应与返回值类型一致。如果不定义函数类型标识符,则系统默认为int型。4、 程序设计题【参考答案】int fun(int aM)int i,j,max=a00;/*对二维数组进行遍历*/for(i=0;i2;i+) for(j=0;jM;j+) if(maxaij) /*将最大值保存在max中*/ max=aij; return max; 【考点分析】 本题考查:求数组的最大值,需运用循环语句。因为数组是二维数组,所以应使用二层加for循环嵌套。使用for循环语句时需主义变量的取值范围。【解题思路】此类求最大值或最小值的问题,可以采用逐个比较的方式,对数组中所有元素遍历一遍,从中找出数组最大值或最小值。首先定义变量max 用来数组的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋予max,循环结束后max的值即为数组最大值,最后将该值返回。【解题宝典】该类题目考查较多,需要掌握逐个比较的方法。对于m*n二维数组,如果采用逐个查找方法,代码实现如下:for(i=0;im;i+) for(j=0;jmax) max=aij;
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!