公务员计算机类 事业单位计算机复习指南Word格式.docx
《公务员计算机类 事业单位计算机复习指南Word格式.docx》由会员分享,可在线阅读,更多相关《公务员计算机类 事业单位计算机复习指南Word格式.docx(184页珍藏版)》请在冰点文库上搜索。
C)注重提高程序的执行效率
D)限制使用goto语句
(4)C
结构化程序设计
结构化程序设计方法的四条原则是:
1.自顶向下:
2.逐步求精;
3.模块化;
4.限制使用goto语句。
“自顶向下”是说,程序设计时,应先考虑总体,后考虑细节,先考虑全局目标,后考虑局部目标;
“逐步求精’’是说,对复杂问题,应设计一些子目标作过渡,逐步细节化;
“模块化”是说,一个复杂问题肯定是由若干稍简单的问题构成,解决这个复杂问题的程序,也应对应若干稍简单的问题,分解成若干稍小的部分。
(5)下面概念中,不属于面向对象方法的是________。
A)对象、消息B)继承、多态C)类、封装D)过程调用
(5)D
面向对象的程序设计方法、对象、方法、属性及继承与多态性
面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
面向对象方法从对象出发,发展出对象、类、消息、继承等概念。
(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是________。
A)可行性分析B)需求分析C)详细设计D)程序编码
(6)B
结构化设计方法
软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。
其中需求分析阶段常用的工具是数据流程图和数据字典。
(7)软件生命周期中所花费用最多的阶段是________。
A)详细设计B)软件编码C)软件测试D)软件维护
(7)D
软件工程基本概念,软件生命周期概念,软件工具与软件开发环境
软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。
本题中详细设计、软件编码和软件测试都属于软件开发阶段;
维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。
(8)数据库系统的核心是________。
A)数据模型B)DBMSC)软件工具D)数据库
(8)B
数据库的基本概念:
数据库,数据库管理系统,数据库系统
数据库管理系统DBMS是数据库系统的核心。
DBMS是负责数据库的建立、使用和维护的软件。
DBMS建立在操作系统之上,实施对数据库的统一管理和控制。
用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。
另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。
(9)下列叙述中正确的是________。
A)数据处理是将信息转化为数据的过程
B)数据库设计是指设计数据库管理系统
C)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键
字,则称其为本关系的外关键字
D)关系中的每列称为元组,一个元组就是一个字段
(9)C
数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型
数据处理是指将数据转换成信息的过程,故选项A叙述错误;
设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型,故选项B叙述错误;
关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性。
对应存储文件中的字段,故D选项叙述错误。
(10)下列模式中,_______是用户模式。
A)内模式B)外模式C)概念模式D)逻辑模式
(10)B
数据库管理系统的三级模式结构由外模式、模式和内模式组成。
外模式,或称子模式,或称用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。
模式,或称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。
外模式是模式的一部分。
内模式,或称存储模式,或称物理模式,是指数据在数据库系统内的存储介质上的表示。
即对数据的物理结构和存取方式的描述。
(11)C语言规定,程序中各函数之间_______。
A)既允许直接递归调用也允许间接递归调用
B)不允许直接递归调用也不允许间接递归调用
C)允许直接递归调用不允许间接递归调用
D)不允许直接递归调用允许间接递归调用
(11)A
函数的递归调用
c语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。
(12)C语言中下列叙述正确的是_______。
A)不能使用do-while语句构成的循环
B)do-while语句构成的循环,必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
(12)D
do-while语句
选项A是错误的,c语言支持do-while语句;
选项B是错误的,do-while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;
选项C也是错误的。
(13)以下选项中属于C语言的数据类型是_______。
A)复数型B)逻辑型C)双精度型D)集合型
(13)C
c语言的数据类型
c语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。
其中,基本类型分为整型、字符型、实型三类。
实型又称浮点型,包括单精度型和双精度型两种类型。
(14)在C语言中,不正确的int类型的常数是_______。
A)32768B)0C)037D)0xAF
(14)A
int类型的范围
c语言中int类型的常数的范围是:
-32768~32767。
c整常数可用三种形式表示:
十进制整数,八进制整数,十六进制整数。
选项A超出范围,不正确。
(15)下列描述中不正确的是_______。
A)字符型数组中可以存放字符串
B)可以对字符型数组进行整体输入、输出
C)可以对整型数组进行整体输入、输出
D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
(15)C
对数组的理解
c语言规定只能逐个引用数组元素而不能一次引用整个数组。
字符数组的输入、输出可以将整个字符串一次输入或输出。
所以,选项C的说法是不正确的。
(16)以下程序的输出结果是_______。
main()
{inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p。
&
x[1][1];
for(i=0;
i<
4;
i+=2)printf("%d",p[i]];
}
A)52B)51C)53D)97
(16)C
通过指针引用数组元素
题中*p=&
是指将数组x的数组元素x[1][1]的地址赋值给指针变量p,使p指向x[l][l]这个数组元素,那么p[0]即为指针变量p当前所指向的数组元素x[l][1]的值。
具体执行时如下所示:
i=0时,输出p[0],也就是x[1][1],输出是5:
i=2时,输出p[2],即p[2+0],也就是x[2][0],输出是3。
(17)以下程序的运行结果是_______。
#include"stdio.h"
{
inta[]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a十5,*q=NULL;
*q=*(p+5);
printf("%d%d\n",*p,*q);
A)运行后报错B)66
C)612D)55
(17)A
通过指针引用数组
题目中没有给q分配存储单元,只是简单地给它赋了一个值,所以程序的运行结果是6llNULLpointerassignment,也就是运行后报错。
(18)以下说法中正确的是________。
A)c语言程序总是从第一个函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)c语言程序中的main()函数必须放在程序的开始部分
(18)C
C程序的运行顺序
c语言的程序是由主函数main()开始运行,由主函数来调用其他函数,所以选项A错误;
c语言中定义的函数必须是并列的,不能在一个函数中定义其他函数,选项B错误;
函数必须先定义后使用,在调用函数之前要定义函数,而mmn()函数不一定要放在程序的开始部分,故选项D错误。
(19)能正确表示a和b同时为正或同时为负的逻辑表达式是________。
A)(a>
=0llb>
=0)&
&(a<
0Ilb<
0)B)(a>
=0&
b>
--0)&
(a<
0&
b<
O)
C)(a+b>
0)&&(a+b<
=0)D)a*b>
(19)D
对逻辑表达式的判断
逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来。
选项A中,表达式表示的是a,b为异号;
选项B中,表达式表示的是0,因为没有满足条件的值;
选项C中,表达式表示的是0,因为没有满足条件的值;
选项D表示的是a和b为同号。
(20)若己定义:
inta[9],*p=a;
并在以后的语句中未改变p的值,不能表示a[l]地址的表达式是________。
A)p+lB)a+lC)a++D)++p
(20)C
数组地址的表示
数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其他元素。
(21)以下程序的输出结果是________。
{inta=-l,b=l,k;
if((++a<
0)&&!
(b--<
=0))
printf("%d%d\n",a,b);
else
printf("%d%d\n”,b,a);
A)-llB)01
C)10D)00
(21)C
if条件的判断
评析:
逻辑运算符的优先次序如下:
!
(非)→&
(与)→||(或),但本题需特别注意的是短路的概念:
对于&
运算符,其两边表达式的值只要有一边为假,则整个与运算表达式的值即为假,系统在执行时,先运算&
左边的表达式,若为假,则系统不会再判断&
运算符右边的表达式了,直接运用短路原理得整个与运算表达式的值为0。
由于++a是先运算后使用,b--是先使用后运算。
所以本题在执行++a后,a值为0,不满足条件,所以a为l,根据短路原理,b仍为0,接下去执行else语句,输出l0。
(22)以下选项中,能定义s为合法的结构体变量的是________。
A)typedefstructabc
{doublea;
charb[10];
}s;
B)struct
C)structABC
ABCs;
D)typedefABC
ABCs:
(22)B
结构体变量的定义
定义一个结构体类型的变量,可采用三种方法:
①先定义结构体类型,再定义变量名;
②在定义类型的同时定义变量;
③直接定义结构类型变量,即不出现结构体名。
选项B符合第三种定义方法。
(23)请读程序:
#include<
stdio.h>
string.h>
char*sl="AbCdEf",*s2="aB";
s1++;
s2++;
printf("%d\n",strcmp(s1,s2));
上面程序的输出结果是_______。
A)正数B)负数C)零D)不确定的值
(23)A
字符串比较函数strcmp()的应用
strcmp(X1,X2)是串比较函数,当X1>
X2时返回值为正数,当X1<
X2时返回值为负数,当XI=X2时返回值为零。
本题中“sl”、“s2”分别表示这两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,则*sl为“bCdEf'
,,*s2为“B”。
而在字符串比较中。
大小的确定是由各个字符串相应位置字符的ASCII码值的大小决定的。
“B”的ASCII码值为66,”b”的ASCII码值为98,所以sl>
s2,返回值为正数。
(24)请读程序:
func(inta,intb){
intc:
c=a+b:
returnC:
main(){
intx=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
上面程序的输出结果是________。
A)11B)20C)2lD)31
(24)C
自增、自减运算
评析:
函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x--,y++,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x--,y++,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以fune()的返回值为13+8=21。
(25)请读程序:
inta,b;
for(a=1,b=l;
a<
=100;
a++){
if(b>
=20)break;
if(b%3==1){b+=3;
continue;
b_=5:
printf("%d\n",a);
A)7B)8C)9D)10
(25)B
break语句和continue语句
break语句的作用是用于跳出循环体,继续执行循环体下面的语句;
而continue语句的作用是用于跳出本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
“%”是求余运算符,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时,条件(b>
=20)为假,跳出循环,此时共循环8次,即a=8。
(26)请读程序片段(字符串内没有空格字符):
printf("%d\n",strlen("ATS\n0l2\l\\"));
上面程序片段的输出结果是_______。
A)l1B)10C)9D)8
(26)C
字符串的长度
这个语句的目的是输出“ATS\n012\1\\”这个串的长度,在串中“\\”代表一个“\”,为了和printf()函数中的转义字符区分开来,在语法上使用了两个反斜杠代替了一个反斜杠,所以它仅仅为一个字符,而”\l”代表数字l,也占一个字符,“\n”是回车换行符,也占一个字符,加上A、T、s、0、1、2,一共是9个字符。
(27)请选出可用作C语言用户标识符的一组标识符_______。
A)VoidB)a3_b3C)ForD)2a
define_123_abcDO
WORDIFcasesizeof
(27)B
C语言的标识符
c语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。
选项A中的void和define都和c语言的关键字重名,不合法;
选项C中的case和c语言的关键字重名,不合法;
选项D中的2a是数字打头而且sizeof和c语言的关键字重名,不合法。
(28)请选出以下程序的输出结果_______。
stdio_h>
sub(int*s,inty)
{staticintt=3;
y=s[t];
t--;
{inta[]={1,2,3,4},i,x=0;
i++){
sub(a,x);
printf("%d",x);
printf("\n");
A)1234B)432lC)0000D)4444
(28)C
函数的形参和实参的关系
x作为函数sub()的实参时,函数对x值的改变没有返回主函数,并不能使得x的值变化,所以在打印时,x的值是始终不变的,即为O。
(29)若有以下说明和语句,请选出哪个是对c数组元素的正确引用_______。
intc[4][5],(*cp)[5];
cp=c;
A)cp+lB)*(cp+3)C)*(cp+1)+3D)*(*cp+2)
(29)D
数组元素的引用
cp=c这个语句是将数组第0行的地址赋给了cp。
cp+l使指针指向二维数组c的第一行;
*(cp+3)是数组c的第三行的第0列的地址值;
+(cp+1)+3是数组c的第一行第三列的地址值。
(30)设有以下语句
chara=3,b=6,c;
c=a^b<
<
2:
则c的二进制值是_______。
A)00011011B)00010100C)000ll100D)00011000
(30)A
位运算
“<
”是c语言中规定的左移运算符,例如,a=a<
2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方;
,^是异或运算符,所以,c的二进制值应为0001101l。
(31)设有
staticcharstr[]="Beijing";
则执行
printf("%d\n",strlen(strcpy(str,"China")));
后的输出结果为_______。
A)5B)7C)12D)14
(31)A
在执行printf()函数前,数组str的长度是7,但是当使用strcpy()函数将新的值赋给str后,strlen()函数返回的应当是现在的str字符串的字符个数,即是5。
(32)以下程序的输出结果是_______。
{inti;
for(i=1;
5;
if(i%2)printf("*");
elsecontinue;
printf("#");
print"$\n");
A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$
(32)C
if语句的判断
当i不可以整除2时打印”*”,然后打印“#”,不能整除2则执行continue,跳过printf(“#”);
语句,结束本次循环,返回到循环的起始点。
当循环结束后,打印“$”。
(33)有以下程序
stdio.h>
{intc;
while((c=getchar())!
=‘\n’){
switch(C-‘2’){
caseO:
case1:
putchar(c+4);
case2:
break;
case3:
putchar(c+3);
default:
putchar(c十2);
从第一列开始输入以下数据,↙代表一个回车符。
2473↙
程序的输出结果是_______。
A)668977B)668966C)66778777D)6688766
(33)A
switch()语句
getchar()函数是从键盘接受一个字符输入;
当用户键入的字符不是回车符时,会进入一个多分支选择语句,根据表达式c-‘2’的值进行分支选择:
putchar()是在屏幕上打印一个字符,最后的结果应当为668977。
(34)以下程序的输出结果是________。
{intw=5;
fun(w);
fun(intk)
{if(k>
O)fun(k_1);
printf("%d",k);
A)5432lB)012345
C)12345D)543210
(34)B
函数的递归调用就是在调用一个函数的过程中又出现直接或间接地调用该函数本身。
fun函数共被调用6次,即fun(5)、fun(4)、fun(3)、fun
(2)、fun
(1)、fun(O)。
其中fun(5)是main函数调用的,其余是在fun函数中调用的。
(35)若fp是指向某文件的指针,且已读到此文件的末尾,则函数feof(f1))的返回值是_________。
A)EOFB)0C)非零值D)NULL
(35)C
文件结束符的返回值
函数feof是用来判断文件是否已读到末尾,如果己读到末尾则返回非零值,否则返回O。
(36)算法的时间复杂度是指_______。
A)执行算法程序所需要的时间
B)算法程序的长度
C)算法执行过程中所需要的基本运算次数
D)算法程序中的指令条数
(36)C
算法复杂度的概念和意义(时问复杂度与空间复杂度)
所谓算法的时间复杂度,是指执行算法所需要的计算工作量。
为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量