计算机三级网络技术上机试题100道_第1页
计算机三级网络技术上机试题100道_第2页
计算机三级网络技术上机试题100道_第3页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、000) ;问题 2 通过包含 if 判断语句的起泡排序法就可以实现。int i,j; int temp; for(i=0;i<199;i+) for(j=i+1;j<200;j+)/* 定义循环控制变量 */* 定义数据交换时的暂存变量 */* 用选择法对数组进行排序 */void jsSort()if(aai%1000<aaj%1000) /* 按照每个数的后 3 位大小进行降序排序 */ temp=aai; aai=aaj; aaj=temp;else if(aai%1000=aaj%1000) /* 如果后 3 位数相等 */ if(aai>aaj) /* 则要

3、按原 4 位数的值进行升序排序 */ temp=aai; aai=aaj;aaj=temp;for(i=0;i<10;i+) /* 将排序后的前 10 个数存入数组 b 中 */ bbi=aai;【易错提示】 取 4位数后三位的算法, if 判断语句中逻辑表达式的比较运算符。2【考点分析】 本题主要考查的知识点包括:C语言循环结构,if判断语句和逻辑表达式,以及分解多位整数的算术运算。【解题思路】分析题干,本题除给出条件 "SIX+ SIX+ SIX = NINE+ NINE"之外,还可得出 2个隐含的条件:条件1: SIX和NINE分别是3位和4位的正整数;条件 2

