计算机等级考试三级数据库上机100题

上传人:xt****7 文档编号:91520164 上传时间:2022-05-17 格式:DOC 页数:31 大小:1.77MB
收藏 版权申诉 举报 下载
计算机等级考试三级数据库上机100题_第1页
第1页 / 共31页
计算机等级考试三级数据库上机100题_第2页
第2页 / 共31页
计算机等级考试三级数据库上机100题_第3页
第3页 / 共31页
资源描述:

《计算机等级考试三级数据库上机100题》由会员分享,可在线阅读,更多相关《计算机等级考试三级数据库上机100题(31页珍藏版)》请在装配图网上搜索。

1、1、【考点分析】 本题考查对4位整数的排序。考查的知识点主要包括:数组元素的排序算法,if判断语句和逻辑表达式,以及求余算术运算。【解题思路】 此题属于4位数排序问题。本题需主要解决3个问题:问题1如何取4位数的后3位进行比较;问题2如何按照题目要求的条件(按照每个数的后3位的大小进行降序排列,如果后3位相等,则按照原始4位数的大小进行升序排列)排序;问题3如何将排完序的前10个数存到数组bb中去。本题的解题思路为:使用双循环对数组按条件进行排序,然后将排完序的前10个数存到数组bb中。对于问题1可以通过算术运算的取余运算实现(aai%1000);问题2通过包含if判断语句的起泡排序法就可以实

2、现。【参考答案】 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判断语句中逻辑表达式的比较运算符。2、【考点分析】 本题主要考查的知识点包括:C语言循环结构,if

3、判断语句和逻辑表达式,以及分解多位整数的算术运算。【解题思路】 分析题干,本题除给出条件SIXSIXSIX NINENINE之外,还可得出2个隐含的条件:条件1:SIX和NINE分别是3位和4位的正整数;条件2:SIX的十位数字等于NINE的百位数字,NINE的千位数字和十位数字相等。本题解题思路:通过嵌套的循环结构可以遍历到所有的3位和4位数,对于每一个3位数及4位数的组合进行题设条件(SIXSIXSIX NINENINE)的判断,满足条件的对其分解得到各数位的数字,再进一步判断各位数字是否满足本题隐含的条件(条件1及条件2),如果满足则个数加1,并将该3位数及4位数添加到和值中。【参考答案

4、】 void countValue() int i,j; int s2; int n2,n3,n4; for(i=100;i1000;i+) for(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=n3&n2=n4) cnt+; sum+=i+j; 3、【考点分析】 本题考查的知识点包括:C语言中文件读函数,if条件判断结构,对多个整数求平均值和方差的算法等。【解题思路】 此题属于数学类问题。分析题干要求,得出解本题主要需解决3个问题:问题1如何实现从已打开的文件中依

5、次读取数据到数组的操作,问题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;

6、j10;j+) 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;/*求偶数的和

7、*/ave1/odd; /*求奇数的平均值*/ave2/even;/*求偶数的平均值*/for(i0;iodd;i)totfc(ttiave1)*(ttiave1)/odd; /*求所有奇数的方差*/【易错提示】 文件操作函数fscanf()和feof()的用法,if判断语句中逻辑表达式,对方差计算公式运用错误。4、【考点分析】 本题考查对一定范围内整数的筛选。考查的知识点主要包括:多位整数的分解算法,完全平方数判断方法,if判断语句和逻辑表达式。【解题思路】 此题属于数学类问题。分析题干,本题需注意2个关键点:关键点1判断该数是否是完全平方数;关键点2判断该数是否有两位数数字相同。本题的解题

