2018计算机二级C语言考试真题汇总(本站推荐)

时间:2019-05-14 19:28:47下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《2018计算机二级C语言考试真题汇总(本站推荐)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《2018计算机二级C语言考试真题汇总(本站推荐)》。

第一篇:2018计算机二级C语言考试真题汇总(本站推荐)

模拟卷1 1 [填空题]

下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。

例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa”。

请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。

注意:部分源程序给出如下。

不得增行或删行,也不得更改程序的结构!

试题程序:

参考解析:

【参考答案】

【解题思路】

填空1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘’。

填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。

填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c。

二、程序修改题

[简答题]

下列给定程序中函数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循环语句的循环条件是判断两个字符串是否到达结尾。三.程序设计题

[简答题]

规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。

例如,字符串中的内容为:“****A*BC*DEF*G*******”.删除后,字符串中的内容应当是:“****A*BC*DEF*G”。在编写函数时,不得使用C语言提供的字符串函数。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

参考解析:

【参考答案】

【考点分析】

本题考查:删除字符串尾部+号;删除的主要思想是把不删除的字符保留起来。

【解题思路】

对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号‘’。

模拟卷2

一、程序填空题

[填空题]

下列给定程序中,函数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中。字符串结束标识‘’也一同拷贝。字符数名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;来实现此操作的。

一、程序填空题 [填空题]

给定程序中,函数fun的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。

请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:部分源程序给出如下。

不得增行或删行,也不得更改程序的结构!

试题程序:

参考解析:

【参考答案】

【解题思路】

填空1:由语句fopen(“filel.txt”,“r”)可知,fp应该是文件类型指针,因此本空应该填写FILE *。

填空2:feof函数只能对文件类型数据进行操作,因此本空应填写fp。

填空3:putchar()代表输入一个字符,从ch=fgetc(fp)可以看出本题应该填写ch。

二、程序修改题

[简答题]

给定程序中函数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,这个错误比较简单,但往往不容易发现。三.程序设计题

[简答题]

请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。

例如,若输入17,5,则应输出19、23、29、31、37。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

试题程序:

参考解析:

【参考答案】

【解题思路】

本题主要考查素数的判定方法,如果一个数不能被除了1和其自身以外的数整除,则这个数为素数。本程序使用循环语句控制需要判断的数,在循环体中判断该数是否为素数,若是则存入数组xx中。

第二篇:计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结

(完全针对考试大纲)

概述

总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以 二进制的形式.数据存放的位置就是 他的地址.4)bit是位 是指为0 或者1。byte 是指字节, 一个字节 = 八个位.5)一定要记住 二进制 如何划成 十进制。

概念常考到的:

1)、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2)、每个C语言程序中main函数是有且只有一个。3)、在函数中不可以再定义函数。

4)、算法的是一定要有输出的,他可以没有输入。5)、break可用于循环结构和switch语句。6)、逗号运算符的级别最低。

第一章

1)合法的用户标识符考查:

合法的要求是由字母,数字,下划线组成。有其它元素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了。

关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。2)实型数据的合法形式:

2.333e-1 就是合法的,且数据是2.333×10-1。考试口诀:e前e后必有数,e后必为整数。.3)字符数据的合法形式::

'1' 是字符占一个字节,“1”是字符串占两个字节(含有一个结束符号)。

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:

考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。

5)转义字符的考查:

在程序中 int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。

在程序中 int a = 06d, 是一个八进制的形式。

在转义字符中,’x6d’ 才是合法的,0不能写,并且x是小写。

‘141’ 是合法的。‘108’是非法的,因为不可以出现8。转义字符 意义 ASCII码值(十进制)

a 响铃(BEL)007

b 退格(BS)008

f 换页(FF)012

n 换行(LF)010

r 回车(CR)013

t 水平制表(HT)009

v 垂直制表(VT)011

反斜杠 092

? 问号字符 063

' 单引号字符 039

" 双引号字符 034

空字符(NULL)000

ddd 任意字符 三位八进制

xhh 任意字符 二位十六进制 6)算术运算符号的优先级别:

同级别的有的是从左到右,有的是从右到左。7)强制类型转换:

一定是(int)a 不是

int(a),注意类型上一定有括号的。

注意(int)(a+b)和(int)a+b 的区别。前是把a+b转型,后是把a转型再加b。8)表达式的考查:

是表达式就一定有数值。

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

自加、自减表达式:假设a=5,++a(是为6),a++(为5);

运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这

个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,再放到变量a中。进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。

考试口诀:++在前先加后用,++在后先用后加。

逗号表达式:优先级别最低 ;表达式的数值逗号最右边的那个表达式的数值。(2,3,4)的表达式的数值就是4。9)位运算的考查:

会有一到二题考试题目。

总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。例1: char a = 6, b;

b = a<<2;这种题目的计算是先要把a的十进制6化成二进制,再做位运算。例2: 一定要记住,例3: 在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。10)018的数值是非法的,八进制是没有8的,逢8进1。

11)%符号两边要求是整数。不是整数就错了。12)两种取整丢小数的情况:

1、int a =1.6;

2、(int)a;

第二章

1)printf函数的格式考查:

%d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。

%ld对应 long int;%lf 对应double。2)scanf函数的格式考察:

注意该函数的第二个部分是&a 这样的地址,不是a;

Scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入的第三个数据。3)putchar ,getchar 函数的考查:

char a = getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。

putchar(‘y’)把字符y输出到屏幕中。

4)如何实现两个变量x,y中数值的互换(要求背下来)

不可以把 x=y ,y=x;要用中间变量 t=x;x=y;y=t。

5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)x=(int)(x*1000+0.5)/1000.0

这个有推广的意义,注意 x =(int)x 这样是把小数部分去掉。

第三章

特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。1)关系表达式:

表达式的数值只能为1(表示为真),或0(表示假)

当关系的表达是为真的时候得到1。如 9>8这个是真的,所以表达式的数值就是1; 2)逻辑表达式:

只能为1(表示为真),或0(表示假)a)

共有&&

||

!三种逻辑运算符号。b)

!>&&>|| 优先的级别。

c)

注意短路现象。考试比较喜欢考到。

d)

要表示 x 是比0大,比10小的方法。0

else 是与最接近的if且没有else的相组合的。4)条件表达式:

表达式1 ?表达式2 :表达式3

注意是当非0时候是表达式2的数值,当为0是就是表达式2的数值。考试口诀:真前假后。5)switch语句:

a)一定要注意 有break 和没有break的差别,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swich语句。

b)switch只可以和break一起用,不可以和continue用。

第四章

1)三种循环结构:

a)for(); while();

do-while()三种。

b)for循环当中必须是两个分号,千万不要忘记。

c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。

d)do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错)2)break 和

continue的差别

记忆方法: break:是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。3)嵌套循环

就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。

4)while((c=getchar())!=’n’)和 while(c=getchar()!=’n’)的差别 先看a = 3!= 2 和(a=3)!=2 的区别:

(!=号的级别高于=号 所以第一个先计算 3!=2)第一个a的数值是得到的1;第二个a的数值是3。

考试注意点: 括号在这里的重要性。

第五章

函数:是具有一定功能的一个程序块; 1)函数的参数,返回数值(示意图):

main(){ int a = 5,b=6,c;

c = add(a,b);

printf(“%d”,c);} 调用函数 a,b是实参

整个函数得到一个数值就是 Add函数的返回数值。int add(int x, int y){ int z;

z=x+y;

return z;} 被调用函数 x,y是形式参数 函数返回数值是整型

z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行 2)一定要注意参数之间的传递

实参和形参之间 传数值,和传地址的差别。(考试的重点)

传数值的话,形参的变化不会改变实参的变化。

传地址的话,形参的变化就会有可能改变实参的变化。3)函数声明的考查:

一定要有:函数名,函数的返回类型,函数的参数类型。不一定要有:形参的名称。

第六章

指针变量的本质是用来放地址,而一般的变量是放数值的。int *p 中

*p和p的差别:

*p可以当做变量来用;*的作用是取后面地址p里面的数值 p是当作地址来使用。

*p++ 和(*p)++的之间的差别:改错题目中很重要

*p++是 地址会变化。

(*p)++ 是数值会要变化。

三名主义:(考试的重点)

数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。

第七章

1一维数组的重要概念: 对a[10]这个数组的讨论。

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。

对a[3][3]的讨论。

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。

4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。

5、注意a和a[0]、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。二维数组做题目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。

步骤一:把他们写成:

第一列 第二列 第三列

a[0]à

->第一行 a[1]à

—>第二行 a[2]à

