- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、【考点分析】 本题考查对4位整数的排序。考查的知识点主要包括:数组元素的排序算法,if判断语句和逻辑表达式,以及求余算术运算。【解题思路】此题属于4位数排序问题。本题需主要解决3个问题:问题1如何取4位数的后3位进行比较;问题2如何按照题目要求的条件(按照每个数的后3位的大小进行降序排列,如果后3位相等,则按照原始4位数的大小进行升序排列)排序;问题3如何将排完序的前10个数存到数组bb中去。本题的解题思路为:使用双循环对数组按条件进行排序,然后将排完序的前10个数存到数组bb中。对于问题1可以通过算术运算的取余运算实现(aa[i]%1000);问题2通过包含if判断语句的起泡排序法就可以实现。【参考答案】 void jsSort(){ int i,j;/*定义循环控制变量*/int temp;/*定义数据交换时的暂存变量*/for(i=0;i199;i++)/*用选择法对数组进行排序*/for(j=i+1;j200;j++){ if(aa[i]%1000aa[j]%1000) /*按照每个数的后3位大小进行降序排序*/ {temp=aa[i];aa[i]=aa[j];aa[j]=temp; } else if(aa[i]%1000==aa[j]%1000) /*如果后3位数相等*/ if(aa[i]aa[j]) /*则要按原4位数的值进行升序排序*/ {temp=aa[i];aa[i]=aa[j];aa[j]=temp; }} for(i=0;i10;i++)/*将排序后的前10个数存入数组b中*/bb[i]=aa[i];}【易错提示】取4位数后三位的算法,if判断语句中逻辑表达式的比较运算符。2、【考点分析】本题主要考查的知识点包括:C语言循环结构,if判断语句和逻辑表达式,以及分解多位整数的算术运算。【解题思路】分析题干,本题除给出条件SIX+SIX+SIX = NINE+NINE之外,还可得出2个隐含的条件:条件1:SIX和NINE分别是3位和4位的正整数;条件2: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;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==n3n2==n4){cnt++;sum+=i+j;}}} }}【易错提示】隐含条件未被分析出或分析错误,整数数位分解的算术方法使用错误。3、【考点分析】本题考查的知识点包括:C语言中文件读函数,if条件判断结构,对多个整数求平均值和方差的算法等。【解题思路】此题属于数学类问题。分析题干要求,得出解本题主要需解决3个问题:问题1如何实现从已打开的文件中依次读取数据到数组的操作,问题2如何分离并统计出奇数和偶数的个数及和值,并计算平均值;问题3如何计算奇数的方差。本题的解题思路为:首先使用C语言的库函数fscanf()将文件中的数依次读入数组xx中,然后通过循环判断得出需要的数据(奇数个数、偶数个数、奇数及偶数的和);最后根据题目中已给出的公式和之前保存的数据计算出奇数的方差。【参考答案】int ReadDat(void){ FILE *fp;if((fp=fopen(IN.DAT,r))==NULL) return 1;int i,j;/*计数器变量*/for(i=0;i100;i++) /*依次读取整型数据放入数组xx中*/{for(j=0;j10;j++)fscanf(fp,%d,,xx[i*10+j]);fscanf(fp,\n); if(feof(fp)) break; /*文件读取结束,则退出*/}fclose(fp);return 0;}void Compute(void){ int i; /*定义循环控制变量*/int tt[MAX]; /*定义数组保存奇数*/for(i=0;i1000;i++) {if(xx[i]%2!=0) { odd++;/*计算出xx中奇数的个数odd*/ ave1+=xx[i]; /*求奇数的和*/ tt[odd-1]=xx[i]; /*将奇数存入数组tt中
文档评论(0)