《上机应试指导.ppt》由会员分享,可在线阅读,更多相关《上机应试指导.ppt(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、上机应试指导上机应试指导11 考试环境及规则简介21.1考试时间考试时间vv1 1三级网络技术上机考试时间定为三级网络技术上机考试时间定为6060分钟。考试时分钟。考试时间由上机考试系统自动进行计时,提前间由上机考试系统自动进行计时,提前5 5分钟自动报分钟自动报警来提醒考生应及时存盘,考试时间用完,上机考试警来提醒考生应及时存盘,考试时间用完,上机考试系统将自动锁定计算机,考生将不能继续进行考试。系统将自动锁定计算机,考生将不能继续进行考试。vv2 2当考生登录成功后,系统将自动抽取考题并且在当考生登录成功后,系统将自动抽取考题并且在屏幕上显示上机须知并提示考生按屏幕上显示上机须知并提示考生
2、按“S”S”键开始考试,键开始考试,系统开始计时;如果是二次登录,则系统将累计计时,系统开始计时;如果是二次登录,则系统将累计计时,考生必须在规定的时间内完成考试内容。当考生超出考生必须在规定的时间内完成考试内容。当考生超出考试所用时间时机器将自动关闭;当考试只剩下指定考试所用时间时机器将自动关闭;当考试只剩下指定时间时,屏幕上会自动报告所剩考试时间,此时考生时间时,屏幕上会自动报告所剩考试时间,此时考生只需按任意键继续答题,不会影响考生成绩。只需按任意键继续答题,不会影响考生成绩。31.2考题类型及分值考题类型及分值vv类型:程序设计题vv满分:100分41.3上机操作手册上机操作手册vv1
3、登录 (1)(1)启动考试程序:单击启动考试程序:单击 “开始登录开始登录”按钮。按钮。51.3上机操作手册vv(2)单击9-1中的“开始登录”按钮或按回车键出现考号输入窗口 6vv(3)输入正确的准考证考号、考生姓名、身份证号,再单击“考号验证”按钮或按回车键对输入的考号以及姓名、身份证号进行验证。7二次登录密码输入 81.3上机操作手册vv2 2考试界面考试界面当考生登录成功后,上机考试系统将自动在屏幕中间生成装载试题内当考生登录成功后,上机考试系统将自动在屏幕中间生成装载试题内容查阅工具的考试窗口,并在屏幕顶部始终显示着考生的准考证号、容查阅工具的考试窗口,并在屏幕顶部始终显示着考生的准
4、考证号、姓名、考试剩余时间以及可以随时显示或隐藏试题内容查阅工具和姓名、考试剩余时间以及可以随时显示或隐藏试题内容查阅工具和退出考试系统进行交卷的按钮的窗口。退出考试系统进行交卷的按钮的窗口。vv3 3查看题目要求查看题目要求对于三级考试,在考试窗口中选择工具栏中的题目选择按钮对于三级考试,在考试窗口中选择工具栏中的题目选择按钮“程序设程序设计题计题”可以查看相应题型的题目要求。可以查看相应题型的题目要求。vv4 4寻求系统帮助寻求系统帮助在在“帮助帮助”菜单栏中选择菜单栏中选择“等级考试系统帮助等级考试系统帮助”可以启动考试帮助系可以启动考试帮助系统,并显示考试系统的使用说明,以及注意事项。
5、统,并显示考试系统的使用说明,以及注意事项。91.3上机操作手册上机操作手册vv5答题当考生登录成功后,上机考试系统将会自动产当考生登录成功后,上机考试系统将会自动产生一个考生文件夹,该文件夹将存放该考生所生一个考生文件夹,该文件夹将存放该考生所有上机考试的考试内容。考生不能随意删除该有上机考试的考试内容。考生不能随意删除该文件夹以及该文件夹下与考试题目要求有关的文件夹以及该文件夹下与考试题目要求有关的文件及子文件夹。假设考生登录的准考证号为文件及子文件夹。假设考生登录的准考证号为15209999992000011520999999200001,则上机考试系统生成的,则上机考试系统生成的考生文
6、件夹(由准考证号的前两位数字和最后考生文件夹(由准考证号的前两位数字和最后六位数字组成)将存放到六位数字组成)将存放到K K盘根目录下的用户盘根目录下的用户目录文件夹下,即考生文件夹为目录文件夹下,即考生文件夹为K K:用户目录用户目录文件夹文件夹1520000115200001。106交卷vv如果考生要提前结束考试进行交卷处理,则请在屏幕顶部的状态窗口中如果考生要提前结束考试进行交卷处理,则请在屏幕顶部的状态窗口中选择选择“交卷交卷”按钮,上机考试系统将显示是否要交卷处理的提示信息框,按钮,上机考试系统将显示是否要交卷处理的提示信息框,此时考生如果选择此时考生如果选择“确定确定”按钮,则退出
7、上机考试系统进行交卷处理,按钮,则退出上机考试系统进行交卷处理,由系统管理员进行评分和回收。如果考生还没有做完试题,则选择由系统管理员进行评分和回收。如果考生还没有做完试题,则选择“取取消消”按钮继续进行考试。按钮继续进行考试。vv交卷处理时,系统首先锁住屏幕,并显示交卷处理时,系统首先锁住屏幕,并显示“系统正在进行交卷处理,请系统正在进行交卷处理,请稍候稍候!”!”。当系统完成了交卷,在屏幕上显示。当系统完成了交卷,在屏幕上显示“交卷正常,请监考老师输交卷正常,请监考老师输入结束密码:入结束密码:”或或“交卷异常,请监考老师输入结束密码:交卷异常,请监考老师输入结束密码:”,这时只,这时只要
8、输入结束密码便可结束考试。这个过程不删除考生文件夹中的任何数要输入结束密码便可结束考试。这个过程不删除考生文件夹中的任何数据。如果出现据。如果出现“交卷异常交卷异常”的提示,说明这个考生有可能得零分或者考的提示,说明这个考生有可能得零分或者考生文件夹有问题,要检查这个考生的实际考试情况是否正常。生文件夹有问题,要检查这个考生的实际考试情况是否正常。如果在交如果在交卷过程中死机,可以重新启动计算机,再进行二次登录后进行卷过程中死机,可以重新启动计算机,再进行二次登录后进行“交卷交卷”处理处理。116交卷vv考试过程中,系统会为考生计算剩余考试时间。在剩余考试过程中,系统会为考生计算剩余考试时间。
9、在剩余5 5分钟时,系统会分钟时,系统会显示一个提示信息。显示一个提示信息。vv考试时间用完后,系统会锁住计算机并提示输入考试时间用完后,系统会锁住计算机并提示输入“延时延时”密码。这时需密码。这时需要键入延时密码才能解锁计算机并恢复考试界面,考试系统会自动再运要键入延时密码才能解锁计算机并恢复考试界面,考试系统会自动再运行五分钟,这时可以交卷。如果没有进行交卷处理,考试系统运行到五行五分钟,这时可以交卷。如果没有进行交卷处理,考试系统运行到五分钟后,系统又会锁住计算机并提示输入分钟后,系统又会锁住计算机并提示输入“延时延时”密码。只要不进行密码。只要不进行“交卷交卷”处理,可以处理,可以“延
10、时延时”几次。几次。vv考生完成答题过程,退出考试系统后,监考人员必须进行评分和考生成考生完成答题过程,退出考试系统后,监考人员必须进行评分和考生成绩的回收。绩的回收。12132.典型考题分析 14【例例1】vv已知在文件已知在文件IN.DATIN.DAT中存有中存有100100个产品销售记录,每个产品销个产品销售记录,每个产品销售记录由产品代码售记录由产品代码dm(dm(字符型字符型4 4位位)、产品名称、产品名称mc(mc(字符型字符型1010位位)、单价、单价djdj(整型整型)、数量、数量sl sl(整型整型)、金额、金额jeje(长整型长整型)几部分组几部分组成。其中:金额单价成。其
11、中:金额单价 数量。函数数量。函数ReadDatReadDat()()的功能是读取的功能是读取这这100100个销售记录并存入结构数组个销售记录并存入结构数组sellsell中。请编制函数中。请编制函数SortDatSortDat()(),其功能要求:按产品名称从小到大进行排列,若产品名,其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组结构数组sellsell中,最后调用函数中,最后调用函数WriteDatWriteDat()()把结果输出到文件把结果输出到文件OUT.DATOUT.
12、DAT中。中。vv注意:部分源程序已给出。请勿改动主函数注意:部分源程序已给出。请勿改动主函数main()main()、读函数、读函数ReadDatReadDat()()和写函数和写函数WriteDatWriteDat()()的内容。的内容。15【试题程序】#include#include#include#include#define MAX 100typedef struct char dm5;/*产品代码*/char mc11;/*产品名称*/int dj;/*单价*/int sl;/*数量*/long je;/*金额*/PRO;PRO sell MAX;void ReadDat();vo
13、id WriteDat();void SortDat()void main()memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat()FILE*fp;char str80,ch11;int i;fp fopen(IN.DAT,r);for(i 0;i 100;i)fgets(str,80,fp);memcpy(selli.dm,str,4);memcpy(selli.mc,str4,10);memcpy(ch,str14,4);ch4 0;selli.dj atoi(ch);memcpy(ch,str18,
14、5);ch5 0;selli.sl atoi(ch);selli.je (long)selli.dj*selli.sl;fclose(fp);void WriteDat()FILE*fp;int i;fp fopen(OUT.DAT,w);for(i 0;i 100;i)fprintf(fp,%s%s%4d%5d%10ldn,selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fclose(fp);16vv【考点分析考点分析】本题考查结构体数组的排序。考查的知识点主本题考查结构体数组的排序。考查的知识点主要包括:结构体成员运算,字符串比较符,数组排序。要
15、包括:结构体成员运算,字符串比较符,数组排序。vv【解题思路解题思路】此题属于销售记录排序类题型。此类题型主要此题属于销售记录排序类题型。此类题型主要考查对结构体数组的排序。解题时,应注意考查对结构体数组的排序。解题时,应注意3 3个关键点:关个关键点:关键点键点1 1如何按产品名称从小到大排序;关键点如何按产品名称从小到大排序;关键点2 2如果产品名称如果产品名称相同;关键点相同;关键点3 3如何按金额从小到大排列。如何按金额从小到大排列。vv数组排序可以用起泡法实现,起泡法的思路是:将较小的值数组排序可以用起泡法实现,起泡法的思路是:将较小的值像空气泡一样逐渐像空气泡一样逐渐 上浮上浮 到
16、数组的顶部,而较大的数值逐渐到数组的顶部,而较大的数值逐渐 下沉下沉 到数组的底部。具体为第到数组的底部。具体为第1 1趟用第趟用第1 1个记录和第个记录和第2 2个记个记录进行比较,如果不符合要求,就进行交换,第录进行比较,如果不符合要求,就进行交换,第2 2个记录和个记录和第第3 3个记录比较,直到倒数第个记录比较,直到倒数第2 2个记录和最后个记录和最后1 1个记录比较完个记录比较完成;第成;第2 2趟用第趟用第2 2个记录和第个记录和第3 3个记录比较,然后第个记录比较,然后第3 3个和第个和第4 4个比较,依此类推。个比较,依此类推。vv本题在双循环中进行每次记录比较时,首先用字符串
17、比较函本题在双循环中进行每次记录比较时,首先用字符串比较函数数strcmpstrcmp比较两个产品的名称,如果返回的值大于比较两个产品的名称,如果返回的值大于0 0,则这,则这两个产品进行数据交换;如果返回值等于两个产品进行数据交换;如果返回值等于0 0,再比较两个产,再比较两个产品的金额,如果前一个产品的金额大于后一个产品的金额,品的金额,如果前一个产品的金额大于后一个产品的金额,则这两个产品进行数据交换。则这两个产品进行数据交换。17【参考答案】void SortDat()int i,j;/*定义循环控制变量*/PRO temp;/*定义数据交换时的暂存变量(这里是结构体变量)*/for(
18、i0;i99;i)/*利用起泡法进行排序*/for(ji1;j0)/*产品名称从小到大排列*/tempselli;sellisellj;selljtemp;else if(strcmp(selli.mc,sellj.mc)0)/*若产品名称相同*/if(selli.jesellj.je)/*则按金额从小到大进行排列*/tempselli;sellisellj;selljtemp;18模板一销售记录排序19【模板速记模板速记】记忆口诀:一定义二循环三比较。定义指定义变量,循环指循记忆口诀:一定义二循环三比较。定义指定义变量,循环指循环语句,比较是比较记录成员大小及交换,详见模板一。做题环语句,比
19、较是比较记录成员大小及交换,详见模板一。做题时,需灵活应用模板,切勿死记硬背。时,需灵活应用模板,切勿死记硬背。【易错提示易错提示】结构型数据对成员的访问用结构型数据对成员的访问用.成员运算符;两成员运算符;两个字符串的比较用字符串比较函数个字符串的比较用字符串比较函数strcmp。【举一反三举一反三】在实际考试中,可能会稍微变化一下来考查,在实际考试中,可能会稍微变化一下来考查,如题目要求变为:按金额从大到小进行排列,若金额相同,则如题目要求变为:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列。对照模板可知,只需在解题时按产品代码从大到小进行排列。对照模板可知,只需在解题时
20、的的条件条件1、假设假设及及条件条件2做相应变化即可。所以,对于做相应变化即可。所以,对于本类题型,考生只需正确理解题目意思及相关算法,灵活应用本类题型,考生只需正确理解题目意思及相关算法,灵活应用本题所给模板。本题所给模板。与本题类型相同的题目有:上机习题第五组。这些题目都与本题类型相同的题目有:上机习题第五组。这些题目都可以使用模板一来解题。可以使用模板一来解题。20【例例2】已知数据文件已知数据文件IN.DAT中存有中存有300个个4位数,并已调用位数,并已调用读函数读函数readDat()把这些数存入数组把这些数存入数组a中。请编制函数中。请编制函数jsValue(),其功能是:求出千
21、位数上的数加个位数上的数等于百,其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数位数上的数加十位数上的数的个数cnt,再把所有满足此,再把所有满足此条件的条件的4位数依次存入数组位数依次存入数组b中,然后对数组中,然后对数组b的的4位数按位数按从小到大的顺序进行排序,最后调用写函数从小到大的顺序进行排序,最后调用写函数writeDat()把把数组数组b中的数输出到中的数输出到OUT.DAT文件中。文件中。例如:例如:6712,6271,则该数满足条件,存入数组,则该数满足条件,存入数组b中,且个数中,且个数cntcnt1。8129,8912,则该数不满足条件,忽略。
22、,则该数不满足条件,忽略。注意:部分源程序已给出。程序中已定义数组:注意:部分源程序已给出。程序中已定义数组:a300,b300,已定义变量:,已定义变量:cnt。请勿改动主函数。请勿改动主函数main()、读、读函数函数readDat()和写函数和写函数writeDat()的内容。的内容。21 【试题程序】#include int a300,b300,cnt0;void readDat();void writeDat();void jsValue()void main()int i;readDat();jsValue();writeDat();printf(cnt%dn,cnt);for(i
23、0;icnt;i)printf(b%d%dn,i,bi);void readDat()FILE*fp;int i;fp fopen(IN.DAT,r);for(i0;i300;i)fscanf(fp,%d,&ai);fclose(fp);void writeDat()FILE*fp;int i;fp fopen(OUT.DAT,w);fprintf(fp,%dn,cnt);for(i0;icnt;i)fprintf(fp,%d,n,bi);fclose(fp);22【考点分析考点分析】本题考查对多个整数的筛选以及排序。考查的知本题考查对多个整数的筛选以及排序。考查的知识点主要包括:多位整数的分
24、解算法,逻辑表达式,数组排序识点主要包括:多位整数的分解算法,逻辑表达式,数组排序算法。算法。【解题思路解题思路】此题属于此题属于4位数的筛选类题,并且需求出各位数位数的筛选类题,并且需求出各位数数字,再筛选排序。解此类题目需主要解决数字,再筛选排序。解此类题目需主要解决3个问题:问题个问题:问题1如如何取得何取得4位数的各个数位数字;问题位数的各个数位数字;问题2如何通过条件如何通过条件(本题为千位本题为千位数字加个位数字等于百位数字加十位数字数字加个位数字等于百位数字加十位数字)筛选出满足条件的数;筛选出满足条件的数;问题问题3如何对数组中的数进行排序。如何对数组中的数进行排序。解此类题的
25、一般思路为:先求出每个数的各位数字,再根据各解此类题的一般思路为:先求出每个数的各位数字,再根据各位数数字筛选出满足条件的数存入新的数组中,最后对新数组位数数字筛选出满足条件的数存入新的数组中,最后对新数组进行排序。对于问题进行排序。对于问题1通过算术运算取余和整除可以分解得到通过算术运算取余和整除可以分解得到4位数的各个数位上的数字;问题位数的各个数位上的数字;问题2通过通过if条件判断语句和逻辑表条件判断语句和逻辑表达式可以实现。问题达式可以实现。问题3排序可以通过循环嵌套的起泡法来完成。排序可以通过循环嵌套的起泡法来完成。在求各位数数字时,先将每个数进行取整运算求出千位数,将在求各位数数
26、字时,先将每个数进行取整运算求出千位数,将该数取余再除该数取余再除100取整得出百位数,将该数取余再除取整得出百位数,将该数取余再除10取整得取整得出十位数,最后将该数取余得出个位数。出十位数,最后将该数取余得出个位数。23【参考答案】voidjsValue()int i,j;int a1,a2,a3,a4;int temp;for(i0;i300;i)a4ai/1000;/*求四位数的千位数字*/a3ai%1000/100;/*求四位数的百位数字*/a2ai%100/10;/*求四位数的十位数字*/a1ai%10;/*求四位数的个位数字*/if(a4a1a3a2)/*如果千位数字加个位数字等
27、于百位数字加十位数字*/bcntai;/*将满足条件的数存入数组b中*/cnt;/*统计满足条件的数的个数cnt*/for(i0;icnt1;i)/*用起泡法对数组b的4位数按从小到大的顺序排序*/for(ji1;jbj)tempbi;bibj;bjtemp;24 模板二4位数筛选(1)-根据各位数数字排序25【模板速记模板速记】记忆口诀:一定义二筛选三排序。定义指定义相关变量,记忆口诀:一定义二筛选三排序。定义指定义相关变量,筛选是筛选出满足条件的数,排序则是按照要求对数组排筛选是筛选出满足条件的数,排序则是按照要求对数组排序。详见模板二。做题时,需灵活应用本模板,切勿死记序。详见模板二。做
28、题时,需灵活应用本模板,切勿死记硬背。硬背。【易错提示易错提示】分解分解4位数时算术运算符的使用,位数时算术运算符的使用,4位数条位数条件判断时件判断时if语句中的条件表达式,起泡法排序时的条件。语句中的条件表达式,起泡法排序时的条件。【举一反三举一反三】在实际考试中,可能会稍微变化一下来考在实际考试中,可能会稍微变化一下来考查,如题目要求变为:千位数字加百位数字等于十位数字查,如题目要求变为:千位数字加百位数字等于十位数字加个位数字,或者最后排序时是按照从大到小进行排列。加个位数字,或者最后排序时是按照从大到小进行排列。对照模板可知,只需在解题时的对照模板可知,只需在解题时的条件条件1或或条
29、件条件2做相应做相应变化即可。所以,对于本类题型,考生只需正确理解题目变化即可。所以,对于本类题型,考生只需正确理解题目意思及相关算法,灵活应用本题所给模板。意思及相关算法,灵活应用本题所给模板。与本题类型相同的题目有:上机习题第七组,这些题目与本题类型相同的题目有:上机习题第七组,这些题目都可以根据模板二来解题。都可以根据模板二来解题。26【例例3】vv已知数据文件已知数据文件IN.DATIN.DAT中存有中存有200200个个4 4位数,并已调用读函数位数,并已调用读函数readDatreadDat()()把这些数存入数组把这些数存入数组a a中,请编制一个函数中,请编制一个函数jsVal
30、jsVal()(),其功能是:把千位数字和十位数字重新组成一个新的其功能是:把千位数字和十位数字重新组成一个新的2 2位数位数abab(新新2 2位数的十位数字是原位数的十位数字是原4 4位数的千位数字,新位数的千位数字,新2 2位数的个位数的个位数字是原位数字是原4 4位数的十位数字位数的十位数字),以及把个位数字和百位数字,以及把个位数字和百位数字组成另一个新的十位数组成另一个新的十位数cdcd(新新2 2位数的十位数字是原位数的十位数字是原4 4位数的位数的个位数字,新个位数字,新2 2位数的个位数字是原位数的个位数字是原4 4位数的百位数字位数的百位数字),如,如果新组成两个果新组成两
31、个2 2位数位数ababcdcd 0 0且且ababcdcd 1010且两个数均且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条是奇数,同时两个新数的十位数字均不为零,则将满足此条件的件的4 4位数按从大到小的顺序存入数组位数按从大到小的顺序存入数组b b中,并要计算满足上中,并要计算满足上述条件的述条件的4 4位数的个数位数的个数cntcnt,最后调用写函数,最后调用写函数writeDatwriteDat()()把结果把结果cntcnt及数组及数组b b中符合条件的中符合条件的4 4位数输出到位数输出到OUT.DATOUT.DAT文件中。文件中。vv注意:部分源程序已给出。程序
32、中已定义数组:注意:部分源程序已给出。程序中已定义数组:a200a200,b200b200,已定义变量:,已定义变量:cntcnt。请勿改动主函数。请勿改动主函数main()main()、读函数、读函数readDatreadDat()()和写函数和写函数writeDatwriteDat()()的内容。的内容。27 【试题程序】#include#define MAX 200int aMAX,bMAX,cnt 0;void writeDat();void jsVal()void readDat()int i;FILE*fp;fp fopen(IN.DAT,r);for(i 0;i MAX;i)fs
33、canf(fp,%d,&ai);fclose(fp);void main()int i;readDat();jsVal();printf(满足条件的数%dn,cnt);for(i 0;i cnt;i)printf(%d,bi);printf(n);writeDat();void writeDat()FILE*fp;int i;fp fopen(OUT.DAT,w);fprintf(fp,%dn,cnt);for(i 0;i 0 0,ababcdcd)0&(ab0&(abcdcd)10&ab%210&ab%21&cd%21&cd%21&a41&a4!0&a10&a1!0)0)。29【参考答案】v
34、oid jsVal()int i,j;/*定义循环控制变量*/int a1,a2,a3,a4;/*定义变量保存4位数的每位数字*/int temp;/*定义数据交换时的暂存变量*/int ab,cd;/*存储重新组合成的2位数*/for(i0;i=0&(ab-cd)0且abcd10且两个数均是奇数,同时两个新2位数的十位上的数字均不为零*/bcntai;/*则把满足条件的数存入数组b中*/cnt;/*统计满足条件的数的个数*/for(i0;icnt1;i)/*将数组b中的数按从大到小的顺序排列*/for(ji1;jcnt;j)if(bi030,则该数满足条件,计算平均值,则该数满足条件,计算平
35、均值pjz1pjz1,且个数,且个数cntcntcntcnt1 1。vv 9812,9 9812,98 81 12020,则该数不满足条件,计算平均值,则该数不满足条件,计算平均值pjz2pjz2。vv注意:部分源程序已给出。程序中已定义数组:注意:部分源程序已给出。程序中已定义数组:a300a300,已定义,已定义变量:变量:cntcnt。请勿改动主函数。请勿改动主函数main()main()、读函数、读函数readDat()readDat()和写函数和写函数writeDatwriteDat()()的内容。的内容。33 【试题程序】#include int a300,cnt0;double
36、pjz10.0,pjz20.0;void readDat();void writeDat();void jsValue()void main()readDat();jsValue();writeDat();printf(cnt%dn满足条件的平均值pjz1%7.2lfn不满足条件的平均值pjz2%7.2lfn,cnt,pjz1,pjz2);void readDat()FILE*fp;int i;fpfopen(in.dat,r);for(i0;i300;i)fscanf(fp,%d,&ai);fclose(fp);void writeDat()FILE*fp;fpfopen(out.dat,w
37、);fprintf(fp,%dn%7.2lfn%7.2lfn,cnt,pjz1,pjz2);fclose(fp);34vv【考点分析考点分析】本题考查对多个整数的筛选以及求平均值。考本题考查对多个整数的筛选以及求平均值。考查的知识点主要包括:多位整数的分解算法,逻辑表达式,查的知识点主要包括:多位整数的分解算法,逻辑表达式,求平均值算法。求平均值算法。vv【解题思路解题思路】此题属于此题属于4 4位数的筛选题型,并且涉及统计及位数的筛选题型,并且涉及统计及平均值问题。解题时,需主要解决平均值问题。解题时,需主要解决3 3个问题:问题个问题:问题1 1如何取得如何取得4 4位数的各个数位的数字;
38、问题位数的各个数位的数字;问题2 2如何通过判断条件如何通过判断条件(本题为本题为千位数减百位数减十位数减个位数的值大于千位数减百位数减十位数减个位数的值大于0)0)对目标进行筛对目标进行筛选,再分别统计出满足和不满足条件的数的和以及数目;问选,再分别统计出满足和不满足条件的数的和以及数目;问题题3 3如何求出两类数的平均值。如何求出两类数的平均值。vv解此类题的一般思路为:先求出各位数字的值,根据各位数解此类题的一般思路为:先求出各位数字的值,根据各位数字的属性判断并统计满足和不满足条件的数的个数及和值,字的属性判断并统计满足和不满足条件的数的个数及和值,最后用和除以个数得出相应的平均值。与
39、前面类型的题不同最后用和除以个数得出相应的平均值。与前面类型的题不同的是,在问题的是,在问题2 2筛选时,不需要将符合要求的数存入新的数筛选时,不需要将符合要求的数存入新的数组,只需用条件判断语句分别统计符合条件的数的数目组,只需用条件判断语句分别统计符合条件的数的数目(cntcnt)及不符合条件的个数及不符合条件的个数(n)(n),以及对应的和值,以及对应的和值(pjz1(pjz1、pjz2)pjz2)。问题。问题3 3用和值除以对应个数即可用和值除以对应个数即可(pjz1/cnt(pjz1/cnt,pjz2/n)pjz2/n)。35【参考答案】void jsValue()int i,n0;
40、/*定义循环变量和计数器变量*/int a1,a2,a3,a4;/*定义变量保存4位数的每位数字*/for(i0;i0)/*如果千位数字减百位数字减十位数字减个位数字大于零*/cnt;/*统计满足条件的数的个数*/pjz1ai;/*对满足条件的数求和*/else n;/*统计不满足条件的数的个数*/pjz2ai;/*对不满足条件的数求和*/pjz1/cnt;/*求满足条件的数的平均值*/pjz2/n;/*求不满足条件的数的平均值*/36vv【模板速记模板速记】vv记忆口诀:一定记忆口诀:一定义二统计三求值。义二统计三求值。定义指定义相关定义指定义相关变量,统计是统变量,统计是统计满足条件的数计
41、满足条件的数的个数及求出和的个数及求出和值,求值是分别值,求值是分别求出满足和不满求出满足和不满足条件的数的平足条件的数的平均值,详见模板均值,详见模板四。做题时,需四。做题时,需灵活应用本模板,灵活应用本模板,切勿死记硬背。切勿死记硬背。模板四4位数筛选(3)-统计及求平均值37vv【易错提示】分解4位数时算术运算符的使用,if判断语句中逻辑表达式。vv【举一反三】在实际考试中,可能会稍微变化一下来考查,如题目要求变为:条件判断时要求的是个位数减千位数减百位数减十位数的结果大于0。对照模板可知,只需在解题时对 条件1部分做相应变化即可。所以,对于本类题型,考生只需正确理解题目意思及相关算法,
42、灵活应用本题所给模板。vv 与本题类型相同的题目有:上机习题第七、十一组。这些题目都可以根据模板四来解题。38【例例5】vv已知IN.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数 jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat()把结果cnt及数组b中符合条件的4位数输出到 OUT.DAT文件中。vv注意:部分源程序已给出。程序中已定义数组:a200,b200,已定义变量:c
43、nt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。39【试题程序】#include#define MAX 200int aMAX,bMAX,cnt 0;void writeDat();void jsVal()void readDat()int i;FILE*fp;fp fopen(IN.DAT,r);for(i 0;i MAX;i)fscanf(fp,%d,&ai);fclose(fp);void main()int i;readDat();jsVal();printf(满足条件的数%dn,cnt);for(i0;i cnt;i)printf(%d,
44、bi);printf(n);writeDat();void writeDat()FILE*fp;int i;fp fopen(OUT.DAT,w);fprintf(fp,%dn,cnt);for(i 0;i cnt;i)fprintf(fp,%dn,bi);fclose(fp);40vv【考点分析考点分析】本题考查对整数的筛选以及数组排序。考查的本题考查对整数的筛选以及数组排序。考查的知识点主要包括:循环嵌套,数组排序。知识点主要包括:循环嵌套,数组排序。vv【解题思路解题思路】此题属于此题属于4 4位数的筛选题型,并且需要比较相位数的筛选题型,并且需要比较相邻的邻的5 5个数大小。解题时,需
45、主要解决个数大小。解题时,需主要解决2 2个问题:问题个问题:问题1 1如何如何根据判断条件根据判断条件(本题为该本题为该4 4位数连续大于该位数连续大于该4 4位数以后的位数以后的5 5个数个数且该数是奇数且该数是奇数)对目标进行筛选,统计出满足条件的个数;对目标进行筛选,统计出满足条件的个数;问题问题2 2如何将这些数进行排序。如何将这些数进行排序。vv此类题的一般解法为:依次判断每个数是否满足条件,满足此类题的一般解法为:依次判断每个数是否满足条件,满足则个数加则个数加1 1,并存入新的数组,否则跳过并判断下一个数字,并存入新的数组,否则跳过并判断下一个数字,判断完后对数组进行排序。问题
46、判断完后对数组进行排序。问题1 1可以用循环嵌套来实现,可以用循环嵌套来实现,要筛选的数必须同时满足两个条件要筛选的数必须同时满足两个条件(一个条件是该一个条件是该4 4位数连续位数连续大于该大于该4 4位数以后的位数以后的5 5个数,另一个条件为该数为奇数个数,另一个条件为该数为奇数),可,可以将第以将第2 2个条件作为首要满足条件,再依次判断是否满足第个条件作为首要满足条件,再依次判断是否满足第1 1个条件,满足则个数个条件,满足则个数cntcnt加加1 1,并将该数存入新的数组,否则,并将该数存入新的数组,否则跳过并判断下一个数字。跳过并判断下一个数字。41【参考答案】void jsVa
47、l()int i,j;/*定义循环控制变量*/int temp;/*定义数据交换时的暂存变量*/for(i0;iMAX5;i)/*逐个取每个4位数*/if(ai%2!0)/*如果当前数是奇数*/for(ji1;ji5;j)/*取该数后面的5个数进行比较*/if(aiaj)break;/*如果当前数不比后面5个数都大,则跳出循环*/if(ji6)/*如果当前数比后面的5个数都大*/bcntai;/*将满足条件的数存入数组b中*/cnt;/*并统计满足条件的数的总个数*/for(i0;icnt1;i)/*利用起泡法对数组b中的元素进行从小到大的排序*/for(ji1;jbj)tempbi;bibj
48、;bjtemp;42模板五4位数的筛选(4)-4位数之间的比较【模板速记模板速记】记忆口诀:一记忆口诀:一定义二筛选三定义二筛选三排序。定义指排序。定义指定义相关变量,定义相关变量,筛选指选出满筛选指选出满足条件的数并足条件的数并存入数组,排存入数组,排序指按照要求序指按照要求排序,详见模排序,详见模板五。做题时,板五。做题时,需灵活应用本需灵活应用本模板,切勿死模板,切勿死记硬背。记硬背。43vv【易错提示易错提示】循环嵌套的循环控制条件,循环嵌套的循环控制条件,if if判断语判断语句中表达式,数组排列的顺序。句中表达式,数组排列的顺序。vv【举一反三举一反三】在实际考试中,可能会稍微变化
49、一下在实际考试中,可能会稍微变化一下来考查,如题目要求变为:条件判断要求该数连续来考查,如题目要求变为:条件判断要求该数连续大于其前面的大于其前面的5 5个数且该数为偶数,或者最后要求个数且该数为偶数,或者最后要求按照从大到小的顺序进行排列。对照模板可知,只按照从大到小的顺序进行排列。对照模板可知,只需在解题时按照模板对需在解题时按照模板对 条件条件1 1 条件条件2 2 条件条件3 3 条条件件44和和 循环控制条件循环控制条件11循环控制条件循环控制条件22部分做相部分做相应变化即可。所以,对于本类题型,考生只需正确应变化即可。所以,对于本类题型,考生只需正确理解题目意思及相关算法,灵活应
50、用本题所给模板。理解题目意思及相关算法,灵活应用本题所给模板。vv 与本题类型相同的题目有:与本题类型相同的题目有:上机习题第八组。这些第八组。这些题目都可以参照模板五来解题。题目都可以参照模板五来解题。44【例例6】v在文件IN.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组bb中,如果出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数writeDat()把结果bb输出到文件OUT.