->第三行 步骤二:这样作题目间很简单:

*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。

*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。

一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。

数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写

int a[]={1,2} 合法。

int a[][4]={2,3,4}合法。

但int a[4][]={2,3,4}非法。

二维数组中的行指针 int a[1][2];

其中a现在就是一个行指针,a+1跳一行数组元素。

搭配(*)p[2]指针

a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组元素。搭配*p[2]指针数组使用

还有记住脱衣服法则:

a[2] 变成 *(a+2)

a[2][3]变成 *(a+2)[3]再可以变成 *(*(a+2)+3)这个思想很重要!

第三篇:2017年福建省二级C语言试卷真题

(1)下面叙述正确的是(D)。

A)main()函数必须位于源程序文件的开头 B)程序中必需含有自定义函数 C)每行最多只能写两条语句

D)所有语句都必须以分号“;”结束

(2)下面叙述错误的是(D)。

A)C语言规定可逐个引用数组元素但不能一次引用整个数组 B)C语言数组名称是数组在内存中的首地址 C)数组中每一个元素都属于同一个数据类型 D)C语言数组长度在定义数组时刻不作确定

(3)以下程序段的运行结果是(C)。

int t[ ][3]={1,2,3,4,5,6,7,8,9,10,11,12};printf(“%dn”,t[1][1]);A)4 B)3 C)5 D)

1(4)以下程序段的运行结果是(C)。

char str[3][2]={„a‟,‟b‟,‟c‟,‟‟,‟e‟,‟f‟};printf(“%s”,str[0]);A)abcef B)abcef C)abc D)a

(5)以下程序段的运行结果是(C)。

int f(int c){ c+=2;

return c;} main(){ int a=2,c=5;a=f(a);

printf(“%d %d n”,a,c);} A)2 4 B)4 4 C)4 5 D)2

5(6)下面叙述错误的是(D)。

A)“#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE B)C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率

C)“#include ”命令的作用是在预处理时将stdio.h文件中的实际内容代替该命令 D)宏定义也是C语句,必须在行末加分号

(7)若有定义:int a=2,*p=&a;,则以下(A)均表示地址。A)&a,p B)a,p C)a,*p D)&a,*p

(8)以下程序段运行后x的值为(C)。

int a[ ]={1,2,3,4,5,6,7,8};int i,x,*p;x=1;p=&a[1];for(i=0;i<3;i++)

x*=*(p+i);A)1 B)120 C)24 D)6

(9)下列(C)对结构类型变量定义是错误的。A)struct teacher

{ int num;

int age;

};struct teacher teach1;B)struct

{ int num;

int age;

} teach1, teach2;C)struct

{ int num;

int age;

} teacher;struct teacher teach1;D)struct teacher

{ int num;

int age;

} teach1;

(10)以下程序段运行后,(D)对数组a元素的引用是错误的。(其中0≤i<4,0≤j<3)

int i,j,(*p)[3];int a[ ][3]={1,2,3,4,5,6,7,8,9,10,11,12};p=a;A)*(*(a+i)+j)B)*(*(p+i)+j)C)p[i][j] D)*(p[i]+j)

(11)若有定义:

char ch;int j,k;enum day {sun, mon, tue, wed, thu, fri, sat};int a[sat];则(C)对下列语句是否符合语法规则的判断是正确的。sun=0;

/*语句1*/ j=mon+tue;

/*语句2*/ if(a[mon]>0)j++;/*语句3*/ A)语句1、2、3均正确

B)语句2正确,语句1和语句3错误 C)语句1错误,语句2和语句3正确 D)语句1、2、3均错误

(12)C语言的基本数据类型包括(A)。A)整型、实型、字符型 B)整型、指针型、字符型 C)整型、实型、逻辑型 D)整型、实型、空类型

(13)下面程序运行后,屏幕显示File open error!,则可能的原因是(A)。#include main(){ FILE *fp;char str[256];fp=fopen(“test.txt”,”rt”);if(fp= =NULL){ printf(“File open error!:);

return;} fscanf(fp,”%s”,str);fclose(fp);} A)当前工作目录下没有test.txt文件 B)函数fopen()的参数是错误的

C)当前工作目录下的test.txt文件是空文件 D)text.txt文件已经打开

(14)(C)语句符合C语言语法。A)int a=b=2,c=5;B)float x=3.2, int i,j=6;C)float x=2.3,b,c;D)int a=2,b+=a;

(15)若有定义:int x,y,z;语句x=(y=z=3,++y,z+=y);运行后x的值为(B)。A)6 B)7 C)8 D)

3(16)若有定义int a=8,b=5;要实现输出形式为:8*5=40,正确的printf()函数调用语句是(D)。A)printf(“a*b=a*bn”);B)printf(“a*b=%dn”,a*b);C)printf(“%d*%d=a*bn”,a,b);D)printf(“%d*%d=%dn”,a,b,a*b);

(17)若有定义:int a;且表达式!a的值为0,则表达式(B)的值为1。A)!(a<0||a>0)B)a!=0 C)a= =0 D)a=0

(18)下列运算符中优先级最低的是(C)。A)> B)* C)= D)!

(19)以下程序段运行后x的值为(C)。

int a=3,b=6,x;x=(a= =b)?a++:--b;A)6 B)4 C)5 D)3

(20)以下程序段运行后x的值为(A)。

int i=0,x=0;for(;i<=5;i++,i++){x+=3;} A)9 B)15 C)6 D)12

(21)(B)是关于C语言数据类型的正确叙述。A)枚举类型不是基本类型

B)变量使用前应定义相应的数据类型 C)不允许使用空类型 D)数组不是构造类型

(22)(C)是正确的数组定义。A)int n=5;int arr[n];B)int n;n=5;int arr[n];C)int arr[10];D)int N=5, arr[N];

(23)以下程序段运行后a的值为(B)。

int a=2;a=strcmp(“miss”,”miss”);A)true B)0 C)1 D)-

1(24)以下程序段的运行结果是(D)。

int fun(int array[3][3]){ int j;

for(j=0;j<3;j++)array[1][j]++;

printf(“n”);} main(){ int j,a[3][3]={0,1,2,1,0,4,2,4,5};

fun(a);

for(j=0;j<3;j++)printf(“%2d”,a[1][j]);

printf(“n”);} A)1 0 4 B)0 1 2 C)1 2 3 D)2 1

5(25)若有定义:#define PI 3,则表达式PI*2*2的值为(C)。A)4 B)不确定 C)12 D)32

2(26)若有定义:int *p1,*p2;,则不能用于指针变量p1、p2之间的运算符是(C)。A)-B)= C)+ D)= =

(27)若有定义:

struct teacher { int num;

char sex;

int age;} teacher1;则下面叙述错误的是(A)。A)teacher1是结构类型名

B)struct teacher是用户定义的结构类型

C)num、sex、age都是结构变量teacher1的成员 D)struct是结构类型的关键字

(28)下列程序段运行后,表达式(A)的值为3。

struct point { int x;

int y;} *p;struct point a[3]={1,2,3,4,5,6};p=a;A)p[1].x B)*(p+2)C)p[3].x D)p[2].x

(29)若有定义:

typedef int NUM[100];NUM n;则(A)语句是正确的。A)n[0]=2;B)NUM=2;C)NUM=n;D)n=2;

(30)(D)为非法的字符串常量。A)“case” B)“ “ C).”056” D)„123‟

(31)若当前工作目录下有一文本文件test.txt,其内容为“cprogram“(不包含引号),则以下程序段的运行结果是(A)。

FILE *fp;char *str;if((fp=fopen(“test.txt”,”r”))!=NULL)

str=fgets(str,5,fp);printf(”%s“,str);fclose(fp);A)cpro B)cprog C)ogram D)gram

(32)若有定义:int a=3;,语句a+=a-=a*a;运行后a的值为(C)。A)-3 B)-6 C)-12 D)0

(33)若有定义:int i=3,j=6;,则表达式(--i)*(j++)的值为(A)。A)12 B)10 C)18 D)15

(34)getchar()函数的功能是获取终端输入的(B)。A)一个实型变量值 B)一个字符 C)多个字符

D)一个整型变量表达式

(35)若有定义:int a;,则表达式(B)不能用来判断a值为奇数是“真”,偶数是“假”。A)a%2= =1 B)!(a%2)C)a%2 D)!(a%2= =0)

(36)若有定义:float x=3.5,y=3.6;则表达式(A)的值为6。A)(int)x+(int)y B)x+y C)(int)(x+y)D)int(x+y)