4、 : SIX的十位数字等于 NINE的百位数字,NINE的千位数字和十位数 字相等。本题解题思路:通过嵌套的循环结构可以遍历到所有的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;i<1000;i+)for(j=1000;j<

5、10000;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 如何实现从已打开的文件中依次读取数据到数组的操作,问题 2 如何分离并统计出奇数和偶数的个数及和值

6、,并计算平均值;问题3 如 何计算奇数的方差。本题的解题思路为:首先使用C语言的库函数fscanf()将文件中的数依次读入数组xx中,然后通过循环判断得出需要的数据 (奇数个数、偶数个数、 奇数及偶数的和 );最后根据题目中已给出的公式和之前保存的数据计算出奇数的方差。int ReadDat(void)FILE *fp;int i,j;/* 计数器变量 */if(fp=fopen("IN.DAT","r")=NULL) return 1; for(i=0;i<100;i+)/* 依次读取整型数据放入数组 xx 中 */for(j=0;j<10

7、;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(i = 0; i<1000; i + ) if(xxi%2 ! = 0)odd ;avel + = xxi; ttodd 1 = xxi; elseeven;ave2 + = xxi;/* 计算出 xx 中偶数的

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

9、意 关键点 2 判断该数是否有两位数数字相同。2 个关键点:关键点 1 判断该数是否是完全平方数;本题的解题思路为:通过循环控制,依次判断 1 00至999数是否满足关键点 1(是否为完全平方数 )。如果是,则将 该数分解出各位数数字,并判断是否有两位数数字相同,如果存在,则个数加int jsValue(int bb)1,并将该数存入数组中。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; a2=i%100/10;a1=i%10;/* 定义循

10、环控制变量 */* 定义计数器变量 */* 定义变量存储三位数每位的数字 */* 在该范围中找符合条件的数 */* 如果该数是完全平方数 */* 求该数的百位数字 /* 求该数的十位数字 /* 求该数的个位数字*/*/*/if(a3=a2 | a3=a1 | a2=a1) /* 有两位数字相同 */ bbcnt=i; cnt+;return cnt;/* 则把该数存入数组 bb 中 */* 统计满足条件的数的个数 */* 返回满足该条件的整数的个数 */【易错提示】 完全平方数的判断方法错误,分解整数各个数位的方法错误, 5.【考点分析】 本题考查对一定范围内整数的筛选。算法,if判断语句和逻

11、辑表达式。【解题思路】 此题属于数学类问题。分析题干要求,关键点 2 判断是否满足条件:个位数字和十位数字之和被本题思路为:通过循环语句,依次求出所有考查的知识点主要包括:if 判断语句中表达式。多位整数的分解算法,素数的判断归纳出本题的 2 个关键点:关键点 1 判断该数是否为素数; 10 除所得余数等于百位数字。3 位数的各位数数字,并判断是否满足关键点2(个位数字和十位数字/* 计算出 xx 中奇数的个数 odd*/* 求奇数的和 */* 将奇数存入数组 tt 中 */之和被 10 除所得余数等于百位数字 ),如果满足则判断该数是否为素数,如果是则个数加1,并将该数加到和值中。判断的方法

12、为:依次取从 2 到该数 1/2 的数去除这个数,如果有一个可被整除,则不是素数,如果循环后的数大于该数的 一半就可以判定该数是一个素数。void countValue()int i,j;int half;int a3,a2,a1; for(i=101;i<1000;i+) /* 定义循环控制变量 */* 定义变量存储 3 位数每位的数字 */ /* 在该范围内寻找符合条件的数*/a3=i/100;a2=i%100/10;a1=i%10;if(a3=(a2+a1)%10)/* 求百位数字 */* 求十位数字 */* 求个位数字 */* 如果个位数字与十位数字之和被10 除所得余数恰是百位

13、数字 */half=i/2;for(j=2;j<=half;j+)if(i%j=0) break;if(j>half)cnt+;sum+=i;/* 进一步判断该数是否为素数/* 如果不是素数,则跳出循环,接着判断下一个数 /* 如果是素数*/*/*/* 计算这些素数的个数/* 计算这些素数值的和cnt*/sum*/【易错提示】6.【考点分析】素数的判断算法使用错误,分解整数各个数位的方法错误, if 判断语句中逻辑表达式错误。本题考查结构体数组的排序。考查的知识点主要包括:结构体成员运算,字符串比较符,数组排序。解题思路】此题属于销售记录排序类题型。此类题型主要考查对结构体数组的排

14、序。解题时,应注意 3 个关键 点:关键点 1如何按产品名称从小到大排序;关键点 2如果产品名称相同;关键点 3 如何按金额从小到大排列。 数组排序可以用起泡法实现,起泡法的思路是:将较小的值像空气泡一样逐渐"上浮 "到数组的顶部,而较大的数值逐渐 "下沉"到数组的底部。具体为第 1趟用第 1 个记录和第 2 个记录进行比较,如果不符合要求,就进行交换,第 2 个记录和第 3个记录比较,直到倒数第 2个记录和最后 1个记录比较完成;第 2 趟用第 2个记录和第 3 个记录比较, 然后第 3 个和第 4 个比较,依此类推。本题在双循环中进行每次记录比较时,

15、 首先用字符串比较函数 strcmp 比较两个产品的名称, 如果返回的值大于 0, 则这两个产品进行数据交换; 如果返回值等于 0,再比较两个产品的金额, 如果前一个产品的金额大于后一个产品的金 额,则这两个产品进行数据交换。void SortDat()int i,j;PRO temp; for(i=0;i<99;i+) for(j=i+1;j<100;j+)/* 定义循环控制变量 */*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/* 利用选择法进行排序 */ if(strcmp(selli.mc,sellj.mc)>0) /* 按产品名称从小到大进行排列 *

16、/temp=selli;sell i=sellj; sellj=temp;else if(strcmp(selli.mc,sellj.mc)=0) /* 若产品名称相同 */ if(selli.je>sellj.je) /* 则按金额从小到大进行排列 */ temp=selli; selli=sellj; sellj=temp;【易错提示】 结构型数据对成员的访问用 "." 成员运算符;两个字符串的比较用字符串比较函数 strcmp。7. 【考点分析】 本题考查对多个整数的筛选以及排序。考查的知识点主要包括:多位整数的分解算法,逻辑表达 式,数组排序算法。【解题思路】

17、 此题属于 4 位数的筛选类题,并且需求出各位数数字,再筛选排序。解此类题目需主要解决 3 个问 题:问题 1 如何取得 4 位数的各个数位数字;问题 2 如何通过条件 (本题为千位数字加个位数字等于百位数字加十位数 字 )筛选出满足条件的数;问题 3 如何对数组中的数进行排序。解此类题的一般思路为:先求出每个数的各位数字,再根据各位数数字筛选出满足条件的数存入新的数组中,最 后对新数组进行排序。对于问题 1 通过算术运算取余和整除可以分解得到 4 位数的各个数位上的数字;问题 2 通过 if 条件判断语句和逻辑表达式可以实现。问题 3 排序可以通过循环嵌套的起泡法来完成。100 取整得出百位

18、数,将该数取余再在求各位数数字时,先将每个数进行取整运算求出千位数,将该数取余再除除 10 取整得出十位数,最后将该数取余得出个位数。voidjsValue()int i,j;int a1,a2,a3,a4;int temp;for(i=0;i<300;i+) a4=ai/1000; a3=ai%1000/100; a2=ai%100/10; a1=ai%10; if(a4+a1=a3+a2)bcnt=ai; cnt+;for(i=0;i<cnt-1;i+) for(j=i+1;j<cnt;j+) if(bi>bj)temp=bi; bi=bj; bj=temp;/*

19、定义循环控制变量 */* 定义变量保存 4 位数的每位数字 */* 定义数据交换时的暂存变量 */* 逐个取每一个 4 位数 */* 求 4 位数的千位数字 */* 求 4 位数的百位数字 */* 求 4 位数的十位数字 */* 求 4 位数的个位数字 */* 如果千位数加个位数等于百位数加十位数 */* 将满足条件的数存入数组 b 中*/* 统计满足条件的数的个数 cnt*/* 用选择法对数组 b 的 4 位数按从小到大的顺序进行排序 */【易错提示】 分解 4位数时算术运算符的使用, 4位数条件判断时 if 语句中的条件表达式, 起泡法排序时的条件。8. 【考点分析】 本题考查对多个整数的

20、筛选以及排序。考查的知识点主要包括:多位整数的分解算法,逻辑表达 式,数组排序算法。【解题思路】 此题属于 4 位数的筛选类题,并且需将各位数组成新的 2 位数,再筛选排序。解题时,需主要解决 4 个问题:问题 1 如何取得 4 位数的各个数位数字;问题 2 如何按照要求组成新的 2 位数字 ab( 本题为千位数字与十位 数字),以及cd(本题为个位数字与百位数字 );问题3如何通过判断条件(ab cd> = 0, ab cd<= 10, ab和cd都为奇数, ab 和 cd 都不为 0)筛选出满足条件的数, 并统计出满足条件的数的个数; 问题 4 如何对数组中的数进行从小到大的排

21、序。解此类题的一般思路为:先求出每个数的各位数字,再根据各位数数字组成2 位数的条件筛选出满足要求的数存入新的数组中,最后对新数组进行排序。本类题和前一类题的不同之处在于筛选的判断条件不同。问题2 由加法和乘法得出的各位数字组成新的2位数(本题为:ab=10*a4+a2 , cd=10*a1+a3);问题3的条件可以由逻辑表达式实现(本题为:(ab cd)> = 0&&(ab cd)<= 10&&ab%2 = 1&&cd%2 = 1&&a4 ! = 0&&al ! = 0)。void jsVal()in

22、t i,j;int a1,a2,a3,a4;int temp;int ab,cd;for(i=0;i<200;i+)a4=ai/1000; a3=ai%1000/100; a2=ai%100/10; a1=ai%10;/* 定义循环控制变量 */* 定义变量保存 4 位数的每位数字 */* 定义数据交换时的暂存变量 */* 存储重新组合成的十位数 */* 逐个取每一个 4 位数 */* 求 4 位数的千位数字 */ /* 求 4 位数的百位数字 */ /* 求 4 位数的十位数字 */ /* 求 4 位数的个位数字 */if (ab-cd)>=0 && (ab-cd

23、)<=10 && ab%2=1 && cd%2=1 && a4!=0 && a1!=0) /* 如果 ab-cd>=0 且 ab-cd<=10 且两个数均是奇数同时两个新十位数的十位上的数字均不为零 bcnt=ai;cnt+;/* 则把满足条件的数存入数组 b 中*/* 统计满足条件的数的个数 */*/ab=10*a4+a2;cd=10*a1+a3;/* 把千位数字和十位数字重新组成一个新的十位数ab*/* 把个位数字和百位数字组成另一个新的十位数cd*/* 将数组 b 中的数按从大到小的顺序排列 */ for(

24、i=0;i<cnt-1;i+)for(j=i+1;j<cnt;j+) if(bi<bj) temp=bi; bi=bj; bj=temp;【易错提示】 分解 4 位数时算术运算符的使用, if 判断语句中逻辑表达式,起泡法排序时的条件。9. 【考点分析】 本题考查对多个整数的筛选以及求平均值。 考查的知识点主要包括 :多位整数的分解算法 ,逻辑表达 式,平均值的计算方法。【解题思路】 此题属于 4位数的筛选题型 ,并且涉及统计及平均值问题。解题时 ,需主要解决 3个问题:问题 1 如何 取得 4 位数的各个数位数字;问题 2 如何通过判断条件 (本题为千位数上的数加百位数上的

25、数等于十位数上的数加个位 数上的数 )对目标进行筛选 ,再分别统计出满足和不满足条件的数的和以及数目;问题3分别求出两类数的平均值。本题与上题解题思想相同 ,不同之处在于问题 2 的判断条件改为 :千位数上的数加百位数上的数等于十位数上 的数加个位数上的数 (a4+a3=a2+a1)。int i,n=0;int a1,a2,a3,a4; for(i=0;i<300;i+) a4=ai/1000; a3=ai%1000/100; a2=ai%100/10; a1=ai%10; if(a4+a3=a2+a1)cnt+;pjz1+=ai;elsen+;pjz2+=ai;pjz1/=cnt;pj

26、z2/=n;/* 定义循环变量和计数器变量 */* 定义变量保存 4 位数的每位数字 */* 逐个取每一个 4 位数 */* 求 4 位数的千位数字 */* 求 4 位数的百位数字 */* 求 4 位数的十位数字 */* 求 4 位数的个位数字 */* 如果千位数加百位数等于十位数加个位数/* 统计满足条件的数的个数 */* 将满足条件的数求和 */* 否则统计不满足条件的数的个数 */* 将不满足条件的数求和 */* 求满足条件的数的平均值 */* 求不满足条件的数的平均值 */【易错提示】 分解 4位数时算术运算符的使用 ;if 判断语句中逻辑表达式。10 。【考点分析】 本题考查对整数的

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

28、Val()int i,j;int temp;for(i=0;i<MAX-5;i+)/* 定义循环控制变量 */* 定义数据交换是的暂存变量 */* 逐个取每个 4 位数 */if(ai<ai+1&&ai<ai+2&&ai<ai+3&&ai<ai+4&&ai<ai+5&&ai%2=0)/*如果当前数是偶数且小于后面连续 5个数*/bcnt=ai; cnt+; for(i=0;i<cnt-1;i+) for(j=i+1;j<cnt;j+) if(bi>bj)/* 将

29、满足条件的数存入数组 b 中*/* 并统计满足条件的数的个数 */* 利用选择法对 b 数组中的元素进行从小到大的排序 */temp=bi; bi=bj; bj=temp;【易错提示】 循环嵌套的循环控制条件, if 判断语句中表达式,数组排列的顺序。 11.【考点分析】 本题考查对字符数组中的字符进行计算以及替换。考查的知识点主要包括:字符串数组的访问 字符ASCII码的位运算,if判断结构以及逻辑表达式。【解题思路】首先通读题目,得知此题属于字符计算问题;其次分析题干要求,本题要求实现 StrCharJL(函数的功能,分析后可以归纳出 3个关键点:关键点1如何对字符数组的元素逐一访问;关键

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

31、*/for(i=0;i<maxline;i+)str=strlen(xxi);for(j=0;j<str;j+)ch=xxij<<4;if(ch<=32 | ch>100)continue;/*如果左移4位后字符的ASCII值小于等于32或大于100,则原字符保持不变*/elsexxij+=4;/*否则就把左移后的字符ASCII值加上原字符的 ASCII*/【易错提示】根据字符ASCII码的位计算;if判断语句中的逻辑表达式。12.void ChA(void)int I,j,k,str; char ch; for(I=0;I<maxline;I+)st

32、r=strlen(xxI);ch=xxI0;for(j=0;j<str-1;j+)xxIj+=xxIj+1;xxIstr-1+=ch; for(j=0,k=str-1;j<str/ 2;j+,k-)ch=xxIj;xxIj=xxIk;xxIk=ch;void ChA(void) int i,j;char p,c;for(i=0;i<maxline;i+) p=xxi0; c=xxistrlen(xxi)-1; for(j=0;j<strlen(xxi)-1;j+) xxij+=xxij+1; xxistrlen(xxi)-1=p+c; strrev(xxi); 13【考

33、点分析】 本题考查对字符串的查找和统计。考查的知识点包括:指针对字符串的访问方法,C 语言循环嵌套结构。【解题思路】 首先通读题目, 得知此题属于字符串处理问题; 其次分析题干要求, 本题要求实现 findStr(char *str , char *sunstr) 函数,该函数需要实现在一个字符串中查找另一个字符串,并统计出现次数的功能,分析后可以归纳出实 现功能的 3 个关键点; 关键点 1如何实现对字符串中字符的遍历; 关键点 2 如何实现对子字符串的查找功能; 关键点 3 如何统计子串其出现的次数。接着分析每一步的解决方法。对于关键点 1 使用循环和指针的方式可以实现对字符串的访问;关键

34、点 2 通过嵌套 的循环可以实现查找功能,具体方法是,外层循环控制对主串的遍历,内层是对子串的遍历,当主串中当前字符和子 串第 1 个字符相同时,继续判断其后的字符是否和子串的下一个字符相同,依次类推,则每次内层循环遍历过子串就 表示找到一次;关键点 3 每找到一次子串的同时,累加一个记数器,作为出现次数的统计结果。int findStr(char *str , char *substr)int n=0;/* 定义计数器变量,统计出现次数 */char *p,*r;/* 定义指针变量来分别指向两个字符串*/while(*str)/* 如果字符串没有结束,则一直循环下去*/p=str;/* 指针

35、 p 指向字符串首地址 */r=substr;/* 指针 r 指向子字符串首地址 */while(*r)/* 若子字符串没有结束,则循环继续*/if(*r=*p)/* 如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符*/r+;p+;elsebreak; /* 否则退出循环 */ if(*r='0') /* 如果子字符串在字符串中出现了一次 */ n+; /* 则 n 加 1,进行统计 */ str+; /* 指向字符串中的下一个字符 */return n;/* 返回统计结果 n*/【易错提示】 遍历字符串时指针的使用;查找子串的算法使用。14【考点分析】 本题

36、考查对字符数组中字符排序。考查的知识点包括:字符串数组的访问,数组排序算法。【解题思路】首先通读题目,得知此题属于字符排序问题;其次分析题干要求,本题要求实现SortCharD()函数,该函数需要实现将字符数组中的元素排序的算法。分析后可以归纳出实现该功能的关键点是:如何按照字符从大到小 的顺序对数组中的字符进行排序。这可以通过循环嵌套的起泡法来实现。void SortCharD()int i,j,k;int str;char temp;for (i=0;i<maxline;i+) str=strlen(xxi);for(j=0;j<str-1;j+)for(k=j+1;k<

37、str;k+) if(xxij<xxik)/* 定义循环控制变量 */* 存储字符串的长度 */* 定义数据交换时的暂存变量 */* 以行为单位获取字符 */* 求得当前行的字符串长度 */* 对字符按从大到小的顺序进行排序 */temp=xxij;xxij=xxik; xxik=temp;【易错提示】 排序时 if 结构中的逻辑表达式。15【考点分析】 本题考查选票的统计。考查的知识点主要包括:C 语言循环结构, if 条件判断结构和逻辑表达式,二维数组操作。解题思路】 首先通读题目,得知此题属于选票的统计题型;其次分析题干要求,本题要求实现CountRs(void)函数的功能,该函数

38、需要统计出 100条选票数据,并将统计结果保存入数组 yy中;接着归纳出本题有 2个关键点:关 键点 1 如何统计每张选票的选择情况; 关键点 2根据题目给出的条件 "一张选票选中人数小于等于 5个人时则被认为无 效"判断选票是否有效。首先, 对数组 yy 元素初始化为 0;接着通过一个循环嵌套结构依次判断每张选票数据的十个选举标志,同时每张选票的投票数量,对于不满足条件的选票数据直接跳过,并统计有效选票的投票情况到数组yy中。void CountRs(void)int i,j;int cnt; for(i=0;i<10;i+) yyi=0;for(i=0;i<

39、100;i+)cnt=0;for(j=0;j<10;j+)if(xxij='1')cnt+;if(cnt>5)for(j=0;j<10;j+) if(xxij='1') yyj+;/* 定义循环控制变量 */* 用来存储每张选票中选中人数,以判断选票是否有效 */* 初始化数组 yy*/* 依次取每张选票进行统计 */* 初始化计数器变量 */* 统计每张选票的选中人数 cnt*/* 当 cnt 值大于 5 时为有效选票 */* 统计有效选票 */【易错提示】 数组 yy 未初始化,判断选票是否有效的逻辑表达式错误16【考点分析】 本题考查的知

40、识点主要包括:结构体成员的访问,元素的排序 , if 判断结构和逻辑表达式。 【解题思路】此题属于结构体的筛选排序问题。分析题干要求,可以归纳出 3 个关键点 :关键点 1 通过条件 "每组数据中第 2个数大于第 1个数和第 3 个数之和 "对每组数据进行判断 ;关键点 2保存满足条件的数到新数组中并统计其数量;关键点 3 对新数组中的数再按照第2 个数和第 3 个数之和的大小进行降序排列 ;关键点 4 函数的返回值为之前统计 的满足的数据的组数。接着分析具体的解决方法 ,首先通过 if 判断结构和逻辑表达式实现对所有结构的筛选,保存并统计个数 ,然后通过起泡法完成排序 ,

41、最后函数返回组数。int jsSort() int i,j;int cnt=0;Data temp;for(i=0;i<200;i+)if(aai.x2>aai.x1+aai.x3)/* 定义循环控制变量 */* 定义计数器变量 */* 定义数据交换时的暂存变量,这里是一个Data 类型的结构体变量 */* 如果第二个数大于第一个数加第三个数之和 */bbcnt=aai; /* 则把该组数据存入结构数组 bb 中 */ cnt+; /* 同时统计满足条件的数据的个数 */for(i=0;i<cnt-1;i+) 序排列 */* 对结构数组 bb 中的数据按照每组数据的第二个数加

42、第三个数之和的大小进行降for(j=i+1;j<cnt;j+)if(bbi.x2+bbi.x3<bbj.x2+bbj.x3)temp=bbi;bbi=bbj;bbj=temp;return cnt; /* 返回满足条件数据的组数 */【易错提示】 第i个人是否报数到 m;用表达式(S1+ m 1)% i判断。17 【考点分析】 本题考查对多个整数的右移、统计以及求平均值。考查的知识点主要包括:位移算法,逻辑表达 式,求平均值的算法。【解题思路】 本题是数学类题。 本题的解题思路是 :首先利用一个 for 循环来依次从数组中取得各数,由于题目要求数组中正整数的个数 ,如果取得的数大于

43、零 ,这时就给变量 totNum( 正整数的个数 )累加 1,然后把该正整数右移一位后的结 果临时保存在变量 data中,再判断产生的新数是否是偶数。如果是,就给变量totCnt(符合判断条件的正整数个数)累加1,并把原数的值累加到变量 totPjz 中 ,当所有符合判断条件的数都被找出后,再对 totPjz 求平均值。void CalValue(void)int i;int data;for(i=0;i<200;i+) if(xxi>0)totNum+;data=xxi>>1;if(data%2=0)/* 定义循环控制变量 */* 用于保存处理后产生的新数 */* 逐

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

45、求补充 main 中空白 部分,进一步分析,可以归纳出 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

46、");fw=fopen("out.dat","w"); read_dat(xx);max=xx0;for(i=1,k=0;i<N;i+)if(xxi>max) max=xxi; /* 求出数组 xx 中最大数 max*/ if(xxi%3=0 |xxi%7=0)j+=xxi; /* 求出数组 xx 中值能被 3 整除或能被 7 整除的数的总和 */ k+; for(i=0,cnt=0;i<N;i+) if(xxi=max) cnt+; /* 求出数组 xx 中最大数 max 的个数 */pj=(float)(j*100/k)/

47、100;/*求出数组xx中值能被3整除或能被7整除的数的平均值*/printf("nnmax=%d,cnt=%d,pj=%6.2fn",max,cnt,pj);fprintf(fw,"%dn%dn%6.2fn",max,cnt,pj);fclose(fw);【易错提示】 对数进行筛选时的逻辑表达式。ASCII19【考点分析】 本题考查对字符数组中字符计算和替换。考查的知识点主要包括:字符串数组的访问,字符 码的算术运算,if判断结构以及逻辑表达式。3 个关键点:关键点 1 如何对字符数组的元素【解题思路】 此题属于字符计算问题。分析题干要求,可以归纳出逐

48、个访问;关键点2如何根据给出的函数替代关系"f(p) = p*11mod256"对字符进行计算;关键点 3根据条件(本题为”小于等于 32 或对应的字符是大写字母 ")对计算结果进行判断,并分别对满足与不满足条件的情况进行处理。解此类题的一般思路为:首先通过字符串处理函数 strlen 获取字符串的长度,根据获得的长度使用下标法逐一对 字符数组的元素进行访问;然后按照题目给出的函数关系式直接对字符进行算术运算;最后通过if 判断结构和逻辑表达式判断计算结果是否满足条件,分别对两种情况进行处理。void encryChar()int i,j; /* 定义循环控制变量

49、 */int str; /*存储字符串的长度 */char ch; /* 存储当前取得的字符 */for(i=0;i<maxline;i+)/* 以行为单位获取字符 */ str=strlen(xxi);/* 求得当前行的字符串长度*/for(j=0;j<str;j+) ch=xxij *11%256;/* 依次取各行的所有字符 */if(ch<=32 | (ch>='A' && ch<='Z')/* 如果计算的值小于等于 32 或对应的字符是大写字母 */continue; /* 则不作改变 */elsexxij=

50、ch; /* 否则用新字符取代原有字符 */【易错提示】 根据函数替代关系对字符进行运算 ;if 判断结构中的逻辑表达式。20【考点分析】 本题考查对字符串中字符的替换。考查的知识点主要包括:字符串数组的访问,字符之间的比较 和替换, if 判断结构以及逻辑表达式。【解题思路】 此题属于字符替换题型,分析题干要求,可以归纳出 2 个关键点:关键点 1 如何实现对字符数组的 元素逐一访问;关键点 2如何根据条件 "把所有的小写字母改写成该字母的下一个字母 "对字符进行替换。 接着分析具 体的解决方法,首先通过字符串处理函数 strlen 获取字符串的长度,根据获得的长度使用下

51、标法对字符数组的元素逐 一访问,判断每个字符是否小写字符,直接将字符替换为其下一个字符,其中对于小写字母"z",要将其替换成小写字母"a",这些可以通过if判断结构和逻辑表达式来完成。void ConvertCharA(void)int i,j;/* 定义循环控制变量 */int str;/*存储字符串的长度 */for(i=0;i<maxline;i+)/* 以行为单位获取字符 */str=strlen(xxi); /* 求得当前行的字符串的长度 */for(j=0;j<str;j+)if(xxij>='a' &

52、;& xxij<='z') /* 如果是小写字母 */if(xxij='z')xxij='a'/*如果是小写字母z,则改写成字母a*/elsexxij+=1;/* 其他的小写字母则改写为该字母的下一个字母 */【易错提示】对字符数组进行逐元素访问;if判断语句中逻辑表达式。21【考点分析】本题考查对整数的筛选及数组排序。考查的知识点主要包括:C语言循环结构,逻辑表达式等。【解题思路】此题属于2位数的筛选题。分析题干要求,本题要求实现jsVal()函数的功能,归纳可以得出2个问题:问题1如何根据判断条件(数组a和b中相同下标位置的数必

53、须符合一个是偶数,另一个是奇数)筛选出满足条件的数,同时统计其个数 ,问题 2 如何将这些数按从小到大的书序排列。通过问题分析 ,得出解此题的思路为 :先根据题目中的条件筛选出满足条件的数并存入新的数组中,再对新数组进行排序。对于问题1通过if条件判断语句和逻辑表达式可以实现。问题2排序可以通过循环嵌套的起泡法实现。void jsVal()int i,j;/* 定义循环变量 */int temp;/* 用于存储排序中的中间变量 */for (i = 0;i <= MAX - 1;i+)/* 循环查找符合条件的元素 */if (ai % 2 = 0) && (bi % 2

54、!= 0) | (ai % 2 != 0) && (bi % 2 = 0)/* 判断数组 a 和 b 中相同下标位*/*ai 按二进制左移 8 位再加上 bi*/ /* 记录 c 中个数 */置的数是否符合一个是偶数,另一个是奇数ci = (ai<<8) + bi;cnt+;/*将C中的元素按从小到大顺序排列*/ for (i = 0;i < MAX - 1;i+) for (j = 0;j < MAX - i - 1; j+)if (cj > cj+1) temp = cj;【易错提示】22【考点分析】 式,数组排序算法。【解题思路】cj = cj + 1;cj+1 = temp;分解4位数算法的使用,对4位数筛选和排序时if结构中的逻辑表达式。本题考查对多个整数的筛选以及排序。考查的知识点主要包括:多位整数的分解算法,逻辑表达此题属于 4位数的筛选类题型。解此题需主要

温馨提示

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

最新文档

评论

0/150

提交评论