《2023年湖南省邵阳市全国计算机等级考试数据库技术预测试题(含答案).docx》由会员分享,可在线阅读,更多相关《2023年湖南省邵阳市全国计算机等级考试数据库技术预测试题(含答案).docx(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年湖南省邵阳市全国计算机等级考试数据库技术预测试题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .下列关于数据仓库的叙述中,哪一个是不正确的?A.数据仓库通常采用三层体系结构B.底层的数据仓库服务器一般是一个关系型数据库系统C.数据仓库中间层OLAP服务器只能采用关系型OLAPD.数据仓库前端分析工具中包括报表工具2 .下列关于数据结构中队列的描述中错误的是A.队列的特点是先进先出B.队列既能用顺序方式存储,也能用链接方式存储C.队列使用于二叉树对称序周游算法的实现D.队列使用于树的层次次序周游算法的实现3 .在学生表STUD中,查询年龄在2023岁之间的学生的姓名(X
2、M)、 年龄(SA)和所在系(SD),实现该功能的正确SQL语句是oA.SELECT XM, SA, SD FROM STUD WHERE BETWEEN 20 SA 23;4 .SELECT XM, SA, SD FROM STUD WHERE SA BETWEEN 23 AND 20;C.SELECT XM, SA, SD FROM STUD WHERE SA NOT BETWEEN 20 AND 23;121314151617181920212223242526272829303132333435363738394041424344454647484950void main()( if(
3、ReadDat()(管、一printf (数据文件 in.dat 不能打开! n007*1);return;encryptChar();WriteDat();)/从文件mdat中读取一ar英文文审,“入?抑市敷用H中/ int ReadDat(void)FILS wp;int i * 0;unsigned char *p;if (fp-fopcn(win.datrMrw) -NULL)return 1;while(fgets(xxil/ 80,fp) ! NULL)(p - strchr(xx(i)f#n);if(p) *p 0;:4maxline , 1;fclose (fp);return
4、 0;I八把站果XX 出总文件皿M中void WriteDat(void)( .:FILE efp;:- -int i;fp 口 fopen (wout .dat* Rw,r);for (i 0; i =o且ab . cd=10且两个数均是奇数, 同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到 小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnto 最后main函数调用写函数writcDat把结果ent以及数组b中符合条件 的四位数输出到文件Out . dat中。注意i部分源程序存在EX文件中,程序中已定义数fth a(200b b(200.已定义变量,cm调勿改动数
5、据文件irtdai中的任何数据、主的数main()读函数madlXtO和写函数writdM)的内容1 include 2 i Idefine MAX 200 定义宏交It max. K值2003 ! int aMAXh b(MAXh ent - 0; 定义全局爱 NTt 敷典 aiMAK). dimax)加受ent.耳切值等于 04 i void writeDat();5 ; void jsVal()6 1 I7 !)8 ! void readDat O 从An.st文件中Ut取200个四付ft存入敏拉中io h鳌 11 ! int i;12 FILE efp;13 * fp fopen(in
6、.datM14 J for(1 0; i MAX; if*) 15 fdcanf (fpr -%d0r &a(i);R 16 ; fclose(fp) ; I 17 ! I18 i void main() :2.20 int i;212223242526272829303132333435363738readDat();jsValO; 用的敏实现总目要求的功他printf (”满足条件的败*dn”. ent);for(i 0; i ent; 1+)printf(n%d ,b(i);printf (Xn*1);writeDat O; void writeDat O 纪it像结果cm以及数组b中籽
7、合条件的四位数出到ouLdai文件中 (FILE p;int i;fp fopen (wout .dat1, w“);fprintf (fpr fdn, ent);for(i 0; i ent;fprintf(fprw%dnnr b(i):fclose(fp);34.已知数据文件in .dat中存有200个四位数,并已调用读函数readDat 把这些数存入数组a中,请考生编制一函数jsVal,其功能是:把一个四 位数的个位数位置上的值减去千位数位置上的值再减去百位数位置上 的值最后减去十位数位置上的值,如果得出的值大于等于零且原四位数 是偶数,则统计出满足此条件的个数ent,并把这些四位数按从
8、小到大 的顺序存入数组b中,最后调用写函数writeDat把结果ent以及数组b 中符合条件的四位数输出到Out . dat文件中。注意:棉分源科序存在test e文件中程序中已定义数flh a(200. b(200,已定义如匕ent请勿改动数据文件ndai中的任何数据.主函数main()、读函数nadDaU)和写由数writcDat()的内容,1 ! lincludo 2 i Ideflne MAX 2006789101112131415161718192021222324252627282930void writeDat()3 ; int a(MAXbMAXJ. entvoid write
9、Dat(); void jsVal()void readDat()(二:xnt i;FILE fp;fp fopen(win.datH#nrn);for(i - 0; i void main ()I int i; readDat();jsVal () ;printf (满足条件的数edn,cnt;for(i 0; i ent; printf(n%d ”, b(i);printf;writeDat ();3132333435363738FILE efp; int i; fp - fopen(Rout.datM, ; fprintf(fp#ent);for (i 0; i 234567891011
10、! #include void ReadWrlte();! int findStr(char e3trtchar substr)char 3tr(81), int n;substr3;12131415161718192021,从文件ntdat中it取两个字符中并辑用MttfindSE” *后把勘果修出到文件22void ReadWrite 0printfL输入簟字符门” gets(str);printf 输入7符中:; gets(substr);,(str);puts(substr);nfindStr(str, substr); printf (wn%dn,t, n);ReadWrite();
11、23 ;24 :25 ;26 :27 j28 :29 ;30 ;31 I32 :33 !34 ;35 i36 37 ;38 |39 i40 !41char str(81)r substr(3r ch;int nr len. i 0;FILE erfr ewf;rf - fopenr L);wf - fopen (Hout datHr m;whiled 5)fgets (str, 80, rf); 从文件m&i中&取长愎为N的字符中存入到字符中atxfgets (substr 10, rf); 从文件tndit中注取长度为Q的f字符中存入到字符申len strlen (substr) - 1;
12、IEf 字符小的长度城】的u ,盼ch substr (Ien|; 把子字符中的马后一个字I9的映皓字符ch,如此孑字舒申的后一个字栉是同筌投行符或是文件妫束符,JME予字符明的最后一个字折的值设置力。/1(ch M *n911 ch Oxla)substr(len) 0;/ ill用函Ik findStr(strf Bubstr)返回子字的申 substr 在?7率中出fit的次数/nflndStr(strr substr);fprintf (wff ”dn”. n); 纪计海忸空n写入到文件out.cUt中;6环堂2加1 “fclose(rf);42 - fclose(wf);36.已知在
13、文件in .dat中存有100个产品销售记录,每个产品销售记录 由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整 型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数 量。函数ReadDat读取这100个销售记录并存入结构数组sell中。请编 制函数SortDat,其功能要求:按产品名称从大到小进行排列,若产品名 称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell 中。最后mainoi函数调用函数WriteDat把结果输出到文件out .dat中。 提示:若中间变量为PRO temp,则可以直接使用结构赋值语句进行解 题:产品名称
14、比较请用函数strcrnp进行解题。例如:selli=temp ; 注意:部分源程序存放在test . c文件中。请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。78910111213PRO sell【MAX);1415161718voidvoidvoidReadDat();WriteDat();SortDat ()192021222324252627voidmemsetsell, 0, sizeof(sell);ReadDat();SortDat O /WriteDat();void ReadDat()282930313233343536FILE *fp;cha
15、r str809 ch(11);int i;fp - fopen(Hln.dat*,r for(i - 0; i 100; Ifgets(str, 80. fp);memepy(selli.dm, str. 4);1 1 tinclude 2 ; #include 3 - #include 4 ! tdefine MAX 100S ; typedef struct 6 ! !char dm5; /产M代码/ char me(11 ; /产品名称/ int djv/华馀/int si:/ft* /long je;/金。/PRO;37 j nemcpy(sell(istr 4. 10);38 !
16、memcpy(chtstrL4r 4); ch4-0;39 idj atol. (ch);40 :cnemcpy(chf str*18f 5); ch50:41 I sell|1sl atoi(ch);42 ; siilltl je (long)sell(i) .d sell(1) .91;43 1I44 jfclose(fpj;45 * )46 ! void WriteDat()47 ;(48 | FILE *p;49 j int i;50 ; fp topen(*out.datr ww);51 ; for(1 0; i 100;52 i I53 :fprlntf (fp55 - fclos
17、(fp);56 ;)37.已知数据文件in .dat中存有200个四位数,并已调用读函数readDat 把这些数存入数组a中,请考生编制一函数jsVal,其功能是:若一个四 位数的千位数位置上的值小于等于百位数位置上的值,百位数位置上的 值小于等于十位数位置上的值,以及十位数位置上的值小于等于个位数 位置上的值,并且原四位数是偶数,则统计出满足此条件的个数ent并 把这些四位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat把结果ent以及数组b中符合条件的四位数输出到文件Out .dat 中。23456 7891011121314151617181920212223242526
18、27282930313233343536373838.注意.部分源程序存在 gc文件中程序中已定义数组I a200. b200e已定义支代,ent请勿改动数据文件irutat中的任何数据.主函数nwin().读的数readDat。和耳南数writeDatO的内容1 ;include define MAX 200 定义定空 max, H(哥于 200int a (MAX) # bMAXJ, ent - 0; 定义整型数班. d【max】和叟并HUflt cne的初值为。 void writeDat();void jsVal()void readDat() ( int i;FILE efp; fp
19、 fopen(ttin.datR/Rrw); for(i 0; i MAX; fscanf(fp,fclose(fp);) void main() ( int 1; readDat(); jsVal(); M用RValCiAH实现日发玳的功能 printf (涓足条件的数ent); for (i - 0; i ; fprintf (fp# 7dn. ent); for(1 - 0; i ent; 1() fprintf (fp, ”dn”. b(H);fclose(fp);在文件in .dat中已存有200个正整数,且每个数均在1 000至9999之间。函数readDat是读取这200个数存放
20、到数组aa中。请编制函数jsSort,其函数的功能是:要求按每个数的后三位的大小进行降序排列,如果出现后三位相等的数值,则对这些数值按原始4位数据进行升序排列,将排序后的前10个数存入数组bb中。最后调用函数writeDat把结果bb输出到文件out . dat中。例;处理前 9012 5099 6012 7025 80gx处理后 5099 8088 7025 6012 9012注意,部分源程序存在E.c文件中,请勿改动数据文件in.dai中的任何数据、曲效main。、读函数readD叫)和叮函散writeDatO的内容1 i Iinclude 2 ;(include 3 ! void rea
21、dDat();4 ; void writeDat();5 - int aa(200), bb10);6 void jsSort()14 (8 j9 310 ; void main()11 ;(12 readDat();13 - jsSort();14 j writeDat();j1 15 ;二 斤.”16 ! void readDat()f.;18 FILE in;19 ! int i;20 : in fopen(win.datHr *rw);21 ; ford 0; i )22 :fscanf (in, 7dJ, 6aa(i!);23 ; fclose(in);;24 1 25 void w
22、riteDat( 26 H27 ! FILE eout;28 i int i:29 - out fopen (*out dat11/ w);30 for(1 0; i cd, ab必须是偶数且能被5整除,cd必 须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位 数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的 个数cnt0最后main函数调用写函数writeDat把结果ent以及数组b中 符合条件的四位数输出到Out . dat文件中。注意:部分源程序存在teste文件中.程序中已定义数组:4200,b200.已定义变量:ent请勿改动数据文件in.dat中的任何数
23、据、主函数mam。、读或敷readDatO和写法数writeDaU)的内容1 i linolude 2I Ide fine MAX 2003 int a(MAX), b(MAX9 ent - 0;4 ! void writeDat();5 ; void jsVal()6 (7 j8 ; 丁9 ! void readDat () 从in.dat文件中it取200个四位数存入数坦a中101(11 ;int ;12 j FILE efp;13 :fp fopn(in.dat,14 j for(i 0; i MAX; 1土)15 ! fscanf fpr Qd, Aa(1J);16 ; fclose(
24、fp);17 ! 118 void main()19 ;(20 ! int i;21 i readDat();22 ; jsValO; 用胡数“玄现目要求的功能23 I printfl涓足条件的数Tdnr ent);24 for(i 0; i ent; i*)25 - printf (w%d / b(il): 一26 ! printf;272829303132333435363738writeDat O;void writeDat ( 把计算给录cm以及fftifl b中希台条件的四位数除出到outdm文件中FILE *fp;int 1;fp fopen (wout .dat*, Rw0);f
25、printf (fpr R,dn,ent);for(i * 0; i ent; *)fprintf(fprM%dnw/ bl);fclose(fp);40.函数ReadDat实现从文件in . dat中读取一篇英文文章存入到无符 号字符串数组XX中;请编制函数ChA,其函数的功能是:以行为单位 把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到 第一个新的值,存入数组单元xxi0中(其中:i是文章中的某行)。第 二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的值,存 入数组单元xxil中。以此类推一直处理到最后第二个字符,最后一个 字符的ASCII值加原第一个
26、字符的ASCII值,得到最后一个新的值,存 放在原字符串对应的位置上,之后把已处理的字符串逆转后仍按行重新 存入无符号字符串数组XX中。最后main函数调用函数WriteDat把结 果XX输出到out . dat文件中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符 号和空格,并也按它的ASCII值作以上处理。注意:部分源程序存放在 test . c文件中。请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat 的内容。I 23 45 67;fInclude include a;unsigned char xx(5080;! int tnaxlme 0;
27、 /文他的总行数/ :int ReadDat(void);;void WriteDat(void);i void ChA(void)8 i(910 ; I11 ! void12 i(main ()141516171819202122232425262728293031323334353637383940414243444546474849if(ReadDat(1(;printf数据文件 in.dat.不能打开! n007H);return;j I:ChA();;WriteDat(); K从文件m.dat中日取一管英文文章存入到无符号字符申数蛆xx中/int ReadDat(void)! (.丁
28、;FILE wfp;! int 1*0;char *p;! if (fp-fopen(Hin.datHrMrw) -NULL) return 1;; while(fgets(xx(ir 80,fp) !* NULL)j (口Ip - strchr(xxir9n9);fif (p)p 0;IfI ) maxline i; fclose(fp); return 0;)! /把结果xx*出到ouLdal文件中/;void WriteDat(void)! I;FILE:*fp;;int i; fp - fopenrout.dat. ”丁); for(i 0; i maxline; 1+)!(.k ,;
29、printf(R%snR# xx(i);!fprintf (fp# Fsn* xx(il);L )fclose(fp);I )五、设计与应用题(2题)41 .某网上商城因为业务发展,原有的系统不能很好的满足需要,因此采 用了一套新的经营管理系统,此系统使用SQL Server 2008数据库管理 系统。此系统上线运行前,需将商场原有的数据导入到新系统中。原有 系统使用SQL Server 2000,数据结构与新系统不完全一致。因此需要把 数据从SQL Server 2000导入到SQL Server 2008中,为了保证数据一 致性,数据导入过程中要求暂停业务且必须在3小时内完成。(1)在原
30、有数据导入新系统的过程中,实施人员发现原有数据量很大,导人数据 需要四小时,业务无法接受。经分析某工程师认为,数据导入过程中的 数据库I/O很高,但导入数据的程序本身对系统资源占用率很低。该工 程师建议将数据导入过程中的数据恢复模式从“完整”模式改为“简单” 模式以提高数据导人速度;而另一位工程师则认为此方法未必能提高数 据导入速度,而且还可能导致数据丢失,不建议使用此方法。请分析此 方法是否能够提高数据导入速度并给出理由,同时分析此操作的数据丢 失风险。(5分)(2)在成功导入历史数据后,此系统顺利上线运行。在 上线运行的第一周,发现数据库服务器的CPU使用率很高,达到近90%, 高峰期间达
31、到100%,且系统内存占用率达到90%,但系统I/O很轻。 业务人员反应系统操作速度很慢。为了提高系统运行速度。在不修改应 用程序的前提下,两位工程师提出了不同的解决办法:I .为服务器增 加2颗CPU,缓解CPU使用率很高的问题;II .为服务器增加一倍内 存,缓解内存使用率很高的问题。考虑成本,现阶段只能按照一种方案实施。请指出在现有情况下,哪种方案更合理并给出理由。(5分)42 .设某全国性的运输企业建立了大型OLTP系统,并在该系统之上建立 了数据仓库。OLTP系统和数据仓库中有如下数据表:运输明细表(运输 单ID,发送站ID,终到站ID,货物ID,货物重量,运输价格,发货日 期)汇总
32、表1 (发送站ID,终到站ID,货物ID,发货日期,总重,总 运价)汇总表2 (发送站ID,终到地区ID,货物ID,发货日期,总重, 总运价)汇总表3 (发送站ID,终到站ID,货物ID,发货月份,总重, 总运价)汇总表4 (发送地区ID,终到地区ID,货物类别ID,发货日 期,总重,总运价)该企业管理的货运站约有100个,货物约有500种 共10类,各汇总表都建有主码,且各表有合理的维护策略,在每次维护 后数据能保持一致。设有视图V,该视图的访问频率很高,其查询结果 模式为(发送地区ID,终到站ID,发货月份,总重,总运价),该视图 现以汇总表1为计算数据源。经监控发现,汇总表1的被访问频率
33、过高, 导致系统整体性能下降,而其它汇总表被访问频率较低。在不增加汇总 表和索引的情况下,请给出一个改善系统服务性能的优化方案,并简要 说明理由。(1。分)六、单选题1分(2题)43 .下列关于概念数据模型的说法,错误的是()。A.概念数据模型并不依赖于具体的计算机系统和数据库管理系统B.概念数据模型便于用户理解,是数据库设计人员与用户交流的工具, 主要用于数据库设计C.概念数据模型不仅描述了数据的属性特征,而且描述了数据应满足的 完整性约束条件D.概念数据模型是现实世界到信息世界的第一层抽象,强调语义表达功 能44 .设有关系模式R (A, B, C, D),存在函数依赖集:AtB, C-D
34、, 则R最高可属于()oA.INF B.2NF C.3NF D.BCNF参考答案1.C解析:本题考查数据仓库体系结构。数据仓库体系通常采用3层的 体系结构。底层为数据仓库服务器,中间层为OLAP服务器,顶层为前 端工具。底层的数据仓库服务器几乎总是一个关系数据库系统。中间层 OLAP服务器的时限可以是关系型OLAP,即扩充的关系型DBMS,提 供对多维数据库的支持也可以是多维OLAP,它是一个特殊的服务器, 直接支持多维数据的存储和操作.顶层的前端工具包括查询和报表工具、 分析工具、数据挖掘工具等。选项C的叙述不正确,因此本题的答案为 Co2C解析:队列具有先进先出的特性,可以用顺序存储方式存
35、储,也可 以用链接方式存储,队列使用树的层次次序遍历算法的实现。3 .D解析:在WHERE子句中,可以使用BETWEEN.AND来查找属 性值在指定范围内的元组,其中BETWEEN后是范围的下限,AND后 是范围的上限。所以20 23岁之间可表示为BETWEEN20AND23o4 .D解析:BCNF是数据库规范的最高程度。若要求分解具有无损连接 性,那么模式分解一定可以达到BCNF ;若要求分解保持函数依赖,那 么模式分解可以达到3NF,但不一定能达到BCNF ;若要求分解既具有 无损连接,又保持函数依赖,则模式分解可以达到3NF,但不一定能达 到BCNF。分析题目中的4个选项可知,正确答案为
36、选项D。5 .B解析:快速排序法是通过一趟扫描,使得排序的序列长度能较大幅 度地减少。快速排列通过一趟扫描使某个节点移到中间的正确位置,并 使在它的左边序列的节点都比它小,而右边序列的节点的键值都不比它 小。称这样一次扫描为“划分”,通过第一趟划分95被放到第8个位置。6 .A解析:为了保证事务的正确执行,维护数据库的完整性,要求数据 库系统维护的事务特性:原子性(atomicity)、一致性(Consistency)、隔离 性(isolation)、持久性(durability)。7 .B第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依 赖是指不能存在仅依赖主关键字一部分的属性
37、,如果存在,那么这个属 性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原 实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存 储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖 于主关键字。所以其最多为2NF。8 .D解析:数据库具有数据结构化、数据共享性高、冗余度小、易于扩 充、数据独立性高等特点。数据结构化是用数据模型描述,从整体描述 数据,数据不再是面向某一应用,而是面向整个系统。9 .A解析 数据结构概念一般包含三方面的内容 数据之间的逻辑关系、 数据在计算机中的存储方式以及在这些数据上定义的运算的集合。10 .A解析:本题主要考查了在计算机网络基础中,域名服务系统的相关 知识。域名服务系统:DNS;路由信息协议:RIP;电子邮件协议:SMTP;网 络文件系统:NFS。11 .有向树用树形结构表示实体类型及实体间联系是层次模式最主要的 特征,层次结构是一棵有向树,树的节点是记录。根节点只有一个12 .虚电路【解析】在实际应用中,分组交换技术可以分为两类:数据 报与虚电路。13 .m14 .建立【解析】SMTP的通信过程可以分成三个阶段:连接建立阶段、 邮件传递阶段和连接关闭阶段。15 .存储程序计算机组成原理的知识。是冯诺伊曼提出来的计算机结构, 一般包括5个功能结构,运算器,控制器,存储器,输入和输出设备 16
限制150内