(37)以下程序运行后输出结果是(C)。void main(){ int a,b=2,c=6;a=3;if(a>6)a=a+b;else if(a= =6)b=a+c;else a=b+c;

printf(”%dn“,a);} A)9 B)6 C)8 D)

5(38)以下程序段运行后x的值为(D)。

int i,j,x=0;for(i=3;i>=1;i--)for(j=1;j<=i;j++)

x=x+2;A)8 B)14 C)10 D)1

2(39)下面叙述错误的是(D)。

A)c源程序必须包含一个main()函数 B)c源程序可由一个或多个函数组成

C)一个c源程序的执行是从main()函数开始,直到main()函数结束 D)注释说明部分只能位于c源程序的最前面

(40)下面叙述错误的是(C)。

A)一个指针变量只能指向同一类型的变量 B)一个变量的地址称为该变量的指针 C)可以将一个整数值赋给指针变量

D)任何指针变量都可以与空指针NULL进行比较

(41)以下程序的运行结果是(C)。

main(){ int x,y;int *p,*q,*t;x=23;y=45;p=&x;q=&y;t=p;p=q;q=t;

printf(”%d,%dn“,x,y);} A)45,23 B)45,45 C)23,45 D)23,2

3(42)若有定义int a=1,b=2,t=3;

struct data { char a;

float b[3];

long c;}d1;则变量d1的长度是(B)。A)4 B)17 C)12 D)15

(43)以下程序的运行结果是(A)。

main(){ int a[3]={1,2,3};int *num[3];int **p,i;for(i=0;i<3;i++)

num[i]=&a[i];p=num;

printf(”%d “,**p);} A)1 B)&a[0] C)3 D)num

(44)下面程序运行后,屏幕显示write ok!,则下面叙述正确的是(C)。

main(){ FILE *fp;fp=fopen(“data.txt”,”wt”);if(fp!=NULL){ fprintf(fp,”%sn”,”File write successd!n”);fclose(fp);printf(“write ok!n”);} } A)当前工作目录下找不到data.txt文件 B)当前工作目录的data.txt文件已经打开 C)当前工作目录的data.txt文件已经关闭

D)当前工作目录下存在data.txt文件,其中的内容是”write ok!”

(45)(C)为正确的用户标识符。A)union B)3_row C)max_at D)min-5

(46)若有定义:int b=-15;,则(C)为正确的赋值表达式。A)b=*5 B)*b=6 C)b+=b*3 D)b+10=-5

(47)以下叙述错误的是(C)。

A)算术运算符中不包含“=”运算符

B)模运算符“%”是c语言基本的算术运算符 C)算术运算符中只有“*”、“/”优先级高于关系运算符

D)自加和自减运算符只能用于变量,而不能用于常量或表达式

(48)若有定义:float x=2,y;int a=3;语句y=1*(x+a)/3;运行后,y的值为(D)。A)2.0 B)1.0 C)0 D)1.666667

(49)若有定义:int arr[15],n=5;无法正确引用arr数组元素的是(A)。A)arr[10+n] B)arr[0] C)arr[15-n] D)arr[n]

(50)以下程序段运行后s的值是(B)。

int a[3][3]={1,2,3,1,2,3,1,2,3};int i,j,s=0;for(i=0;i<3;i++)for(j=i;j<3;j++)

s+=a[i][j];A)12 B)14 C)13 D)15

(51)以下程序段的运行结果是(C)。

char a[]=”abcdef”;char b[]=”xyz”;strcpy(a,b);printf(“%c”,a[2]);A)c B)y C)z D)b

(52)以下程序的运行结果是(C)。

#define X a+b main(){

int a=3,b=4,s1;

s1=2*X;

printf(”%dn",s1);} A)8 B)14 C)10 D)6

(53)若有定义int x=1,y=2,n=3;则(C)为正确的表达式。A)float(y/n)B)(x+y)(y+n)C)x=y*3,y=(x+n)/y D)x=ny

(54)若有定义

struct teacher { int num;

char name[10];

char sex;

int age;}t1={2001,”Li Ming”,‟M‟,35};则下列(B/C)对结构变量引用是正确的。A)t1->name B)t1.name C)t1.name[0] D)t1->name[0]

(55)若有定义enum day{sun,mon,tue,wed,thu,fri,sat};,则枚举常量sun、mon的值分别为(A)。A)0 1 B)7 1 C)7 0 D)1

2(56)若有语句int a;char c;scanf(“%3d%c”,&a,&c);,为将整数135赋给a,字符'6'赋给c,正确的数据输入方式是(C)。(说明:代表换行,__代表空格)A)135__6 B)1356 C)1356 D)135__6__

(56)若有定义int a=3,b=5,c=8;则表达式!(a-b)||(c-b)的值为(A)。A)1 B)0 C)2 D)

3(57)若有定义:float x=3.5,y=5.5;则表达式(A)的值为2。A)(int)(x+y)%7 B)int(x+y)%7 C)(x+y)%7 D)(int)x+y%7

(58)若有定义:int i,x=0;语句for(i=1;i<=3;i++)x+=2;与下列(D)程序段不等价。A)i=1;for(;i<=3;i++)x+=2;B)for(i=1;i<=3;)

{x+=2;i++;} C)i=1;for(;i<=3;){x+=2;i++;} D)i=1;

for(;;i++)x+=2;

(59)以下(A)对二维数组arr的初始化是错误的。A)int arr[2][3]={{1,2},{3,4},{5,6}};B)int arr[ ][3]={1,2,3,4,5};C)int arr[2][3]={{1},{3,4,5}};D)int arr[2][3]={{1,2},{3,4}};

(60)若有定义:char str1[10],str2[10]=”Fujian”;,能将字符串”Fujian”赋给数组str1的正确语句是(D)。A)strcopy(str1,str2);B)str1=”Fujian”;C)strcpy(str2,str1);D)strcpy(str1,str2);

(61)C语言中,数组名作为函数调用的实参时,下面叙述正确的是(A)。A)形参数组中各元素值的改变会使实参数组相应元素的值同时发生变化 B)传递给形参的是数组第一个元素的值 C)传递给形参的是数组元素的个数

D)传递给形参的是数组中全部元素的值

(62)以下程序段的运行结果是(C)。

int x[ ]={2,3,4,5,6,7},*p=x;int i,s=0;for(i=1;i<5;i++)s+=p[i++];printf(“%d”,s);A)14 B)6 C)8 D)20

(63)若有定义int x,a,b;语句x=(a=2,b=3,a+b);运行后,x、a、b的值依次为(D)。A)2 3 5 B)5 3 2 C)3 2 5 D)5 2

3(64)以下程序段的运行结果是(B)。

int s=15;switch(s/4){default: printf(“Over “);case 1: printf(“One “);break;case 2: printf(“Two ”);} A)Two B)Over One C)Over Two D)One

(65)若有定义#define F 2+3,则表达式F*F的值为(D)。A)13 B)17 C)25 D)11

(66)以下程序段的运行结果是(A)

int x[3]={1,2,3};int *p;p=x;for(p++;p<&x[2];p++)printf(“%d “,*p);A)2 B)2 3 C)3 D)1 2

(67)若有定义

union u_type { int x;

float y[3];

char z;}a;则变量a的长度是(D)A)4 B)1 C)15 D)12

(68)若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a;(C)对数组a元素的引用是正确的。A)**(p+4)B)(**p)[2] C)*(p[2]+3)D)*(p[4])

(69)(B)为正确的字符常量。A)'84' B)'@' C)'165' D)'bcd'

(70)以下程序段的运行结果是(A)。

int s=15;switch(s/4){ case 1: printf(“One “);case 2: printf(“Two ”);case 3: printf(“Three”);default: printf(“Over “);} A)Three Over B)Two Over C)Three D)One Over

(71)以下程序段运行后x的值为(A)。

int a[8]={1,2,3,4,5,6,7,8},i,x=0;for(i=1;i<8;i++,i++)x=x+a[i];A)20 B)18 C)16 D)36

(72)以下程序段的运行结果是(B)。

char str[ ]={“FuJian”};printf(“%d”,strlen(str));A)8 B)6 C)7 D)9

(73)以下程序的运行结果是(C)。

int a=2,b=3;int min(int a,int b){ int c;

c=a

return(c);} main(){ int a=4;

printf(“%d”,min(a,b));} A)4 B)2 C)3 D)2,3

(74)以下程序段运行后*(p++)的值为(B)。

char a[5]=”work”;

char *p;

p=a;A)„o‟ B)„w‟

C)a[1]的地址 D)a[0]的地址

(75)若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,则(B)表达式是错误的。A)p++ B)a++ C)a[2] D)p[2]

