《全国计算机等级考试三级网络技术上机答案解析.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试三级网络技术上机答案解析.docx(122页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、全国计算机等级考试三级网络技术上机考试试题答案解析内容简介本书根据全国计算机等级考试上机专题、全真笔试、历年真题三合 一(2009年11月第一次印刷)配套光盘中上机答案解析编写,题目顺序 与原书顺序一致。本书内容仅供参考,版权归原书作者。第001套【考点分析】本题考查对4位整数的排序。考查的知识点主要包括: 粼锹完步的郴件算改,if利新语句仙运晴表达式,山及戒金事木运算。【解题思路】此题属于4位数排序问题。本题需主要解决3个问题:问 我.1如何取4位数的后3位进行比较;间观2如何按照题目要求的条件(按照每 个数的后3位的大小进行降序排列,如果后3位相等,则按照原始4位数的 大小进行升序排列)排
2、序;问世3如何将排完序的前10个数存到数组bb中去。本题的解题思路为:使用双循环对数组按条件进行排序,然后将排完 序的前10个数存到数组bb中。对于间题1可以通过算术运算的取余运算实 现(aai%1000):问致2通过包含if判断语句的起泡排序法就可以实现。【参考答案】 void jsSort() (int i,j;/*定义循环控制变量*/int temp;/*定义数据交换时的暂存变量*/for(i=0:i199;i+)/*用选择法对数组进行排序*/for(j=i+l;j200;j+) if(aai%1000aaj) /*则要按原4位数的值进行升序排序*/(temp=aai;aai=aaj;a
3、aj=temp;for(i=0;i10:i+)/*将排序后的前10个数存入数组b中*/bbi=aai;【易错提示】取4位数后三位的算法,if判断语句中逻辑表达式的比 较运算符。第002套【考点分析】本题主要考查的知识点包括:c德音循球错构,if判新 语句为逮楫表达蚊,山及今解多佐称救的靠木运算。【解题思路】分析题干,本题除给出条件SIX + SIX+SIX = NINE + NINE”之外,还可得出2个隐含的条件:加件1, SIX和NINE分别是3位和 4位的正整数;条件2,SIX的十位数字等于NINE的百位数字,NINE的千位 数字和十位数字相等。本题解题思路:通过嵌套的循环结构可以遍历到所
4、有的3位和4位数, 对于每一个3位数及4位数的组合进行题设条件(SIX+SIX + SIX = NINE + NINE)的判断,满足条件的对其分解得到各数位的数字,再进步判断 各位数字是否满足本题隐含的条件(条件1及条件2),如果满足则个数加1, 并将该3位数及4位数添加到和值中。【参考答案】void countValue()int i,j;int s2;int n2,n3,n4;for(i=100;i1000;i+)(fbr(j=1000;j10000;j+)(if(i*3=j*2)(s2=i%100/10;n4=j/1000;n3=j% 1000/100;n2=j%100/10;if(s2
5、=n3&n2=n4)cnt+;sum+=i-Fj;【易错提示】隐含条件未被分析出或分析错误,整数数位分解的算术 方法使用错误。第003套【考点分析】本题考查的知识点包括:c语言中文件接备超,if条件 列新错构,对,个卷激或不构值右方爰的喜汝博。【解题思路】此题属于数学类问题。分析题干要求,得出解本题主要 需解决3个问题:问罪1如何实现从已打开的文件中依次读取数据到数组的 操作,问题2如何分离并统计出奇数和偶数的个数及和值,并计算平均值; 问蔑3如何计算奇数的方差。本题的解题思路为:首先使用C语言的库函数fscanf()将文件中的数依 次读入数组xx中,然后通过循环判断得出需要的数据(奇数个数、
6、偶数个数、 奇数及偶数的和);最后根据题目中已给出的公式和之前保存的数据计算出 奇数的方差。【参考答案】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+)fscanf(fp, *%d, &xxi*10+j);fscanf(fp, n);if(feof(fp)break;/*文件读取结束,则退出*/fclose(fp);return 0;void Compute(void)int i
7、;int ttMAX;/*定义循环控制变量*/*定义数组保存奇数*/for(i=0; i1000; i+) if(xxi%2! =0)第004套【考点分析】本题考查对一定范围内整数的筛选。考查的知识点主要 包括:,依卷照的今解算依,完余年方耙判断方位,if判断语句打避晴表 达4。【解题思路】此题属于数学类问题。分析题干,本题需注意2个关键 点:关里支1判断该数是否是完全平方数;关校直2判断该数是否有两位数 数字相同。本题的解题思路为:通过循环控制,依次判断100至999数是否满足条 里直1(是否为完全平方数)。如果是,则将该数分解出各位数数字,并判断 是否有两位数数字相同,如果存在,则个数加1
8、,并将该数存入数组中。【参考答案】 int jsValue(int bb)int i, j;int cnt=0;int a3, a2, al;/*定义循环控制变量*/*定义计数器变量*/*定义变量存储三位数每位的数字for(i=100;i=999;i+) for(j=10;j=sqrt(i);j+) if(i=j*j)/*在该范围中找符合条件的数*/*如果该数是完全平方数*/a3=i/100;a2=i%100/10;al=i%10;if(a3=a2 | a3=al/*求该数的百位数字*/ /*求该数的十位数字*/ /*求该数的个位数字*/II a2=al) /*有两位数字相同*/bbcnt=i
9、;cnt+;/*则把该数存入数组bb中*/*定义循环控制变量*/*定义变量存储3位数每位的数字*/*在该范围内寻找符合条件的数*/*求百位数字*/*求十位数字*/*求个位数字*/*如果个位数字与十位数字之和被10/*进一步判断该数是否为素数*/*统计满足条件的数的个数*/return ent;/*返回满足该条件的整数的个数*/【易错提示】完全平方数的判断方法错误,分解整数各个数位的方法 错误,if判断语句中表达式。第005套【考点分析】本题考查对一定范围内整数的筛选。考查的知识点主要 包括:多依卷数的今斛寡位,素超的判断算位,if利厮语句打建辑表达西。【解题思路】此题属于数学类问题。分析题干要
10、求,归纳出本题的2 个关键点:关梃点1判断该数是否为素数;关梃点2判断是否满足条件:个 位数字和十位数字之和被10除所得余数等于百位数字。本题思路为:通过循环语句,依次求出所有3位数的各位数数字,并 判断是否满足*梃支2(个位数字和十位数字之和被10除所得余数等于百位 数字),如果满足则判断该数是否为素数,如果是则个数加1,并将该数加 到和值中。判断的方法为:依次取从2到该数1/2的数去除这个数,如果有 一个可被整除,则不是素数,如果循环后的数大于该数的一半就可以判定 该数是一个素数。【参考答案】void countValue() (int i,j;int half;int a3, a2, a
11、l;for (i=101;i1000;i+)(a3=i/100;a2=i%100/10;al=i%10;if(a3=(a2+al)%10)除所得余数恰是百位数字*/half=i/2;for(j=2;jhalf)/*如果是素数*/(cnt+;/*计算这些素数的个数ent*/sum+=i;/*计算这些素数值的和sum*/【易错提示】素数的判断算法使用错误,分解整数各个数位的方法错 误,if判断语句中逻辑表达式错误。第006套【考点分析】本题考查结构体数组的排序。考查的知识点主要包括: 辖构体鼠贡运算,名符串比较符,数俎郴本。【解题思路】此题属于销售记录排序类题型。此类题型主要考查对结 构体数组的排
12、序。解题时,应注意3个关键点:关糙直1如何按产品名称从 小到大排序;关横支2如果产品名称相同;关林支3如何按金额从小到大排 列。数组排序可以用起泡法实现,起泡法的思路是:将较小的值像空气泡 一样逐渐上浮”到数组的顶部,而较大的数值逐渐下沉”到数组的底部。 具体为第1趟用第1个记录和第2个记录进行比较,如果不符合要求,就进 行交换,第2个记录和第3个记录比较,直到倒数第2个记录和最后1个记录 比较完成;第2趟用第2个记录和第3个记录比较,然后第3个和第4个比较, 依此类推。本题在双循环中进行每次记录比较时,首先用字符串比较函数stremp 比较两个产品的名称,如果返回的值大于0,则这两个产品进行
13、数据交换; 如果返回值等于0,再比较两个产品的金额,如果前一个产品的金额大于 后一个产品的金额,则这两个产品进行数据交换。【参考答案】void SortDat()int i,j;PRO temp;/*定义循环控制变量*/*定义数据交换时的暂存变量(这里 是PRO类型的结构体变量)*/for(i=0;i99; i+)/*利用选择法进行排序*/for(j=i+l;j0) /*按产品名称从小到大进 行排列*/(temp=selli;sell i=sellj;sellj=temp;)else if (strcmp(selli.me, sellj. mc)=0)/*若产品名称相同*/if(selli.
14、jesellj. je)/*则按金额从小到大进行排列*/(temp=selli;selli=sellj;sellj=temp;模板一销售记录排序【模板速记】记忆口诀:一定义二循环三比较。定义指定义变量,循环指循环语句, 比较是比较记录成员大小及交换,详见模板一。做题时,需灵活应用模板, 切勿死记硬背。【易错提示】结构型数据对成员的访问用成员运算符;两个字符 串的比较用字符串比较函数strcmp。第007套【考点分析】本题考查对多个整数的筛选以及排序。考查的知识点主 要包括:多依於撤的今解算次,运楫表达其,救报挑涛算法。【解题思路】此题属于4位数的筛选类题,并且需求出各位数数字, 再筛选排序。解
15、此类题目需主要解决3个问题:问茎1如何取得4位数的各 个数位数字;问题2如何通过条件(本题为千位数字加个位数字等于百位数 字加十位数字)筛选出满足条件的数;问世3如何对数组中的数进行排序。解此类题的一般思路为:先求出每个数的各位数字,再根据各位数数 字筛选出满足条件的数存入新的数组中,最后对新数组进行排序。对于问 做1通过算术运算取余和整除可以分解得到4位数的各个数位上的数字;问 题2通过if条件判断语句和逻辑表达式可以实现。问题3排序可以通过循环 嵌套的起泡法来完成。在求各位数数字时,先将每个数进行取整运算求出千位数,将该数取 余再除100取整得出百位数,将该数取余再除10取整得出十位数,最
16、后将该数取余得出个位数。【参考答案】 voidjsValue() (int i,j;int al, a2, a3, a4;数字*/int temp;*/for(i=0;i300;i+)a4=ai/1000;a3=ai%1000/100;a2=ai%100/10;al=ai%10;if (a4+al=a3+a2) 十位数*/*定义循环控制变量*/*定义变量保存4位数的每位/*定义数据交换时的暂存变量/*逐个取每一个4位数*/*求4位数的千位数字*/*求4位数的百位数字*/*求4位数的十位数字*/*求4位数的个位数字*/*如果千位数加个位数等于百位数加bcnt=ai: cnt+;/*将满足条件的数
17、存入数组b中*/ /*统计满足条件的数的个数ent*/for(i=0; icnt-l; i+)/*用选择法对数组b的4位数按从小到大的顺序进行排序*/for(j=i+l;jbj)temp=bi;bi=bj;bj=temp;)【模板速记】记忆口诀:一定义二筛选三排序。定义指定义相关变量,筛选是筛选 出满足条件的数,排序则是按照耍求对数组排序。详见模板二。做题时, 需灵活应用本模板,切勿死记硬背。【易错提示】分解4位数时算术运算符的使用,4位数条件判断时if语 句中的条件表达式,起泡法排序时的条件。void %数名称0定义变员 for ( i=0;i+)取各位数数字 if 条件1)bcnt=ai;
18、 ent*;for(i=0;i*) fbr(j=i*1;j=0, abcd= 0&(abcd) = 10&ab%2 = = 1 &cd%2 = = 1&a4! = 0&a 1! = 0)。【参考答案】 voidjsVal()int i,j;int al, a2, a3, a4;字*/int temp;int ab,cd;for(i=0;i=0 & (ab-cd) =0且ab-cd=10且两个数均是奇数同时两个新十位数的十位上的数字均不为零*/bcnt=ai;*/cnt+;for(i=0;icnt-l;i+)序排列*/for(j=i+l;jcnt;j+) if(bibj) (temp=bi;bi
19、=bj;bj=temp;/*则把满足条件的数存入数组b中/*统计满足条件的数的个数*/*将数组b中的数按从大到小的顺【模板速记】记忆口诀:一定义二筛选三排序。定义指定义相关变量,筛选是筛选 出满足条件的数,排序则是按照要求对数组排序,详见模板三。做题时, 需灵活应用本模板,切勿死记硬背。void函数名称() (定义变星 for( i=O;i* (取各位数数字 ab=10wN1*N2; cd=WN3*N4 if 4条件1) (b(cnt=ai; ent*;for(i=0;icnt-1;i*) for(j=i*1;jcntj*) if(条件2)( 交换)模板三4位数筛选-组成2位数再筛选排序【易错
20、提示】分解4位数时算术运算符的使用,if判断语句中逻辑表 达式,起泡法排序时的条件。第009套【考点分析】本题考查对多个整数的筛选以及求平均值。考查的知识 点主要包括:多位整数的分解算法,逻辑表达式,平均值的计算方法.【解题思路】此题属于4位数的筛选题型,并且涉及统计及平均值问 题。解题时,需主要解决3个问题:问驳1如何取得4位数的各个数位数字;问 茎2如何通过判断条件(本题为千位数上的数加百位数上的数等于卜位数上 的数加个位数上的数)对H标进行筛选,再分别统计出满足和不满足条件的 数的和以及数目:问题3分别求出两类数的平均值。本题与上题解题思想相同,不同之处在于问题2的判断条件改为:千位 数
21、上的数加百位数上的数等于十位数上的数加个位数上的数 (a4+a3=a2+al)o【参考答案】int i,n=0;int al, a2, a3, a4;字*/for(i=0;i300;i+)a4=ai/1000;a3=ai%1000/100;a2=ai%100/10;al=ai%10;if(a4+a3=a2+a1)数加个位数*/(cnt+;pjzl+=ai;else(n+;数*/*定义循环变量和计数器变量*/*定义变量保存4位数的每位数/*逐个取每一个4位数*/*求4位数的千位数字*/*求4位数的百位数字*/*求4位数的十位数字*/*求4位数的个位数字*/*如果千位数加百位数等于十位/*统计满足
22、条件的数的个数*/*将满足条件的数求和*/*否则统计不满足条件的数的个/*将不满足条件的数求和*/pjz2+=ai;pjzl/=cnt;pjz2/=n;/*求满足条件的数的平均值*/*求不满足条件的数的平均值【模板速记】记忆口诀:一定义二统计三求值。定义指定义相关变量,统计是统计满 足条件的数的个数及求出和值,求值是分别求出满足和不满足条件的数的 平均值,详见模板四。做题时,需灵活应用本模板,切勿死记硬背。模板四4位数筛选(3)-统计及求平均值易错提示】分解4位数时算术运算符的使用;if判断语句中逻辑表达 式。第010套【考点分析】本题考查对整数的筛选以及数组排序。考查的知识点主 要包括:c语
23、言循环结构,逻辑表达式,数组排序。【解题思路】此题属于4位数的筛选题型。分析题干要求,本题要求实 现j s Va 1 ()函数的功能,归纳可以得出2个问题:问驳1如何通过判断条件(该4 位数连续小于该4位数以后的5个数且该数是偶数)筛选出满足条件的数,同时统计其个数:同茎2如何将这些数按照从小到大的顺序排列。通过问题分析,得出解此题的思路为:先根据题目中的条件筛选出满足 条件的数并存入新的数组中,再对新数组进行排序。时于问馥1通过if条件判 断语句和逻辑表达式可以实现;问敢2排序可以通过循环嵌套的起泡法实 现。【参考答案】void jsVal()(int i, j;/*定义循环控制变量*/in
24、t temp;/*定义数据交换是的暂存变量*/for(i=0;iMAX-5;i+)/* 逐个取每个 4 位数*/ if(aiai+lJ&aiai+2J&aiai+3J&aLiJai+4&aLiJai +5&ai%2=0)/*如果当前数是偶数且小于后面连续5个数*/*将满足条件的数存入数组b中*/*并统计满足条件的数的个数*/*利用选择法对b数组中的元素进行bcnt=ai;cnt+;for(i=0;icnt-l;i+)从小到大的排序*/for(j=i+l;jbj)Itemp=bi;bi=bj;bj=temp;void函数名称0(定义变量条件if(条付1)(件1I 翁门 2;j*)if(条 fl
25、2) break.if(条 fl 3)( b(cnt=a(i; ent*.)for(i=0;icnt-1 ;!)if 条件4)(文换模板五4位数的筛选(4)-4位数之间的比较【模板速记】记忆口诀:一定义二筛选三排序。定义指定义相关变量,筛选指选出 满足条件的数并存入数组,排序指按照要求排序,详见模板五。做题时, 需灵活应用本模板,切勿死记硬背。【易错提示】循环嵌套的循环控制条件,if判断语句中表达式,数组 排列的顺序。5讲。第011套【考点分析】本题考查对字符数组中的字符进行计算以及替换。考查 的知识点主要包括:生符*救俎的访间.庄符ASCH鸡的住运算4判断给构 及逝辑表达式。【解题思路】首先
26、通读题目,得知此题属于字符计算问题;其次分析题干要求,本题要求实现StrCharJLO函数的功能,分析后可以归纳出3个关键点: 关梃克1如何对字符数组的元素逐一访问:关植支2如何对字符的ASCII码做 左移的位运算;关桂支3如何根据条件(移位后的ASCII值小于等于32或大于100)对计算结果进行判断,并分别对满足与不满足条件的情况进行处理。接着分析每一步的解决方法,关键点1通过字符串处理函数strlen获取字 符串的长度,再通过获得的长度使用下标法对字符数组的元素逐一访问;关 键点2可以直接对字符的ASCII码进行位运算;关键点3通过if判断结构和逻 辑表达式即可实现功能。【参考答案】voi
27、d StrCharJL(void) int ij;/*定义循环控制变量*/i nt str;char ch;for(i=0; imaxline;i+)/*以行为单位获取字符*/(str=strlen(xxi) ;/*求得当前行的字符串长度*/for(j=0;jstr;j+)(ch=xxij4;i f(ch100)continue;/*如果左移4位后字符的ASCI I值小于等于32或大于100,则原字符保持不变*/e I sexxi j+=4;/*否则就把左移后的字符ASCI I值加上原字符的ASCI I*/易错提示】根据字符ASCII码的位计算;if判断语句中的逻辑表达第012套【考点分析】本
28、题考查对字符数组中的字符计算。考查的知识点主要 包括:生符串欲俎的访同,生符ASCH圈的算木运算,if判断#构“友遣精 表达式。【解题思路】首先通读题目,得知此题属于字符计算问题;其次分析 题干要求,本题要求实现ChA(void)函数的功能,分析后可以归纳出3个关 健点:关植直1如何对字符数组的元素逐一访问:关桂立2按照要求取每个 位置的字符和其下一个字符相加,并将结果作为该位置上的新字符,需要 注意的是,末尾位置的新字符是该位原字符和第1个原字符相加的结果; 关梃支3最后要将所得的结果逆序保存。接着分析每一步的解决方法,对于关摄支1通过字符串处理函数strlen 获取字符串的长度,再通过获得
29、的长度用下标法对字符数组的字符元素逐 一访问;关桂支2在遍历访问字符时,可以直接取下一个位置的字符进行 运算,在进行计算之前需要首先保存第1个位置的字符,以作为计算最后 位置新字符的条件;关横支3可以通过for循环对数组从首尾同时遍历的算 法实现。【参考答案】void ChA(void)int i,j,k;int str;char ch,temp;for(i=0;imaxline;i+)/*定义循环控制变量*/*存储字符串的长度*/*定义字符暂存变量*/*以行为单位获取字符*/str=strlen(xxi); ch=xxi0;/*求得当前行的字符串长度*/*将第一个字符暂存入ch*/for(j
30、=0;jstr-l;j+)/*将该字符的ASCH值赋值为下一个字符的ASCH值加1,得 到新的字符*/xxij+=xxij+l;xxistr-1+=ch;/*将最后一个字符的ASCII值与第一个字符的ASCII值相加, 得到最后一个新的字符*/for (j=0, k=str-l; jstr/2; j+, k)/*将字符串逆转后仍按行重新存入字符串数组xx中*/temp=xxij;xxij=xxik;xxik=temp;【易错提示】最后一个字符的计算,逆序存储算法的选择。第013套【考点分析】本题考查对字符串的查找和统计。考查的知识点包括: 相针对生符串的访词方/,c将言循球我小给相。【解题思路
31、】首先通读题目,得知此题属于字符串处理问题:其次分 析题干要求,本题要求实现findStr(char*str, char*sunstr)函数,该函数需 要实现在一个字符串中查找另一个字符串,并统计出现次数的功能,分析 后可以归纳出实现功能的3个关键点;关我.支1如何实现对字符串中字符的 遍历;关摄直2如何实现对子字符串的查找功能;关健宜3如何统计子串其 出现的次数。接着分析每一步的解决方法。对于关他点1使用循环和指针的方式可 以实现对字符串的访问;关桂支2通过嵌套的循环可以实现查找功能,具 体方法是,外层循环控制对主串的遍历,内层是对子串的遍历,当主串中 当前字符和子串第1个字符相同时,继续判
32、断其后的字符是否和子串的下 一个字符相同,依次类推,则每次内层循环遍历过子串就表示找到一次; 关梃支3每找到一次子串的同时,累加一个记数器,作为出现次数的统计 结果。【参考答案】int findStr(char *str, char *substr)(int n=0;/*定义计数器变量,统计出现次数*/char *p,*r;/*定义指针变量来分别指向两个字符串*/while(*str)/*如果字符串没有结束,则一直循环下去*/(p=str;/*指针p指向字符串首地址*/r=substr;/*指针r指向子字符串首地址*/while(*r)/*若子字符串没有结束,则循环继续*/if(*r=*p)/
33、*如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符*/r+;P+;elsebreak;if(*r= 0)/*否则退出循环*/*如果子字符串在字符串中出现了一次*/n+;/*则n加1,进行统计*/str+;/*指向字符串中的下一个字符*/)return n;/*返回统计结果n*/【易错提示】遍历字符串时指针的使用;查找子串的算法使用。第014套【考点分析】本题考查对字符数组中字符排序。考查的知识点包括: 生符串欲俎的访间,泵俎挑涛算汝。【解题思路】首先通读题目,得知此题属于字符排序问题:其次分析 题干要求,本题要求实现SortCharD()函数,该函数需要实现将字符数组中 的元
34、素排序的算法。分析后可以归纳出实现该功能的关键点是:如何按照 字符从大到小的顺序对数组中的字符进行排序。这可以通过循环嵌套的起 泡法来实现。【参考答案】void SortCharD()int i,j,k;int str;/*定义循环控制变量*/*存储字符串的长度*/char temp;/*定义数据交换时的暂存变量for (i=0;imaxline;i+)|str=strlen(xxi);for(j=0;jstr-l:j+)排序*/for(k=j+l;kstr;k+) if(xxijxxik) temp=xxij;xxij=xxi k;xxik=temp;/*以行为单位获取字符*/*求得当前行的
35、字符串长度*/*对字符按从大到小的顺序进行易错提示】排序时if结构中的逻辑表达式。第015套【考点分析】本题考查选票的统计。考查的知识点主要包括:c将言 循抹并构,if晶件判新转构为迂晴表达式,二枚粼俎螺作。【解题思路】首先通读题目,得知此题属于选票的统计题型;其次分 析题干耍求,本题耍求实现CountRs(void)函数的功能,该函数需要统计出 100条选票数据,并将统计结果保存入数组yy中:接着归纳出本题有2个关 键点:关校直1如何统计每张选票的选择情况:关林支2根据题目给出的条 件”一张选票选中人数小于等于5个人时则被认为无效判断选票是否有 效。首先,对数组yy元素初始化为0;接着通过一
36、个循环嵌套结构依次判 断每张选票数据的十个选举标志,同时每张选票的投票数量,对于不满足 条件的选票数据直接跳过,并统计有效选票的投票情况到数组yy中。【参考答案】void CountRs(void) (int i ,j;/*定义循环控制变量*/int ent:/*用来存储每张选票中选中人数,以判断选票是否有效*/for(i=0;i10;i+) yyi=O;for(i=0;i100;i+)cnt-O;for(j=0;j5)(for(j=0;j10;j+) if (xxi j=,I)yyj+;/*初始化数组yy*/*依次取每张选票进行统计*/*初始化计数器变量*/*统计每张选票的选中人数ent*/
37、*当ent值大于5时为有效选票*/*统计有效选票*/模板七选票问题【模板速记】记忆口诀:一定义二初始化三统计。定义指定义相关变量,初始化指 初始化数组,统计是统计每个人选票的数量,详见模板七。做题时,需灵 活应用本模板,切勿死记硬背。【易错提示】数组yy未初始化,判断选票是否有效的逻辑表达式错误第016套【考点分析】本题考查的知识点主要包括:错构体以贡的访间,无索的郴 济.if判断辂构右运晴表达式。【解题思路】此题属于结构体的筛选排序问题。分析题干要求,可以归 纳出3个关键点:关梃支1通过条件”每组数据中第2个数大于第1个数和第3 个数之和”对每组数据进行判断;关梃支2保存满足条件的数到新数组
38、中并 统计其数量;关里直3对新数组中的数再按照第2个数和第3个数之和的大小 进行降序排列;关键点4函数的返回值为之前统计的满足的数据的组数。接着分析具体的解决方法,首先通过if判断结构和逻辑表达式实现对所 有结构的筛选,保存并统计个数,然后通过起泡法完成排序,最后函数返回组 数。【参考答案】int jsSort() int i, j;/*定义循环控制变量*/int cnt=0;/*定义计数器变量*/Data temp;/*定义数据交换时的暂存变量,这里是一个Data类型的结构体变量*/for(i=0;iaai. xl+aai, x3)/*如果第二个数大于第一 个数加第三个数之和*/bbcnt=
39、aai;*/cnt+;for(i=0;icnt-l;i+)/*则把该组数据存入结构数组bb中/*同时统计满足条件的数据的个数/*对结构数组bb中的数据按照每组数据的第二个数加第三个数之和的大小进行降序排列*/for(j=i+l;jcnt;j+)if(bbi. x2+bbi. x3bbj. x2+bbj. x3)temp=bbi;bbi=bbj;bbj=temp;)return ent;/*返回满足条件数据的组数*/易错提示】第i个人是否报数到m;用表达式(SI +m 1)% i判断。第017套【考点分析】本题考查对多个整数的右移、统计以及求平均值。考查 的知识点主要包括:佐秒算,逻.楫表达式,第4衲值的核。【解题思路】本题是数学类题。本题的解题思路是:首先利用一个for 循环来依次从数组中取得各数,由于题目要求数组中正整数的个数,如果取 得的数大于零,这时就给变量totNum(正整数的个数)累加1,然后把该正整数 右移一位后的结果临时保存在变量data中,再判断产生的新数是否是偶数。 如果是,就给变量totCnt(符合判断条件的正整数个数)累加1,并把原数的值 累加到变量totPjz中,当所有符合判断条件的数都被找出后,再对totPjz求平 均值。【参考答案】void CalValue(void)/*定义循环控制变量*/int data;for(i-0;i20
限制150内