8、思路为:通过循环控制,依次判断100至999数是否满足关键点1(是否为完全平方数)。如果是,则将该数分解出各位数数字,并判断是否有两位数数字相同,如果存在,则个数加1,并将该数存入数组中。【参考答案】 int jsValue(int bb) int i,j; /*定义循环控制变量*/int cnt=0; /*定义计数器变量*/int a3,a2,a1; /*定义变量存储三位数每位的数字*/for(i=100;i=999;i+) /*在该范围中找符合条件的数*/ for(j=10;j=sqrt(i);j+) if(i=j*j) /*如果该数是完全平方数*/ a3=i/100; /*求该数的百位数

9、字*/ a2=i%100/10; /*求该数的十位数字*/ a1=i%10; /*求该数的个位数字*/ if(a3=a2 | a3=a1 | a2=a1) /*有两位数字相同*/ bbcnt=i; /*则把该数存入数组bb中*/ cnt+; /*统计满足条件的数的个数*/ return cnt; /*返回满足该条件的整数的个数*/【易错提示】 完全平方数的判断方法错误,分解整数各个数位的方法错误,if判断语句中表达式。5、【考点分析】 本题考查对一定范围内整数的筛选。考查的知识点主要包括:多位整数的分解算法,素数的判断算法,if判断语句和逻辑表达式。【解题思路】 此题属于数学类问题。分析题干要

10、求,归纳出本题的2个关键点:关键点1判断该数是否为素数;关键点2判断是否满足条件:个位数字和十位数字之和被10除所得余数等于百位数字。本题思路为:通过循环语句,依次求出所有3位数的各位数数字,并判断是否满足关键点2(个位数字和十位数字之和被10除所得余数等于百位数字),如果满足则判断该数是否为素数,如果是则个数加1,并将该数加到和值中。判断的方法为:依次取从2到该数1/2的数去除这个数,如果有一个可被整除,则不是素数,如果循环后的数大于该数的一半就可以判定该数是一个素数。【参考答案】 void countValue() int i,j; /*定义循环控制变量*/int half;int a3,

11、a2,a1; /*定义变量存储3位数每位的数字*/for(i=101;i1000;i+) /*在该范围内寻找符合条件的数*/ a3=i/100; /*求百位数字*/ a2=i%100/10; /*求十位数字*/ a1=i%10; /*求个位数字*/ if(a3=(a2+a1)%10) /*如果个位数字与十位数字之和被10除所得余数恰是百位数字*/ half=i/2; for(j=2;jhalf) /*如果是素数*/ cnt+; /*计算这些素数的个数cnt*/ sum+=i; /*计算这些素数值的和sum*/ 【易错提示】 素数的判断算法使用错误,分解整数各个数位的方法错误,if判断语句中逻辑

12、表达式错误。6、【考点分析】 本题考查结构体数组的排序。考查的知识点主要包括:结构体成员运算,字符串比较符,数组排序。【解题思路】 此题属于销售记录排序类题型。此类题型主要考查对结构体数组的排序。解题时,应注意3个关键点:关键点1如何按产品名称从小到大排序;关键点2如果产品名称相同;关键点3如何按金额从小到大排列。数组排序可以用起泡法实现,起泡法的思路是:将较小的值像空气泡一样逐渐上浮到数组的顶部,而较大的数值逐渐下沉到数组的底部。具体为第1趟用第1个记录和第2个记录进行比较,如果不符合要求,就进行交换,第2个记录和第3个记录比较,直到倒数第2个记录和最后1个记录比较完成;第2趟用第2个记录和

13、第3个记录比较,然后第3个和第4个比较,依此类推。本题在双循环中进行每次记录比较时,首先用字符串比较函数strcmp比较两个产品的名称,如果返回的值大于0,则这两个产品进行数据交换;如果返回值等于0,再比较两个产品的金额,如果前一个产品的金额大于后一个产品的金额,则这两个产品进行数据交换。【参考答案】 void SortDat() int i,j; /*定义循环控制变量*/PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/for(i=0;i99;i+) /*利用选择法进行排序*/for(j=i+1;j0) /*按产品名称从小到大进行排列*/ temp=sell