(76)C语言中,对文件操作的一般步骤是(C)。A)定义文件指针,读文件,写文件,关闭文件 B)操作文件,定义文件指针,修改文件,关闭文件 C)定义文件指针,打开文件,读写文件,关闭文件 D)打开文件,定义文件指针,读写文件,关闭文件

(76)(D)为正确的变量名。A)5_pro B)case C)else D)pro_5

(77)下面叙述正确的是(B)。A)2/3与2%3等价 B)5/(int)4.0与5/4等价 C)++2与--3等价 D)++2与3等价

(78)若有定义float x;,要从键盘输入数据6.02赋给x,则应选用(B)语句。A)scanf(“%8.2f”,&x);B)scanf(“%f”,&x)C)scanf(“%4.2f”,&x)D)scanf(“%1.2f”,&x)

(79)若有定义:int x,a;赋值语句a=(x%3= =0)?0:1;与(D)语句不等价。A)if(x%3!=0)a=1;else a=0;B)if(!(x%3= =0))a=1;else a=0;C)if(x%3= =0)a=0;else a=1;D)if(x%3)a=0;else a=1;

(80)以下程序段运行后x的值为(A)。

int i =0,x=2;

while(i++<=5)

{

x+=2;

} A)14 B)8 C)12 D)10

(81)下面叙述正确的是(C)。A)宏名必须用大写字母表示

B)一个源程序只能有一个预编译处理命令行 C)宏展开不占用运行时间,只占用编译时间 D)预处理命令也是C语句,必须以分号结束

(82)(A)对枚举类型的定义是错误的。A)enum b{1,2,3};B)enum a{A,B,C};C)enum d{X=0,Y=5,Z=9};D)enum c{D=3,E,F};

(83)C源程序中main()函数的位置(D)。A)必须在自定义函数前面 B)必须位于程序的最前面 C)必须在系统库函数后面 D)可以在自定义函数后面

(84)(A)为合法的常量。A)1.23E+8 B)5,326 C)3.21E-6.5 D)„b_k‟

(85)下面叙述正确的是(A)。

A)C语言中整型与字符型变量的混合运算表达式的结果是整型 B)“abc”+”xxx”是正确表达式

C)模运算符”%”两边运算数的数据类型是任意的 D)(3+9)++是正确表达式

(86)若有定义:int a=1,b=2,c=3,d=4,t=2,k=2;语句(t=a

(87)若有定义:int x;char c=‟A‟;则正确的赋值表达式是(D)。(说明:‟A‟的ASCII码的十进制值为65,‟a‟的ASCII码的十进制值为97)A)x=c+‟CBA‟ B)x=c+‟ABC‟ C)x=‟ABC‟ D)x=c+32

(88)下面叙述正确的是(B)。

A)for循环只能用于循环次数已经确定的情况

B)for循环的循环体可包含多条语句,但必须用花括号{}括起来 C)在for循环中,不能用break语句跳出循环体 D)for循环是先执行循环体语句,后判断表达式

(89)若有定义:int a[10],i=2;,能正确引用a数组的是(B)。A)a(7)B)a[10-i] C)a[10] D)a[9+i]

(90)若有定义:int a[3][4]={{1,2},{3,4},{5,6,7}};,则a[1][1]的值为(B)。A)3 B)4 C)1 D)2

(91)以下程序段的运行结果是(D)。

union { int num1;

int num2;}s;s.num1=20;s.num2=30;printf(“%d”,s.num1);A)2030 B)20 C)50 D)30

(92)若有定义:int a,b=5;,语句a=(b/2)+b%2;运行后a的值为(B)。A)4 B)3 C)0 D)2

(93)若有定义:char c1=‟A‟,c2=‟B‟;,语句printf(“%d+%d=%d”,c1,c2,c1+c2);运行后的结果为(A)。(说明:‟A‟的ASCII码的十进制值为65)A)65+66=131 B)A+B=AB C)A+B=131 D)65+66=AB

(94)以下程序的运行结果是(C)。

fun(){ static int a=0;

a++;

printf(“%d “,a);} main(){ int i;for(i=1;i<=2;i++)fun();} A)0 1 B)1 1 C)1 2 D)0 0

(95)下面程序运行后,文件d_f.dat的内容是(A)。

main(){ FILE *fp;int i=10,j=20;fp=fopen(“d_f.dat”,”w”);fprintf(fp,”%d “,i);fclose(fp);fp=fopen(“d_f.dat”,”a”);fprintf(“%d”,j);fclose(fp);} A)10 B)20 10 C)20 D)10 20

(96)若有定义:int i,x;,(C)不是死循环。A)for(;;i+=2);B)while(x=1);C)for(x=5;x>0;x--);D)for(i=10;;i--);

(97)以下程序段运行后*(p+1)的值为(A)。

char a[ ]=”good”;char *p;p=a;A)„o‟

B)a[1]的地址 C)不确定 D)„g‟

(98)若有定义:int a[3][2];,则表达式&a[2][1]-a的值为(C)。A)2 B)4 C)5 D)3

(99)(A)能正确定义一个指向函数的指针。A)int(*p)()B)int(*p())C)(int *)p()D)int *p()

(100)若有定义

Typedef int * INTEGER;INTEGER p;则下面叙述正确的是(B)A)p是与INTEGER相同的类型

B)程序中可用INTEGER定义int类型指针变量 C)p是一个整型变量

D)程序中可用INTEGER定义int类型变量

(101)若有定义:int a,b=6;语句a=--b;运行后,a、b的值分别是(C)。A)5 6 B)6 6 C)5 5 D)6 5

(102)以下程序段运行后x的值为(D)。

int a[3][3]={1,2,3,4,5,6,7,8,9};int i=0,x=0;for(;i<3;i++)x+=a[i][i];A)12 B)0 C)18 D)15

(103)以下程序的运行结果是(C)。

main(){ char a[ ]=”137”,*p;for(p=a;p

(104)(D)不是文件读库函数。A)fread()B)fscanf()C)fgetc()D)fputs()

(105)C语言的函数体由(B)括起来。A)< > B){ } C)()D)[ ]

(106)下面叙述错误的是(B)。

A)一个C源程序可由一个或多个函数组成 B)构成C语言源程序的基本单位是语句 C)C源程序中大、小写字母是有区别的

D)若一条语句较长,可分写在下一行或多行上

(107)只能向终端输出一个字符的是(C)。A)printf()函数 B)getchar()函数 C)putchar()函数 D)scanf()函数

(108)若有定义:int x=1,y=2,z=3;则表达式(A)的值为0。A)!((xy||x

(109)C语言中,若缺省定义函数返回值类型,则该函数默认返回值类型是(D)。A)void B)double C)long D)int

(110)x的值在-20至-5之间为“真”,否则为“假”的正确逻辑表达式为(C)。A)!(x>-20)&&!(x<-5)B)-20-20 && x<-5 D)-5

(111)C语言中,二维数组元素在内存中的存放顺序是(C)。A)按列存放

B)由用户自己定义 C)按行存放 D)随机存放

(112)若有定义:enum num{a1,a2=3,a3,a4=0};,则枚举常量a2、a3的值分别为(B)。A)2 3 B)3 4 C)3 3 D)1 2

(113)以下程序段运行后x的值为(C)。

int a[]={1,2,3},b[]={4,3,3};int *p,*q;int i,x;p=a;q=b;for(i=0;i<3;i++)if(*(p+i)= =*(q+i))x=*(p+i)*2;} A)2 B)不确定 C)6 D)4

第四篇:计算机等级《二级C语言程序设计》押题卷

计算机等级《二级C语言程序设计》预测试卷

(一)一、单项选择题(共40题,合计40分)1以下能正确定义一维数组的选项是()。A.int a[5]={0.1,2.3.4,5); B.char a口={0,1,2,3,4,5); C.char a={'A’,'B','C'); D.int a[5]=”0123”; [正确答案]B

试题解析: 数组下标从0开始,A选项中所赋值的个数超过了数组的长度;c选项中定义a为字符型变量,而不是数组,赋值错误;D选项中,整型数组不能赋字符串。

2视图设计一般有3种设计次序,下列不属于视图设计次序的是()。A.自顶而下 B.由内向外 C.由外向内 D.自底向上 [正确答案]C

试题解析: 视图设计的设计次序分3种:自顶向下、自底向上和由内向外。它们为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握。

3链表不具有的特点是()。A.不必事先估计存储空间 B.町随机访问任意元素

C.插入、删除不需要移动元素 D.所需空间与线性表长度成正比 [正确答案]B

试题解析: 链表采用的是链式存储结构,它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,插入、删除不需要移动数据元素。但是链式存储结构也有不足之处:每个结点中的指针域需额外占用存储空间,它是一种非随机存储结构。

4有以下程序: main(){ int x,i;

for(i=l;i<=50;i++){x=i; if(x%2=0)if(x%3=0)if(x%7=0)printf(”%d,i)”; } } 输出结果是()。A.28 B.27 C.42 D.41 [正确答案]C

试题解析: 只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。

5若已定义:int a口一(0,1,2,3,4,5,6,7,8,9),*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是()。A.a[p-a] B.*(&a[i])C.p[i] D.*(*(a十i))[正确答案]D

试题解析: A:P开始是数组a首地址,只要p++则再减去a的首地址aEp—a]就能取到所有元素,B:&a[i]循环取其地址,*(&a[i])是该地址中所存储的元素C:p就是指针变量,相当于a[i],D:*(a+i)则正确。

