2022年2022年计算机等级考试三级数据库技术道上机题答案 .pdf
《2022年2022年计算机等级考试三级数据库技术道上机题答案 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机等级考试三级数据库技术道上机题答案 .pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 一题:(同 31 题)【考点分析】本题考查对 4位整数的排序。 考查的知识点主要包括: 数组元素的排序算法,if判断语句和逻辑表达式,以及求余算术运算。【解题思路】此题属于 4位数排序问题 。本题需主要解决3个问题: 问题1如何取4位数的后 3位进行比较; 问题 2如何按照题目要求的条件 (按照每个数的后 3位的大小进行降序排列, 如果后3位相等, 则按照原始 4位数的大小进行升序排列)排序;问题3如何将排完序的前10个数存到数组 bb中去。本题的解题思路为:使用双循环对数组按条件进行排序,然后将排完序的前10个数存到数组 bb中。对于问题1可以通过算术运算的取余运算实现(aai%1000
2、) ;问题2通过包含 if判断语句的起泡排序法就可以实现。【参考答案】void jsSort() int i,j; /* 定 义循环控制变量 */ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i199;i+) /*用选择法对数组进行排序 */ for(j=i+1;j200;j+) if(aai%1000aaj) /*则要按原4位数的值进行升序排序*/ temp=aai; aai=aaj; aaj=temp; for(i=0;i10;i+) /*将排序后的前10个数存入数组 b中*/ bbi=aai; 【易错提示】取4位数后三位的算法,if 判断语句中逻辑表达式的比较运
3、算符。第二题:【考点分析】本题主要考查的知识点包括:C语言循环结构,if 判断语句和逻辑表达式, 以及分解多位整数的算术运算。【解题思路】分析题干,本题除给出条件SIX SIXSIX NINE NINE 之外,还可得出 2个隐含的条件: 条件1:SIX 和NINE 分别是 3位和 4位的正整数; 条件 2:SIX 的十位数字等于NINE 的百位数字, NINE的千位数字和十位数字相等。本题解题思路:通过嵌套的循环结构可以遍历到所有的3位和4位数,对于每一个 3位数及 4位数的组合进行题设条件(SIXSIXSIX NINE NINE) 的判断,满足条件的对其分解得到各数位的数字,再进一步判断各位
4、数字是否满足本题隐含的条件(条件 1及条件2),如果满足则个数加1,并将该 3位数及 4位数添加到和值中。【参考答案】void countValue() int i,j; /*定义循环变量,即要求的数*/ int s2; /*定义SIX 的I值*/ int n2,n3,n4; /* 定义NINE 中的千位,百位,十位的值*/ for(i=100;i1000;i+) for(j=1000;j10000;j+) if(i*3=j*2) s2=i%100/10; /*求的SIX中的 I的值的大小 */ n4=j/1000; /*求的 NINE 中的千位上的N的大小 */ n3=j%1000/100;
5、 /*求的 NINE 中的百位上的I的大小 */ n2=j%100/10; /*求的 NINE 中的十位上的 N的大小 */ if(s2=n3&n2=n4) cnt+; /*满足条件的个数增加*/ sum+=i+j; /*满足条件数求和 */ 【易错提示】隐含条件未被分析出或分析错误,整数数位分解的算术方法使用错误。第三题:(类似 46、71题)【考点分析】本题考查的知识点包括:C语言中文件读函数, if 条件判断结构,对多个整数求平均值和方差的算法等。【解题思路】此题属于 数学类问题 。分析题干要求,得出解本题主要需解决3个问题: 问题1如何实现从已打开的文件中依次读取数据到数组的操作,问题
6、2如何分离并统计出奇数和偶数的个数及和值, 并计算平均值; 问题3如何计算奇数的方差。本题的解题思路为: 首先使用 C语言的库函数 fscanf()将文件中的数依次读入数组xx中,然后通过循环判断得出需要的数据(奇数个数、偶数个数、奇数及偶数的和);最后根据题目中已给出的公式和之前保存的数据计算出奇数的方差。【参考答案】int ReadDat(void) FILE *fp; int i,j; /* 计数器变量 */ if(fp=fopen(IN.DAT,r)=NULL) return 1; for(i=0;i100;i+) /*依次读取整型数据放入数组xx中*/ for(j=0;j10;j+)
7、 fscanf(fp,%d,&xxi*10+j); fscanf(fp,n); if(feof(fp) break; /*文件读取结束,则退出*/ fclose(fp); return 0; void Compute(void) int i;/* 定义循环控制变量*/ int ttMAX ;/*定义数组保存奇数*/ for(i0;i1000;i) if(xxi%2 !0) odd;/* 计算出 xx中奇数的个数odd*/ ave1xxi ;/*求奇数的和 */ ttodd1xxi ;/* 将奇数存入数组 tt中*/ else even;/* 计算出 xx中偶数的个数even*/ ave2xxi
8、 ;/*求偶数的和 */ ave1/odd;/* 求奇数的平均值 */ ave2/even;/*求偶数的平均值 */ for(i0;iodd;i) totfc (tti ave1)*(tti ave1)/odd;/*求所有奇数的方差 */ 【易错提示】文件操作函数 fscanf()和feof()的用法, if 判断语句中逻辑表达式,对方差计算公式运用错误。第四题:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 32 页 - - - - - - - - - 【考点分析】本题
9、考查 对一定范围内整数的筛选。考查的知识点主要包括:多位整数的分解算法,完全平方数判断方法,if判断语句和逻辑表达式。【解题思路】此题属于 数学类问题 。分析题干,本题需注意2个关键点: 关键点 1判断该数是否是完全平方数;关键点 2判断该数是否有两位数数字相同。本题的解题思路为:通过循环控制,依次判断100至999数是否满足 关键点 1(是否为完全平方数)。如果是,则将该数分解出各位数数字,并判断是否有两位数数字相同,如果存在,则个数加 1,并将该数存入数组中。【参考答案】int jsValue(int bb) int i,j; /*定义循环控制变量 */ int cnt=0; /*定义计数
10、器变量 */ int a3,a2,a1; /*定义变量存储三位数每位的数字 */ for(i=100;i=999;i+) /*在该范围中找符合条件的数 */ for(j=10;j=sqrt(i);j+) if(i=j*j) /*如果该数是完全平方数*/ a3=i/100; /*求该数的百位数字 */ a2=i%100/10; /*求该数的十位数字*/ a1=i%10; /*求该数的个位数字*/ if(a3=a2 | a3=a1 | a2=a1) /*有两位数字相同*/ bbcnt=i; /*则把该数存入数组 bb中*/ cnt+; /*统计满足条件的数的个数*/ return cnt; /*返
11、回满足该条件的整数的个数*/ 【易错提示】完全平方数的判断方法错误,分解整数各个数位的方法错误,if判断语句中表达式。第五题:【考点分析】本题考查 对一定范围内整数的筛选。考查的知识点主要包括:多位整数的分解算法,素数的判断算法,if判断语句和逻辑表达式。【解题思路】此题属于 数学类问题 。分析题干要求,归纳出本题的 2个关键点: 关键点 1判断该数是否为素数;关键点 2判断是否满足条件:个位数字和十位数字之和被10除所得余数等于百位数字。本题思路为:通过循环语句,依次求出所有3位数的各位数数字,并判断是否满足 关键点 2(个位数字和十位数字之和被10除所得余数等于百位数字),如果满足则判断该
12、数是否为素数,如果是则个数加 1,并将该数加到和值中。判断的方法为:依次取从2到该数 1/2的数去除这个数, 如果有一个可被整除, 则不是素数,如果循环后的数大于该数的一半就可以判定该数是一个素数。【参考答案】void countValue() int i,j; /* 定义循环控制变量 */ int half; int a3,a2,a1; /*定义变量存储 3位数每位的数字 */ for(i=101;i1000;i+) /*在该范围内寻找符合条件的数 */ a3=i/100; /*求百位数字 */ a2=i%100/10; /*求十位数字 */ a1=i%10; /*求个位数字 */ if(a
13、3=(a2+a1)%10) /*如果个位数字与十位数字之和被 10除所得余数恰是百位数字*/ half=i/2;for(j=2;jhalf) /*如果是素数 */ cnt+; /*计算这些素数的个数 cnt*/ sum+=i; /*计算这些素数值的和sum*/ 【易错提示】素数的判断算法使用错误,分解整数各个数位的方法错误,if判断语句中逻辑表达式错误。第六题:(同 26、27 题)【考点分析】本题考查 结构体数组的排序。考查的知识点主要包括: 结构体成员运算,字符串比较符,数组排序。【解题思路】此题属于 销售记录排序类题型。此类题型主要考查对结构体数组的排序。解题时,应注意3个关键点: 关键
14、点 1如何按产品名称从小到大排序;关键点 2如果产品名称相同; 关键点 3如何按金额从小到大排列。数组排序可以用起泡法实现,起泡法的思路是: 将较小的值像空气泡一样逐渐上浮 到数组的顶部,而较大的数值逐渐下沉 到数组的底部。具体为第1趟用第 1个记录和第 2个记录进行比较,如果不符合要求,就进行交换,第2个记录和第 3个记录比较,直到倒数第2个记录和最后 1个记录比较完成;第 2趟用第2个记录和第 3个记录比较,然后第3个和第 4个比较,依此类推。本题在双循环中进行每次记录比较时,首先用字符串比较函数 strcmp比较两个产品的名称,如果返回的值大于0,则这两个产品进行数据交换;如果返回值等于
15、0,再比较两个产品的金额,如果前一个产品的金额大于后一个产品的金额,则这两个产品进行数据交换。【参考答案】void SortDat() int i,j; /*定义循环控制变量*/ PRO temp; /*定义数据交换时的暂存变量(这里是 PRO 类型的结构体变量)*/ for(i=0;i99;i+) /*利用选择法进行排序*/ for(j=i+1;j0) /*按产品名称从小到大进行排列*/ temp=selli; sell i=sellj; sellj=temp; else if(strcmp(selli.mc,sellj.mc)=0) /*若产品名称相同 */ if(selli.jesell
16、j.je) /*则按金额从小到大进行排列*/ temp=selli; selli=sellj; sellj=temp; 记忆口诀: 一定义二循环三比较。定义指定义变量, 循环指循环语句,比较是比较记录成员大小及交换,详见模板一。做题时,需灵活应用模板,切勿死记硬背。【易错提示】结构型数据对成员的访问用.成员运算符; 两个字符串的比较用字符串比较函数strcmp。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 32 页 - - - - - - - - - 第七题:(类似于
17、30题)【考点分析】本题考查对多个整数的筛选以及排序。考查的知识点主要包括:多位整数的分解算法,逻辑表达式,数组排序算法。【解题思路】此题属于 4位数的筛选类题 ,并且需求出各位数数字,再筛选排序。解此类题目需主要解决3个问题: 问题1如何取得 4位数的各个数位数字; 问题 2如何通过条件 (本题为千位数字加个位数字等于百位数字加十位数字)筛选出满足条件的数;问题 3如何对数组中的数进行排序。解此类题的一般思路为:先求出每个数的各位数字,再根据各位数数字筛选出满足条件的数存入新的数组中,最后对新数组进行排序。对于问题1通过算术运算取余和整除可以分解得到4位数的各个数位上的数字;问题2通过 if
18、条件判断语句和逻辑表达式可以实现。问题 3排序可以通过循环嵌套的起泡法来完成。在求各位数数字时,先将每个数进行取整运算求出千位数,将该数取余再除100取整得出百位数,将该数取余再除10取整得出十位数,最后将该数取余得出个位数。【参考答案】voidjsValue() int i,j; /* 定义循环控制变量*/ int a1,a2,a3,a4; /*定义变量保存 4位数的每位数字 */ int temp; /*定义数据交换时的暂存变量 */ for(i=0;i300;i+) /*逐个取每一个 4位数*/ a4=ai/1000; /*求4位数的千位数字, 将每个数进行取整运算求出千位数*/ a3=
19、ai%1000/100; /*求4位数的百位数字, 将该数取余再除 100取整得出百位数 */ a2=ai%100/10; /*求4位数的十位数字, 将该数取余再除 10取整得出十位数 */ a1=ai%10; /*求4位数的个位数字, 最后将该数取余得出个位数*/ if(a4+a1=a3+a2) /*如果千位数加个位数等于百位数加十位数*/ bcnt=ai; /*将满足条件的数存入数组 b中*/ cnt+; /*统计满足条件的数的个数 cnt*/ for(i=0;icnt-1;i+) /*用选择法对数组b的4位数按从小到大的顺序进行排序*/ for(j=i+1;jbj) temp=bi; b
20、i=bj; bj=temp; 记忆口诀:一定义二筛选三排序。定义指定义相关变量,筛选是筛选出满足条件的数,排序则是按照要求对数组排序。详见模板二。做题时,需灵活应用本模板,切勿死记硬背。【易错提示】分解 4位数时算术运算符的使用,4位数条件判断时 if语句中的条件表达式,起泡法排序时的条件。第八题:(类似于 24、25题)【考点分析】本题考查 对多个整数的筛选以及排序。考查的知识点主要包括:多位整数的分解算法,逻辑表达式,数组排序算法。【解题思路】此题属于 4位数的筛选类题 ,并且需将各位数组成新的 2位数,再筛选排序。解题时,需主要解决4个问题:问题 1如何取得 4位数的各个数位数字;问题2
21、如何按照要求组成新的 2位数字 ab(本题为千位数字与十位数字),以及 cd(本题为个位数字与百位数字);问题3如何通过判断条件(abcd0,abcd0&(ab cd)10&ab%2 1&cd%2 1&a4 !0&a1 !0)。【参考答案】void jsVal() int i,j; /*定义循环控制变量*/ int a1,a2,a3,a4; /*定义变量保存 4位数的每位数字 */ int temp; /*定义数据交换时的暂存变量 */ int ab,cd; /*存储重新组合成的十位数 */ for(i=0;i=0 & (ab-cd)=0且ab-cd=10且两个数均是奇数同时两个新十位数的十位
22、上的数字均不为零*/ bcnt=ai; /*则把满足条件的数存入数组 b中*/ cnt+; /*统计满足条件的数的个数 */ for(i=0;icnt-1;i+) /*将数组 b中的数按从大到小的顺序排列*/ for(j=i+1;jcnt;j+) if(bibj) temp=bi; bi=bj; bj=temp; 记忆口诀:一定义二筛选三排序。定义指定义相关变量,筛选是筛选出满足条件的数,排序则是按照要求对数组排序,详见模板三。做题时,需灵活应用本模板,切勿死记硬背。【易错提示】分解 4位数时算术运算符的使用,if 判断语句中逻辑表达式,起泡法排序时的条件。第九题:【考点分析】 本题考查对 多
23、个整数的筛选以及求平均值。考查的知识点主要包括:多位整数的分解算法, 逻辑表达式 , 平均值的计算方法。【解题思路】此题属于 4位数的筛选题型 ,并且涉及统计名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 32 页 - - - - - - - - - 及平均值问题。解题时,需主要解决 3个问题 :问题 1如何取得 4位数的各个数位数字; 问题2如何通过判断条件(本题为千位数上的数加百位数上的数等于十位数上的数加个位数上的数)对目标进行筛选 ,再分别统计出满足和不满足条件的
24、数的和以及数目;问题3分别求出两类数的平均值。本题与上题解题思想相同,不同之处在于问题2 的判断条件改为 :千位数上的数加百位数上的数等于十位数上的数加个位数上的数 (a4+a3=a2+a1)。【参考答案】Void jsValue() int i,n=0; /*定义循环变量和计数器变量 */ int a1,a2,a3,a4; /*定义变量保存 4位数的每位数字 */ for(i=0;i300;i+) /*逐个取每一个 4位数*/ a4=ai/1000; /*求4位数的千位数字*/ a3=ai%1000/100; /*求4位数的百位数字*/ a2=ai%100/10; /*求4位数的十位数字*/
25、 a1=ai%10; /*求4位数的个位数字*/ if(a4+a3=a2+a1) /*如果千位数加百位数等于十位数加个位数*/ cnt+; /*统计满足条件的数的个数 */ pjz1+=ai; /*将满足条件的数求和*/ else n+; /*否则统计不满足条件的数的个数 */ pjz2+=ai; /*将不满足条件的数求和 */ pjz1/=cnt; /*求满足条件的数的平均值 */ pjz2/=n; /*求不满足条件的数的平均值 */ 记忆口诀:一定义二统计三求值。定义指定义相关变量,统计是统计满足条件的数的个数及求出和值,求值是分别求出满足和不满足条件的数的平均值,详见模板四。做题时 ,需
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年计算机等级考试三级数据库技术道上机题答案 2022 计算机等级考试 三级 数据库技术 上机 答案
限制150内