14、i; sell i=sellj; sellj=temp;else if(strcmp(selli.mc,sellj.mc)=0) /*若产品名称相同*/ if(selli.jesellj.je) /*则按金额从小到大进行排列*/ temp=selli; selli=sellj; sellj=temp; 7、【考点分析】 本题考查对多个整数的筛选以及排序。考查的知识点主要包括:多位整数的分解算法,逻辑表达式,数组排序算法。【解题思路】 此题属于4位数的筛选类题,并且需求出各位数数字,再筛选排序。解此类题目需主要解决3个问题:问题1如何取得4位数的各个数位数字;问题2如何通过条件(本题为千位数字加

15、个位数字等于百位数字加十位数字)筛选出满足条件的数;问题3如何对数组中的数进行排序。解此类题的一般思路为:先求出每个数的各位数字,再根据各位数数字筛选出满足条件的数存入新的数组中,最后对新数组进行排序。对于问题1通过算术运算取余和整除可以分解得到4位数的各个数位上的数字;问题2通过if条件判断语句和逻辑表达式可以实现。问题3排序可以通过循环嵌套的起泡法来完成。在求各位数数字时,先将每个数进行取整运算求出千位数,将该数取余再除100取整得出百位数,将该数取余再除10取整得出十位数,最后将该数取余得出个位数。【参考答案】 voidjsValue() int i,j; /*定义循环控制变量*/int

16、 a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/int temp; /*定义数据交换时的暂存变量*/for(i=0;i300;i+) /*逐个取每一个4位数*/ a4=ai/1000; /*求4位数的千位数字*/ a3=ai%1000/100; /*求4位数的百位数字*/ a2=ai%100/10; /*求4位数的十位数字*/ a1=ai%10; /*求4位数的个位数字*/ if(a4+a1=a3+a2) /*如果千位数加个位数等于百位数加十位数*/ bcnt=ai; /*将满足条件的数存入数组b中*/ cnt+; /*统计满足条件的数的个数cnt*/ for(i=0;icnt

17、-1;i+) /*用选择法对数组b的4位数按从小到大的顺序进行排序*/ for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 【模板速记】 记忆口诀:一定义二筛选三排序。定义指定义相关变量,筛选是筛选出满足条件的数,排序则是按照要求对数组排序。详见模板二。做题时,需灵活应用本模板,切勿死记硬背。【易错提示】 分解4位数时算术运算符的使用,4位数条件判断时if语句中的条件表达式,起泡法排序时的条件。 模板二4位数筛选(1)-根据各位数数字排序8、【考点分析】 本题考查对多个整数的筛选以及排序。考查的知识点主要包括:多位整数的分解算法,逻辑表达式,数组排序算法。【解题思路