6设有下列程序段: char str[]=“HelloWorld”: char*ptr; ptr=str;执行上面的程序段后,*(ptr+10)的值为()。A.'\O' B.'0' C.不确定的值 D.'0'的地址 [正确答案]A

试题解析: 本题主要考查字符数组和指针,在c语言中,字符型数组在存放字符串时会自动在末尾加上'',所以数组str有ll个元素;ptr指向数组str的首地址,ptr+10是指向str[10],*(ptr+10)是引用strEl0]的值。

7下列4个关于C语言的结论中错误的是()。

A.可以用do while语句实现的循环一定可以用while语句实现 B.可以用for语句实现的循环一定可以用while语句实现 C.可以用while语句实现的循环一定可以用for语句实现

D.do-while语句与while语句的区别仅是关键字“while”出现的位置不同 [正确答案]D

试题解析: 本题考查对各个循环语句的理解。①do—while语句、for语句、while语句所实现的循环可以相互替代;②d0—while语句至少执行一次,而while是符合条件执行,不符合不执行。

8有以下程序: #include main()

{char s[]=“012xyO8s34f4w2‘; int i;n=0;,for(i=0;s[i]!=0;i++)if(s[i]>='0'&&s[i]<='9')n++; printf(”%dn“,n); } 程序运行后的输出结果是()。A.0 B.3 C.7 D.8 [正确答案]B

试题解析: 考查简单的C程序数组和循环。for循环是指i=0,如果s/[3]!=0,则i自动加1。if循环指的是s[i]中的元素大于等于0且小于等于9,则n加l,所以答案为B。

9若有以下说明,则()不是对strcpy库函数正确的调用。strcpy库函数用于复制一个字符串:char*str1==”abed”,strZ[10],*str3=”hijklmn“,*str4[-2],*str5=”aaaa”; A.strcpy(str2,str1)B.strcpy(str3,slrl)C.strcpy(str1,str2)

D.strcpy(str5,strl)[正确答案]C

试题解析: strcpy(sl,s2)函数的功能是将字符串s2复制到字符串sl中。要保证sl存储区能容纳下s2字符串。

10数据库系统的核心是()。A.数据模型

B.数据库管理系统 C.数据库

D.数据库管理员 [正确答案]B

试题解析: 本题考查对数据库系统的理解。数据库系统由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台5个部分构成。其中数据库管理系统是数据库系统的核心,它负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等工作。

11有下列函数定义: fun(float h){ printf(”%f,%f\n”,h,h*h);)该函数的类型是()。A.int类型 B.float类型 C.void类型

D.函数无类型说明,定义有错 [正确答案]A

试题解析: 本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

12有以下程序 #include struct tt {int x;struct tt*y;)*P;

struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a); main(){ int i;

P—a: .

for(i=1;i<=2;i++)(printf(”%d,”,p->x);P =P->y:})程序的运行结果是()。A.20,30,B.30,17,C.15,30,D.20,15,[正确答案]D