18、】 此题属于4位数的筛选类题,并且需将各位数组成新的2位数,再筛选排序。解题时,需主要解决4个问题:问题1如何取得4位数的各个数位数字;问题2如何按照要求组成新的2位数字ab(本题为千位数字与十位数字),以及cd(本题为个位数字与百位数字);问题3如何通过判断条件(abcd0,abcd0&(abcd)10&ab%21&cd%21&a4!0&a1!0)。【参考答案】 void jsVal() int i,j; /*定义循环控制变量*/int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/int temp; /*定义数据交换时的暂存变量*/int ab,cd; /*存储重新组合成的

19、十位数*/for(i=0;i=0 & (ab-cd)=0且ab-cd=10且两个数均是奇数同时两个新十位数的十位上的数字均不为零*/ 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

20、位数筛选(2)-组成2位数再筛选排序【易错提示】 分解4位数时算术运算符的使用,if判断语句中逻辑表达式,起泡法排序时的条件。9、【考点分析】 本题考查对多个整数的筛选以及求平均值。考查的知识点主要包括:多位整数的分解算法,逻辑表达式,平均值的计算方法。【解题思路】 此题属于4位数的筛选题型,并且涉及统计及平均值问题。解题时,需主要解决3个问题:问题1如何取得4位数的各个数位数字;问题2如何通过判断条件(本题为千位数上的数加百位数上的数等于十位数上的数加个位数上的数)对目标进行筛选,再分别统计出满足和不满足条件的数的和以及数目;问题3分别求出两类数的平均值。 本题与上题解题思想相同,不同之处在

21、于问题2的判断条件改为:千位数上的数加百位数上的数等于十位数上的数加个位数上的数(a4+a3=a2+a1)。 【参考答案】 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位数的十位数字*/ a1=ai%10; /*求4位数的个位数字*/ if(a4+a3=a2+a1) /*如果千位数加百位数等于十位数加个位

22、数*/ cnt+; /*统计满足条件的数的个数*/ pjz1+=ai; /*将满足条件的数求和*/ else n+; /*否则统计不满足条件的数的个数*/ pjz2+=ai; /*将不满足条件的数求和*/ pjz1/=cnt; /*求满足条件的数的平均值*/ pjz2/=n; /*求不满足条件的数的平均值*/ 【模板速记】 记忆口诀:一定义二统计三求值。定义指定义相关变量,统计是统计满足条件的数的个数及求出和值,求值是分别求出满足和不满足条件的数的平均值,详见模板四。做题时,需灵活应用本模板,切勿死记硬背。模板四4位数筛选(3)-统计及求平均值【易错提示】 分解4位数时算术运算符的使用;if判

23、断语句中逻辑表达式。10、【考点分析】 本题考查对整数的筛选以及数组排序。考查的知识点主要包括:C语言循环结构,逻辑表达式,数组排序。 【解题思路】 此题属于4位数的筛选题型。分析题干要求,本题要求实现jsVal()函数的功能,归纳可以得出2个问题:问题1如何通过判断条件(该4位数连续小于该4位数以后的5个数且该数是偶数)筛选出满足条件的数,同时统计其个数;问题2如何将这些数按照从小到大的顺序排列。 通过问题分析,得出解此题的思路为:先根据题目中的条件筛选出满足条件的数并存入新的数组中,再对新数组进行排序。对于问题1通过if条件判断语句和逻辑表达式可以实现;问题2排序可以通过循环嵌套的起泡法实

24、现。 【参考答案】 void jsVal() int i,j; /*定义循环控制变量*/int temp; /*定义数据交换是的暂存变量*/for(i=0;iMAX-5;i+) /*逐个取每个4位数*/ if(aiai+1&aiai+2&aiai+3&aiai+4&aiai+5&ai%2=0) /*如果当前数是偶数且小于后面连续5个数*/ bcnt=ai; /*将满足条件的数存入数组b中*/ cnt+; /*并统计满足条件的数的个数*/ for(i=0;icnt-1;i+) /*利用选择法对b数组中的元素进行从小到大的排序*/ for(j=i+1;jbj) temp=bi; bi=bj; bj

25、=temp; 模板五4位数的筛选(4)-4位数之间的比较【模板速记】 记忆口诀:一定义二筛选三排序。定义指定义相关变量,筛选指选出满足条件的数并存入数组,排序指按照要求排序,详见模板五。做题时,需灵活应用本模板,切勿死记硬背。【易错提示】 循环嵌套的循环控制条件,if判断语句中表达式,数组排列的顺序。5讲。11、【考点分析】 本题考查对字符数组中的字符进行计算以及替换。考查的知识点主要包括:字符串数组的访问,字符ASCII码的位运算,if判断结构以及逻辑表达式。 【解题思路】 首先通读题目,得知此题属于字符计算问题;其次分析题干要求,本题要求实现StrCharJL()函数的功能,分析后可以归纳

26、出3个关键点:关键点1如何对字符数组的元素逐一访问;关键点2如何对字符的ASCII码做左移的位运算;关键点3如何根据条件(移位后的ASCII值小于等于32或大于100)对计算结果进行判断,并分别对满足与不满足条件的情况进行处理。 接着分析每一步的解决方法,关键点1通过字符串处理函数strlen获取字符串的长度,再通过获得的长度使用下标法对字符数组的元素逐一访问;关键点2可以直接对字符的ASCII码进行位运算;关键点3通过if判断结构和逻辑表达式即可实现功能。【参考答案】 void StrCharJL(void) int i,j; /*定义循环控制变量*/int str;char ch;for(

27、i=0;imaxline;i+) /*以行为单位获取字符*/ str=strlen(xxi); /*求得当前行的字符串长度*/ for(j=0;jstr;j+) ch=xxij4; if(ch100) continue; /*如果左移4位后字符的ASCII值小于等于32或大于100,则原字符保持不变*/ else xxij+=4; /*否则就把左移后的字符ASCII值加上原字符的ASCII*/ 【易错提示】 根据字符ASCII码的位计算;if判断语句中的逻辑表达式。 12、【考点分析】 本题考查对字符数组中的字符计算。考查的知识点主要包括:字符串数组的访问,字符ASCII码的算术运算,if判断

28、结构以及逻辑表达式。【解题思路】 首先通读题目,得知此题属于字符计算问题;其次分析题干要求,本题要求实现ChA(void)函数的功能,分析后可以归纳出3个关键点:关键点1如何对字符数组的元素逐一访问;关键点2按照要求取每个位置的字符和其下一个字符相加,并将结果作为该位置上的新字符,需要注意的是,末尾位置的新字符是该位原字符和第1个原字符相加的结果;关键点3最后要将所得的结果逆序保存。 接着分析每一步的解决方法,对于关键点1通过字符串处理函数strlen获取字符串的长度,再通过获得的长度用下标法对字符数组的字符元素逐一访问;关键点2在遍历访问字符时,可以直接取下一个位置的字符进行运算,在进行计算

29、之前需要首先保存第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=0;jstr-1;j+) /*将该字符的ASCII值赋值为下一个字符的ASCII值加1,得到新

30、的字符*/ xxij+=xxij+1; xxistr-1+=ch; /*将最后一个字符的ASCII值与第一个字符的ASCII值相加,得到最后一个新的字符*/ for(j=0,k=str-1;jstr/2;j+,k-) /*将字符串逆转后仍按行重新存入字符串数组xx中*/ temp=xxij; xxij=xxik; xxik=temp; 【易错提示】 最后一个字符的计算,逆序存储算法的选择。13、【考点分析】 本题考查对字符串的查找和统计。考查的知识点包括:指针对字符串的访问方法,C语言循环嵌套结构。【解题思路】 首先通读题目,得知此题属于字符串处理问题;其次分析题干要求,本题要求实现findS

31、tr(char *str, char *sunstr)函数,该函数需要实现在一个字符串中查找另一个字符串,并统计出现次数的功能,分析后可以归纳出实现功能的3个关键点;关键点1如何实现对字符串中字符的遍历;关键点2如何实现对子字符串的查找功能;关键点3如何统计子串其出现的次数。接着分析每一步的解决方法。对于关键点1使用循环和指针的方式可以实现对字符串的访问;关键点2通过嵌套的循环可以实现查找功能,具体方法是,外层循环控制对主串的遍历,内层是对子串的遍历,当主串中当前字符和子串第1个字符相同时,继续判断其后的字符是否和子串的下一个字符相同,依次类推,则每次内层循环遍历过子串就表示找到一次;关键点3

32、每找到一次子串的同时,累加一个记数器,作为出现次数的统计结果。【参考答案】 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) /*如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符*/ r+; p

33、+; else break; /*否则退出循环*/ if(*r=0) /*如果子字符串在字符串中出现了一次*/ n+; /*则n加1,进行统计*/ str+; /*指向字符串中的下一个字符*/return n; /*返回统计结果n*/【易错提示】 遍历字符串时指针的使用;查找子串的算法使用。14、【考点分析】 本题考查对字符数组中字符排序。考查的知识点包括:字符串数组的访问,数组排序算法。【解题思路】 首先通读题目,得知此题属于字符排序问题;其次分析题干要求,本题要求实现SortCharD()函数,该函数需要实现将字符数组中的元素排序的算法。分析后可以归纳出实现该功能的关键点是:如何按照字符从

34、大到小的顺序对数组中的字符进行排序。这可以通过循环嵌套的起泡法来实现。【参考答案】 void SortCharD() int i,j,k; /*定义循环控制变量*/int str; /*存储字符串的长度*/char temp; /*定义数据交换时的暂存变量*/for (i=0;imaxline;i+) /*以行为单位获取字符*/ str=strlen(xxi); /*求得当前行的字符串长度*/ for(j=0;jstr-1;j+) /*对字符按从大到小的顺序进行排序*/ for(k=j+1;kstr;k+) if(xxijxxik) temp=xxij; xxij=xxik; xxik=tem

35、p; 【易错提示】 排序时if结构中的逻辑表达式。15、【考点分析】 本题考查选票的统计。考查的知识点主要包括:C语言循环结构,if条件判断结构和逻辑表达式,二维数组操作。【解题思路】 首先通读题目,得知此题属于选票的统计题型;其次分析题干要求,本题要求实现CountRs(void)函数的功能,该函数需要统计出100条选票数据,并将统计结果保存入数组yy中;接着归纳出本题有2个关键点:关键点1如何统计每张选票的选择情况;关键点2根据题目给出的条件一张选票选中人数小于等于5个人时则被认为无效判断选票是否有效。 首先,对数组yy元素初始化为0;接着通过一个循环嵌套结构依次判断每张选票数据的十个选举