试题解析: 程序的结构体数组a的元素形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。有以下程序: main(){ union {char ch[2]; im d;

d一0x4321;

printf(”%x,%x\n”,s.ch[O],s.ch[1]);)S;

在16位编译系统上,程序执行后的输出结果是()。A.21,43 B.43,21 C.43,00 D.21,00 [正确答案]A

试题解析: s是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在eh[1]中、低位放在ch[O]中,因此输出的结果为21,43。

14有以下程序: main(){int a=0,b=0;

a=10; /*给a赋值 b=20; 给b赋值 */ printf(”a+b=%d\n”,a+b);//输出计算机结果)程序运行后的输出结果是()。

A.a+b=10 B.a+b=30 C.30 D.出错 [正确答案]A

试题解析: 本题中/*……*/为多行注释,所以可知b=20为注释语句,在程序运行时不起作用,b仍为0,所以本题中选项A正确。

15若有定义:“int a[2][3];”,则对a数组的第i行第j列元素的正确引用为()。A.*(*(a+i)+j)B.(a+i)[j] C.*(a+j+j)D.*(a+i)+j [正确答案]A

试题解析: 通过地址来引用数组元素的方法有下列5种:①a[i][j];②*(a[i]+J);③*(*(a+i)+j);④*(aEiJEj]);⑤(&a[o]EoJ+3*i十j)。故A正确。

16以下程序的输出结果是()。main(){int i,a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf(”%d%d%d%d\n”,a[0][3],a[1][2],a[2][1],a[3][0]; } A.0650 B.1470 C.5430 D.输出值不定 [正确答案]A

试题解析: 当所赋的值不够其列的宽度时,系统在其后自动补0,因此a[o][3]=0,a[-1][2]=6,a[2][1]=5,a[3][o]=0,故选择A选项。

17软件生命周期中,花费最多的阶段是()。A.详细设计 B.软件编码 C.软件测试

D.软件维护 [正确答案]D

试题解析: 本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。

18语句“printf(”a\bre”\'hi\’y\\\bou\n”);”的输出结果是()。A.a\bre\'hi\'y'\\\bou B.a\bre\'hi\\y\bou C.re'hi'you D.abre'hi'y\bou [正确答案]C

试题解析: 先输出a、b表示退一格,当执行到:\b后,1光标往后退,接着输出re’hi’y\(反斜杠后又加一个反斜杠的意思是要输出一个反斜杠),此时又执行:\b后,\就被OU 覆盖。

19有以下程序 #include void fun(int x){if(x/Z>1)fun(x/Z); printf(”%d“,x); } main(){fun(7);printf(”n“);} 程序运行后的输出结果是()。A.1 3 7 B.7 3 1 C.7 3 D.3 7 [正确答案]D

试题解析: 本程序主要考查递归函数。fun(7),首先将参数代入函数,因为(7/2)>1,所以执行f(3),依此类推直到f(1.5),(1.5/2)<1,所以执行打印函数,此时X值为3,然后退出f(1.5),返回f(3),打印x值即7。所以选D。

20下列运算符中优先级最低的算符是()。A.|| B.!= C.<一 D.十

[正确答案]A

试题解析: C语言中规定运算符的优先顺序:一元算术运算符一>二元算术运算符一>关系运算符一>逻辑运算符一>赋值运算符,A项中为逻辑运算符,B项和C项都为关系运算符,D项为一元运算符。因此最低的是A项。

21软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于()。A.定义阶段 B.开发阶段 C.维护阶段 D.上述三个阶段 [正确答案]B

试题解析: 开发阶段在开发初期分为需求分析、总体设计、详细设计3个阶段,在开发后期分为编码、测试两个子阶段。

22有以下程序 #include main(){char cl,c2;

c1='A'+'8'-'4' c2='A'+'8'-'5';printf(”%C,%dn“,cl,c2); } 已知字母A的ASCIl码为65,程序运行后的输出结果是()。A.E,69 B.D,69 C.E,D D.输出无定值 [正确答案]A

试题解析: 本值输出两个值,%c为输出一个字母,0/4d输出一个数字。“A”的ASCIl码为65,再加 4之后为69,也就是字母E,所以本题A正确。

23设有以下语句: int a=1,b=2,c; c=a^(b<<2);

执行后,c的值为()。A.6 B.7 C.8 D.9 [正确答案]D

试题解析: 本题考查两个知识点,按位异或左移把b左移2位化成二进制c=a^(b<<2)=a^(oooolo<<2)=a^o01000=0000001^001000=9,故选择D。

24设有二元关系R和三元关系s,下列运算合法的是()。A.Rn S B.RU S C.R-S D.R×S [正确答案]D

试题解析: 本题给出的两个关系R与s的表结构是不同的(R是二元关系,S是三元关系),它们不能进行“n、U、一”运算,却可以进行笛卡儿积(×)运算。

25结构化程序设计的3种结构是()。A.顺序结构、选择结构、转移结构 B.分支结构、等价结构、循环结构 C.多分支结构、赋值结构、等价结构 D.顺序结构、选择结构、循环结构 [正确答案]D

试题解析: 结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法;②任何程序都可由顺序、选择和循环三种基本控制结构构造。

26下面for语句的循环次数为()。for(x=1,y=0;(Y!=19)&&(x<6);x++); A.是无限循环 B.循环次数不定 C.最多执行6次

D.最多执行5次 [正确答案]D

试题解析: 本题考查for循环的使用。根据条件考虑X的取值变化,X从1取到5,可以循环5次,但并不知道Y如何变化,有可能出现Y=l9提前跳出循环的情况,所以最多执行5次。

27下列叙述中正确的是()。

A.可以用关系运算符比较字符串的大小

B.空字符串不占用内存,其内存空间大小是0 C.两个连续的单引号是合法的字符常量 D.两个连续的双引号是合法的字符串常量 [正确答案]D

试题解析: 比较两个字符串大小用函数strcomp(S,t),空字符串有结束符,所以也要占用字节,两个双引号表示的是空字符串。

28以下程序的输出结果是()。void fun(int*a,int i,int j){int t; if(i

for(i=0;i<4;i++)printf(”%2d”,x[i]); printf(”\n”);)A.1,2,6,8 B.8,6,2,1 C.8,l,6,2 D.8,6,1,2

试题解析: 本题用了函数调用,fun中if语句成立则进行i,j的交换,用到主函数中则为把下标为0、3,1、2互换,因此,当执行完后x的数组为8,1,6,2,故选择C选项

29设有定义”double a[10],*s=a;“,以下能够代表数组元素a[3]的是()。A.(*s)[3] B.*(s+3)C.*s[3] D.*s+3 [正确答案]B

试题解析: 用带下标的指针变量引用一维数组元素若有以下定义和语句:“int*P,s[10],i;P=s}”,且o≤i<10,可以用&.s[i]、s+i和p+i三种表达式来表示s[i]的地址。同时可以用s[i]、*(s+i)和*(p+i)三种表达式来表示数组元素s[i]。

30下列选项中非法的字符常量是()。A.'\t' B.'39' C.',' D.'\n' [正确答案]B

试题解析: 水平制表符中,’\t'表示的是横向跳若干格;选项B中,’\039’错误,’\039’是八进制形式表的字符,最大数为7,但其中出现'9',’,’是字符逗号;选项D中,7\n’表示的是换行。

31有以下程序: main(){ int x=102,y=012; printf(”%2d,%2d\n”,x,y); } 执行后输出结果是()。A.10,01 B.02,12 C.102,10 D.02,10 [正确答案]C

试题解析: x的值为十进制数102,而Y的值为八进制数012,根据题意将Y用十进制表示为10%md,m为指定输出数据的宽度,若位数小于m则左端补以空格,若位数大于m则按实际输出,所以答案是C。

32相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。A.可重用性差 B.安全性差 C.非持久性 D.冗余性 [正确答案]D

试题解析: 文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。

33有以下程序: #include main(){ FILE*fp;

int k,n,i,a[6]={1,2,3,4,5,6};

fp=fopen(”d2.dat“,”w“);

for(i=0;i<6;i++)fprintf(fp,”%dn“,a[i]); fclose(fp);

fp(i=0;i<3;i++)fscanf(fp,”%d%d“,&k,&n);

fclose(fp);

printf(”%dn,%dn,k,n); } 程序运行后的输出结果是()。A.1, 2 B.3,4 C.5,6 D.123,456 [正确答案]C

试题解析: 此题是考查fprintf和fscanf,其中fprintf是向文件输出,文件为da2.dat文件,fscanf是向文件输入,所以根据程序循环写入和写出.可知答案为C。

34有以下程序段: int k,j,s;

for(k=2;k<6;k++,k++){ s=1;

for(j=k;j<6;j++)s+=j;)print[(”%d\n”,s);

程序段的输出结果是()。

A.9 B.1 C.11 D.10 [正确答案]D

试题解析: 因为首先k一2,然后你进行一次循环后,k自增两次,变成4,所以这时候S又成l了。然后当k一4的时候,s=1,j=4,然后执行内层循环,s=1+4,然后j自增等于5,s=5+5,然后J再自增为6,跳出内层循环。k自增两次后等于6,不成立,跳出外层循环。然后输出s的值,即为10。因此正确选项为D。

35下列叙述中正确的是()。

A.软件测试应该由程序开发者来完成 B.程序经调试后一般不需要测试 C.软件维护只包括对程序代码的维护 D.以上三种说法都不对 [正确答案]D

试题解析: 程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。

36若有定义:int X,*pb;则正确的赋值表达式是()。A.pb=&X B.pb=X C.*pb=&x D.*pb=*x [正确答案]A

试题解析: *pb是指解除对*pb的引用(也可以认为是取pb所指向的地址的值),被解除引用的指针可以作为左值,&为取地址运算符,&X就是取指向变量X的指针。

37下列叙述中正确的是()。

A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项 C.一个关系的属性名表称为关系模式 D.一个关系可以包括多个二维表 [正确答案]A

试题解析: 元组分量的原子性要求二维表中元组的分量是不可分割的基本数据项。关系的框架称为关系模式。一个称为关系的二维表必须同时满足关系的7个性质。

38设有以下语句

char chl,ch2; scanf(“%c%C”,&chl,&ch2);

若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。A.A和B之间用逗号间隔

B.A和B之间不能有任何间隔符 C.A和B之间可以用回车间隔 D.A和B之间用空格间隔 [正确答案]B

试题解析: scanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf(“%c%c”,&chl,&ch2)的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔,所以答案选择B。

39设x=011050,则x=x&01252的值是()。A.000000 1000 101000 B.***1 C.0000001 01 1 100010 D.1100000OOOl0 1 000 [正确答案]A

试题解析: 本题主要考查按位与运算,x—Oll050的二进制形式为O001001000010lo00,01252的二进制形式为***0,两者相与得***0。

40有下列程序: #include main(){ int a=6,b=7,m=1; switch(a%2){ case 0:m++;break; case 1:m++; switch(b%2){default:m++;

case 0:m++;break;))printf(”%d\n”,m);

程序的运行结果是()。A.3 B.2 C.4 D.1 [正确答案]B

试题解析: 本题考查switch语句及break的用法。第一个switch语句,因为a=6,a%2=0,所以执行“case0,m++;”,将m加-1,遇到break语句跳出switch语句,结束循环。不执行下面的switch。

二、填空题(共1题,合计18分)41请补充main()函数,该函数的功能是:把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存在原来的字符串中。例如,当str[M]=”abcdefl23ABCD”,结果输出:“ABC DEF123ABCD”。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。

试题程序: #include #include #include #define M 80 void main(){ intj;

char str[M]=“ abcdefl23ABCD”; char *pf=str; system(”CLS”):

printf(”***original string *** n”): puts(str); 【1】

while(*(pf+j)){ if(*(pf+j)>='a' &&*(pf+j)<='Z'){ *(pf+j)=【2】 ; 【3】 ;)else j++;)printf(”****new string****n”); puts(str);

system(”pause”);} [正确答案]【1】j=0【2】*(pf+j)-321311j++

试题解析: 由程序中可知,变量j为字符数组的下标,其初始值为0。因此,【l】处填“j=0”;大写字母的ASCIl码值比小写字母的小32,要将小写字母变为大写字母,因此,【2】处填“*(pftj)-32”;要将字符串数组中的所有小写字母变为大写字母,需要检查其中的每一个字符,因此,【3】处填“j++”。