36、标志,同时每张选票的投票数量,对于不满足条件的选票数据直接跳过,并统计有效选票的投票情况到数组 yy中。【参考答案】 void CountRs(void) int i,j; /*定义循环控制变量*/int cnt; /*用来存储每张选票中选中人数,以判断选票是否有效*/for(i=0;i10;i+) /*初始化数组yy*/ yyi=0;for(i=0;i100;i+) /*依次取每张选票进行统计*/ cnt=0; /*初始化计数器变量*/ for(j=0;j5) /*当cnt值大于5时为有效选票*/ for(j=0;j10;j+) /*统计有效选票*/ if(xxij=1) yyj+;模板七选

37、票问题【模板速记】 记忆口诀:一定义二初始化三统计。定义指定义相关变量,初始化指初始化数组,统计是统计每个人选票的数量,详见模板七。做题时,需灵活应用本模板,切勿死记硬背。【易错提示】 数组yy未初始化,判断选票是否有效的逻辑表达式错误16、【考点分析】 本题考查的知识点主要包括:结构体成员的访问,元素的排序, if判断结构和逻辑表达式。 【解题思路】此题属于结构体的筛选排序问题。分析题干要求,可以归纳出3个关键点:关键点1通过条件每组数据中第2个数大于第1个数和第3个数之和对每组数据进行判断;关键点2保存满足条件的数到新数组中并统计其数量;关键点3对新数组中的数再按照第2个数和第3个数之和的

38、大小进行降序排列;关键点4函数的返回值为之前统计的满足的数据的组数。 接着分析具体的解决方法,首先通过if判断结构和逻辑表达式实现对所有结构的筛选,保存并统计个数,然后通过起泡法完成排序,最后函数返回组数。【参考答案】 int jsSort() int i,j; /*定义循环控制变量*/int cnt=0; /*定义计数器变量*/Data temp; /*定义数据交换时的暂存变量,这里是一个Data类型的结构体变量*/for(i=0;iaai.x1+aai.x3) /*如果第二个数大于第一个数加第三个数之和*/ bbcnt=aai; /*则把该组数据存入结构数组bb中*/ cnt+; /*同时

39、统计满足条件的数据的个数*/ for(i=0;icnt-1;i+) /*对结构数组bb中的数据按照每组数据的第二个数加第三个数之和的大小进行降序排列*/ for(j=i+1;jcnt;j+) if(bbi.x2+bbi.x3bbj.x2+bbj.x3) temp=bbi; bbi=bbj; bbj=temp; return cnt; /*返回满足条件数据的组数*/ 【易错提示】 第i个人是否报数到m;用表达式(S1m1)% i判断。17、【考点分析】 本题考查对多个整数的右移、统计以及求平均值。考查的知识点主要包括:位移算法,逻辑表达式,求平均值的算法。【解题思路】 本题是数学类题。本题的解题

40、思路是:首先利用一个for循环来依次从数组中取得各数,由于题目要求数组中正整数的个数,如果取得的数大于零,这时就给变量totNum(正整数的个数)累加1,然后把该正整数右移一位后的结果临时保存在变量data中,再判断产生的新数是否是偶数。如果是,就给变量totCnt(符合判断条件的正整数个数)累加1,并把原数的值累加到变量totPjz中,当所有符合判断条件的数都被找出后,再对totPjz求平均值。 【参考答案】 void CalValue(void) int i; /*定义循环控制变量*/int data; /*用于保存处理后产生的新数*/for(i=0;i0) /*判断是否正整数*/ tot