三、改错题(共1题,合计24分)42下列给定程序中,函数proe()的功能是:对M名学生的学习成绩,按从高到低的顺序找出前m(m<10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

#include%stdlib.h> #include #include #include #include%malloe.h> #define M 10 typedef struct ss { char num[10]; int s; } STU;

STU *proc(STU a[],int m){ STU b[-M],*t; int i,j,k;

//****found**** *t=calloc(m,sizeof(STU)); for(i=0;ib[j].s)j=i;

//****found**** t[k].num=b[j].num; t[k].s=b[j].S; b[j].s=0; } return t: } void outresuh(STU a[],FILE *pf)f int i;

for(i=0;i

system(”CLS”);

printf(”****THE RESULT****n”); outresuh(stu,stdout);

print{(”nGive the number of the students who have better score:”); scanf(”%d”,&m); while(m>10)printf(”nGive the number of the students who have better score:”); scanf(”%d”,&m); } p()rder=proc(stu,m);

printf(”****THE RESULT****n”); printf(”The lop:n”); for(i=0:i

(1)错误:*t=ealloc(m,sizeof(STU));

正确:t=(structSS*)calloc(m,sizeof(STU));(2)错误:t[kJ.num=b[j].num; 正确:t[k]-h[j+;

试题解析: 因为t是指向一个动态存储空间,因此其是指针,而不是其中的内容,故把“*t=calloc(m,sizeof(STU))”改为“t=(structSS*)calloc(m,sizeof(STU));”,而题目要求把学生的全部内容互换,因此即整个结构体,故把“t[k]. num=bl;”改为“t[k]=;”。

四、编程与应用题(共1题,合计18分)43学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),其功能是:按分数的高低排列学生的记录,高分在前。注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

# include #define M 16 typedef s truct { char num[10]; inl S;)STREC;

void proc(STREC a[])int i,j; STREC t;

for(i=1;i

in/i;

proc(stu):

prinlf(”The data afwr sorted:n”); for(i=0;i

printf(”%s%4d”,stu[i].num,stu[i].s); } printf(”n”): } [正确答案]voidproc(STRECa[]){ inti,j; STRECt;

for(i=1;i

试题解析: 要按分数的高低排列学生的记录,可以使用冒泡排序法。将每一个学生的成绩与其他学生的成绩相比较,对不符合要求的记录交换位置。

第五篇:计算机二级C语言公共基础典型120题

公共基础120题

(1)下面叙述正确的是______。(C)A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数 C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 D.以上三种描述都不对

(2)以下数据结构中不属于线性数据结构的是______。(C)A.队列 B.线性表 C.二叉树 D.栈

(3)在一棵二叉树上第5层的结点数最多是______。(B)A.8 B.16 C.32 D.15(4)下面描述中,符合结构化程序设计风格的是______。(A)A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B.模块只有一个入口,可以有多个出口 C.注重提高程序的执行效率 D.不使用goto语句

(5)下面概念中,不属于面向对象方法的是______。(D)A.对象 B.继承 C.类 D.过程调用

(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。(B)A.可行性分析 B.需求分析 C.详细设计 D.程序编码

(7)在软件开发中,下面任务不属于设计阶段的是______。(D)A.数据结构设计 B.给出系统模块结构 C.定义模块算法

D.定义需求并建立系统模型(8)数据库系统的核心是______。(B)A.数据模型 B.数据库管理系统 C.软件工具 D.数据库

(9)下列叙述中正确的是______。(C)A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致

(10)下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。(A)A.内模式 B.外模式 C.概念模式 D.逻辑模式

(11)算法的时间复杂度是指______。(C)A.执行算法程序所需要的时间 B.算法程序的长度

C.算法执行过程中所需要的基本运算次数 D.算法程序中的指令条数

(12)下列叙述中正确的是______。(A)A.线性表是线性结构 B.栈与队列是非线性结构 C.线性链表是非线性结构 D.二叉树是线性结构

(13)设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为______。(B)A.349 B.350 C.255 D.351(14)结构化程序设计主要强调的是______。(B)A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性

(15)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。(D)A.概要设计 B.详细设计 C.可行性分析 D.需求分析

(16)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。(A)A.控制流 B.加工 C.数据存储 D.源和潭

(17)软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及______。(B)A.阶段性报告 B.需求评审 C.总结 D.都不正确

(18)下述关于数据库系统的叙述中正确的是______。(A)A.数据库系统减少了数据冗余 B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型的一致 D.数据库系统比文件系统能管理更多的数据(19)关系表中的每一横行称为一个______。(A)A.元组 B.字段 C.属性 D.码

(20)数据库设计包括两个方面的设计内容,它们是______。(A)A.概念设计和逻辑设计 B.模式设计和内模式设计 C.内模式设计和物理设计 D.结构特性设计和行为特性设计(21)算法的空间复杂度是指______。(D)A.算法程序的长度 B.算法程序中的指令条数 C.算法程序所占的存储空间 D.算法执行过程中所需要的存储空间

(22)下列关于栈的叙述中正确的是______。(D)A.在栈中只能插入数据 B.在栈中只能删除数据 C.栈是先进先出的线性表 D.栈是先进后出的线性表

(23)在深度为5的满二叉树中,叶子结点的个数为______。(C)A.32 B.31 C.16 D.15(24)对建立良好的程序设计风格,下面描述正确的是______。(A)A.程序应简单、清晰、可读性好 B.符号名的命名要符合语法 C.充分考虑程序的执行效率 D.程序的注释可有可无

(25)下面对对象概念描述错误的是______。(A)A.任何对象都必须有继承性 B.对象是属性和方法的封装体 C.对象间的通讯靠消息传递 D.操作是对象的动态性属性

(26)下面不属于软件工程的3个要素的是______。(D)A.工具 B.过程 C.方法 D.环境

(27)程序流程图(PFD)中的箭头代表的是______。(B)A.数据流 B.控制流 C.调用关系 D.组成关系

(28)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是______。(A)A.数据库系统 B.文件系统 C.人工管理 D.数据项管理

(29)用树形结构来表示实体之间联系的模型称为______。(B)A.关系模型 B.层次模型 C.网状模型 D.数据模型

(30)关系数据库管理系统能实现的专门关系运算包括______。(B)A.排序、索引、统计 B.选择、投影、连接 C.关联、更新、排序 D.显示、打印、制表

(31)算法一般都可以用哪几种控制结构组合而成______。(D)A.循环、分支、递归 B.顺序、循环、嵌套 C.循环、递归、选择 D.顺序、选择、循环

(32)数据的存储结构是指______。(B)A.数据所占的存储空间量

B.数据的逻辑结构在计算机中的表示 C.数据在计算机中的顺序存储方式 D.存储在外存中的数据(33)设有下列二叉树:

对此二叉树中序遍历的结果为______。(B)A.ABCDEF B.DBEAFC C.ABDECF D.DEBFCA(34)在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。(D)D.消息 A.调用语句 B.命令 C.口令

(35)检查软件产品是否符合需求定义的过程称为______。(A)A.确认测试 B.集成测试 C.验证测试 D.验收测试

(36)下列工具中属于需求分析常用工具的是______。(D)A.PAD B.PFD C.N-S D.DFD(37)下面不属于软件设计原则的是______。(C)A.抽象 B.模块化 C.自底向上 D.信息隐蔽

(38)索引属于______。(B)A.模式 B.内模式 C.外模式 D.概念模式

(39)在关系数据库中,用来表示实体之间联系的是______。(D)A.树结构 B.网结构 C.线性表 D.二维表

(40)将E-R图转换到关系模式时,实体与联系都可以表示成______。(B)A.属性 B.关系 C.键 D.域

(41)在下列选项中,哪个不是一个算法一般应该具有的基本特征______。(C)A.确定性 B.可行性 C.无穷性

D.拥有足够的情报

(42)希尔排序法属于哪一种类型的排序法______。(B)A.交换类排序法 B.插入类排序法 C.选择类排序法 D.建堆排序法

(43)下列关于队列的叙述中正确的是______。(C)A.在队列中只能插入数据 B.在队列中只能删除数据 C.队列是先进先出的线性表 D.队列是先进后出的线性表

(44)对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。(B)A.N+1 B.N C.(N+1)/2 D.N/2(45)信息隐蔽的概念与下述哪一种概念直接相关______。(B)A.软件结构定义 B.模块独立性 C.模块类型划分 D.模拟耦合度

(46)面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。(C)A.模拟现实世界中不同事物之间的联系 B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题 D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

(47)在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。(C)A.详细设计 B.需求分析 C.总体设计 D.编程调试

(48)软件调试的目的是______。(B)A.发现错误 B.改正错误 C.改善软件的性能 D.挖掘软件的潜能

(49)按条件f对关系R进行选择,其关系代数表达式为______。(C)A.R|X|R B.R|X|R f C.бf(R)D.∏f(R)(50)数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是______。(D)A.自顶向下 B.由底向上 C.由内向外 D.由整体到局部

(51)在计算机中,算法是指______。(C)A.查询方法 B.加工方法

C.解题方案的准确而完整的描述 D.排序方法

(52)栈和队列的共同点是______。(C)A.都是先进后出 B.都是先进先出

C.只允许在端点处插入和删除元素 D.没有共同点

(53)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。(A)A.cedba B.acbed C.decab D.deabc(54)在下列几种排序方法中,要求内存量最大的是______。(D)A.插入排序 B.选择排序 C.快速排序 D.归并排序

(55)在设计程序时,应采纳的原则之一是______。(A)A.程序结构应有助于读者理解 B.不限制goto语句的使用 C.减少或取消注解行 D.程序越短越好

(56)下列不属于软件调试技术的是______。(B)A.强行排错法 B.集成测试法 C.回溯法 D.原因排除法

(57)下列叙述中,不属于软件需求规格说明书的作用的是______。(D)A.便于用户、开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据 C.作为确认测试和验收的依据 D.便于开发人员进行需求分析

(58)在数据流图(DFD)中,带有名字的箭头表示______。(C)A.控制程序的执行顺序 B.模块之间的调用关系 C.数据的流向 D.程序的组成成分

(59)SQL语言又称为______。(C)A.结构化定义语言 B.结构化控制语言 C.结构化查询语言 D.结构化操纵语言

(60)视图设计一般有3种设计次序,下列不属于视图设计的是______。(B)A.自顶向下 B.由外向内 C.由内向外 D.自底向上(61)数据结构中,与所使用的计算机无关的是数据的______。(C)A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构

(62)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。(D)A.ABCED B.DBCEA C.CDABE D.DCBEA(63)线性表的顺序存储结构和线性表的链式存储结构分别是______。(B)A.顺序存取的存储结构、顺序存取的存储结构 B.随机存取的存储结构、顺序存取的存储结构 C.随机存取的存储结构、随机存取的存储结构 D.任意存取的存储结构、任意存取的存储结构(64)在单链表中,增加头结点的目的是______。(A)A.方便运算的实现 B.使单链表至少有一个结点 C.标识表结点中首结点的位置 D.说明单链表是线性表的链式存储实现

(65)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指______。(B)A.模块间的关系

B.系统结构部件转换成软件的过程描述 C.软件层次结构 D.软件开发过程

(66)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为______。(B)A.PAD图 B.N-S图 C.结构图 D.数据流图

(67)数据处理的最小单位是______。(C)A.数据 B.数据元素 C.数据项 D.数据结构

(68)下列有关数据库的描述,正确的是______。(C)A.数据库是一个DBF文件 B.数据库是一个关系

C.数据库是一个结构化的数据集合 D.数据库是一组文件

(69)单个用户使用的数据视图的描述称为______。(A)A.外模式 B.概念模式 C.内模式 D.存储模式

(70)需求分析阶段的任务是确定______。(D)A.软件开发方法 B.软件开发工具 C.软件开发费用 D.软件系统功能

(71)算法分析的目的是______。(D)A.找出数据结构的合理性

B.找出算法中输入和输出之间的关系 C.分析算法的易懂性和可靠性 D.分析算法的效率以求改进

(72)n个顶点的强连通图的边数至少有______。(C)A.n-1 B.n(n-1)C.n D.n+1(73)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是______。(B)A.堆排序 B.直接插入排序 C.快速排序 D.直接选择排序

(74)用链表表示线性表的优点是______。(A)A.便于插入和删除操作

B.数据元素的物理顺序与逻辑顺序相同 C.花费的存储空间较顺序存储少 D.便于随机存取

(75)下列不属于结构化分析的常用工具的是______。(D)A.数据流图 B.数据字典 C.判定树 D.PAD图

(76)软件开发的结构化生命周期方法将软件生命周期划分成______。(A)A.定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段 C.总体设计、详细设计、编程调试 D.需求分析、功能定义、系统设计

(77)在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是______。(C)A.循环的集合 B.地址的集合 C.路径的集合 D.目标的集合

(78)在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有______。(D)A.数据无冗余 B.数据可共享

C.专门的数据管理软件 D.特定的数据模型

(79)分布式数据库系统不具有的特点是______。(B)A.分布式 B.数据冗余

C.数据分布性和逻辑整体性 D.位置透明性和复制透明性

(80)下列说法中,不属于数据模型所描述的内容的是______。(C)A.数据结构 B.数据操作 C.数据查询 D.数据约束

(1)算法的复杂度主要包括______复杂度和空间复杂度。答:时间

(2)数据的逻辑结构在计算机存储空间中的存放形式称为数据的______。答:模式#逻辑模式#概念模式

(3)若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法。答:黑盒

(4)如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体“工人”与实体“设备”之间存在______联系。答:一对多#1:N#1:n(5)关系数据库管理系统能实现的专门关系运算包括选择、连接和______。答:投影

(6)在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、______遍历和后序遍历。答:中序

(7)结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。答:模块化

(8)软件的调试方法主要有:强行排错法、______和原因排除法。答:回溯法

(9)数据库系统的三级模式分别为______模式、内部级模式与外部级模式。答:概念#概念级(10)数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。答:数据存储

(11)设一棵完全二叉树共有500个结点,则在该二叉树中有______个叶子结点。答:250(12)在最坏情况下,冒泡排序的时间复杂度为______。答:n(n-1)/2#n*(n-1)/2#O(n(n-1)/2)#O(n*(n-1)/2)(13)面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______。答:实体

(14)软件的需求分析阶段的工作,可以概括为四个方面:______、需求分析、编写需求规格说明书和需求评审。答:需求获取

(15)______是数据库应用的核心。答:数据库设计

(16)数据结构包括数据的______结构和数据的存储结构。答:逻辑

(17)软件工程研究的内容主要包括:______技术和软件工程管理。答:软件开发

(18)与结构化需求分析方法相对应的是______方法。答:结构化设计

(19)关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。答:参照完整性

(20)数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。答:概念

(21)栈的基本运算有三种:入栈、退栈和______。答:读栈顶元素#读栈顶的元素#读出栈顶元素

(22)在面向对象方法中,信息隐蔽是通过对象的______性来实现的。答:封装

(23)数据流的类型有______和事务型。答:变换型

(24)数据库系统中实现各种数据管理功能的核心软件称为______。答:数据库管理系统#DBMS(25)关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作。答:查询

(26)实现算法所需的存储单元多少和算法的工作量大小分别称为算法的 ______。答:空间复杂度和时间复杂度

(27)数据结构包括数据的逻辑结构、数据的 ______以及对数据的操作运算。答:存储结构

(28)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的______。答:可重用性

(29)面向对象的模型中,最基本的概念是对象和 ______。答:类

(30)软件维护活动包括以下几类:改正性维护、适应性维护、______维护和预防性维护。答:完善性

(31)算法的基本特征是可行性、确定性、______和拥有足够的情报。答:有穷性

(32)顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。答:相邻

(33)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法。答:数据结构

(34)数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

答:概念设计阶段#数据库概念设计阶段

(35)数据库保护分为:安全性控制、______、并发性控制和数据的恢复。答:完整性控制

(36)测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。答:调试

(37)在最坏情况下,堆排序需要比较的次数为______。答:O(nlog2n)(38)若串s=“Program”,则其子串的数目是______。答:29(39)一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。答:1对多#1:N(40)数据库管理系统常见的数据模型有层次模型、网状模型和______三种。答:关系模型

下载2018计算机二级C语言考试真题汇总(本站推荐)word格式文档
下载2018计算机二级C语言考试真题汇总(本站推荐).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《全国计算机等级考试二级教程C语言程序设计》

    《全国计算机等级考试二级教程——C语言程序设计》 课后题及参考答案 第一章 程序设计基本概念 1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。......

    全国计算机二级考试历年真题(整理)

    05年试卷 一、选择题((1)~(35)每小题2分,共70分 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指......

    计算机二级C语言上机题型总结

    全国计算机二级C语言考试上机题型总汇 (一)关于“******”问题 1、将字符串中的前导*号全部删除,中间和后面的*号不删除。 void fun(char *a) { char *p=a; while(*p= =’*’)......

    全国计算机二级c语言成绩查询

    全国计算机二级c语言成绩查询 篇一:2016年全国计算机等级考试二级C语言考试大纲及重点2016年全国计算机等级考试二级C语言考试大纲◆ 基本要求 1.熟悉 Visual C++ 6.0 集成......

    计算机二级c语言试题及答案

    计算机二级考试是全国计算机等级考试(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的......

    计算机二级C语言测试题含答案(5篇)

    C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面小编整理了计算机二级C语言测试题含......

    计算机c语言

    1. ENIAC (Electronic Numerical Integrator 和 Computer): 第一台真正意义上的数字电子计算机。 2.最早批量生产的大型主机是UNIVAC. 3. ALGOL:第一个结构化程序设计语言, P......

    C语言计算机

    计算机程序设计基础 (C语言)实验指导书 信息基础学科 2005 实验总论 一、实验目的 上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实......