41、Num+; /*统计正整数的个数*/ data=xxi1; /*将数右移一位*/ if(data%2=0) /*如果产生的新数是偶数*/ totCnt+; /*统计这些数的个数*/ totPjz+=xxi; /*并将满足条件的原数求和*/ totPjz/=totCnt; /*求满足条件的这些数(右移前的值)的算术平均值*/ 【易错提示】 位移运算表达式的使用。 18、【考点分析】 本题考查对多个整数的筛选、统计以及计算平均值,考查的知识点只要包括:多位整数的数位分解算法,逻辑表达式,计算平均值的算法。【解题思路】 首先通读题目,得知此题属于4位数的筛选题型;其次分析题干要求,本题要求补充mai

42、n中空白部分,进一步分析,可以归纳出3个关键点:关键点1如何找出数组中最大数的值并统计其个数;关键点2如何通过条件可以被7或3整除在数组中筛选出满足条件的数;关键点3如何计算平均值。接着分析每一步的解决方法,对于关键点1通过循环使用起泡法找出其中最大的数,同时统计其个数;关键点2通过if判断结构和逻辑表达式可以实现;关键点3通过之前找到满足条件的数的和及其个数计算出平均值。【参考答案】 void main() int i,k,cnt,xxN,max; float pj; FILE *fw; long j=0; system(CLS); fw=fopen(out.dat,w); read_dat

43、(xx);max=xx0;for(i=1,k=0;imax) max=xxi; /*求出数组xx中最大数max*/ if(xxi%3=0 |xxi%7=0) j+=xxi; /*求出数组xx中值能被3整除或能被7整除的数的总和*/ k+; for(i=0,cnt=0;iN;i+) if(xxi=max) cnt+; /*求出数组xx中最大数max的个数*/pj=(float)(j*100/k)/100; /*求出数组xx中值能被3整除或能被7整除的数的平均值*/ printf(nnmax=%d,cnt=%d,pj=%6.2fn,max,cnt,pj); fprintf(fw,%dn%dn%6.

44、2fn,max,cnt,pj); fclose(fw);【易错提示】 对数进行筛选时的逻辑表达式。19、【考点分析】 本题考查对字符数组中字符计算和替换。考查的知识点主要包括:字符串数组的访问,字符ASCII码的算术运算,if判断结构以及逻辑表达式。【解题思路】 此题属于字符计算问题。分析题干要求,可以归纳出3个关键点:关键点1如何对字符数组的元素逐个访问;关键点2如何根据给出的函数替代关系f(p)p*11mod256对字符进行计算;关键点3根据条件(本题为小于等于32或对应的字符是大写字母)对计算结果进行判断,并分别对满足与不满足条件的情况进行处理。解此类题的一般思路为:首先通过字符串处理函

45、数strlen获取字符串的长度,根据获得的长度使用下标法逐一对字符数组的元素进行访问;然后按照题目给出的函数关系式直接对字符进行算术运算;最后通过if判断结构和逻辑表达式判断计算结果是否满足条件,分别对两种情况进行处理。【参考答案】 void encryChar() int i,j; /*定义循环控制变量*/ int str;/*存储字符串的长度*/ char ch; /*存储当前取得的字符*/ for(i=0;imaxline;i+)/*以行为单位获取字符*/ str=strlen(xxi);/*求得当前行的字符串长度*/ for(j=0;jstr;j+) ch=xxij *11%256;

46、/*依次取各行的所有字符*/ if(ch=A & ch=Z) /*如果计算的值小于等于32或对应的字符是大写字母*/ continue;/*则不作改变*/ else xxij=ch;/*否则用新字符取代原有字符*/ 【模板速记】 记忆口诀:一定义二替换。定义指定义相关变量,替换指按题目要求及替代关系对字符替换。详见模板六。做题时,需灵活应用本模板,切勿死记硬背。模板六字符操作类(1)-字符串替代【易错提示】 根据函数替代关系对字符进行运算;if判断结构中的逻辑表达式。 20、【考点分析】 本题考查对字符串中字符的替换。考查的知识点主要包括:字符串数组的访问,字符之间的比较和替换,if判断结构以及逻辑表达式。【解题思路】 此题属于字符替换题型,分析题干要求,可以归纳出2个关键点:关键点1如何实现对字符数组的元素逐一访问;关键点2如何根据条件把所有的小写字母改写成该字母的下一个字母对字符进行替换。 接着分析具体的解决方法,首先通过字符串处理函数strlen获取字符串的

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!