全国及四川二级C语言上机题目.doc

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全国及四川二级C语言上机题目

全国及四川二级C语言上机题目 第一套 一、填空题 请补充fun函数,fun函数的功能是求m的阶乘。 请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 # include stdio.h long fun(int m) { if(___1___) return (m*fun(___2___)); return ___3___; } main() { printf(8!=%ld\n,fun(8)); } 二、改错题 下列给定程序的功能是:读入一个整数n(2≤n≤5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出:2、617。 请修改程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 # include conio.h # include stdio.h /*******error*********/ Prime(int m); { int j,p; p=1; /*******error*********/ for(j=2;jm;j++) if!(m%j) { p=0; break; } return(p); } main() { int i,n; printf(\nplease enter an integer number between 2 and 5000:); scanf(%d,n); printf(\n\nThe prime factor(s) of %d is(are):,n); for(i=2;in;i++) if((!(n%i)) (Prime(i))) printf( %4d,,i); printf(\n); } 三、编程题 数组point中存放着m个人的成绩,请编写函数fun,它的功能是:返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。 例如,当point数组中的数据为50、60、65、70、75、80、88、90、95时,函数返回的人数应该是5,high中的数据应为75、80、88、90、95。 请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 # include conio.h # include stdio.h # include string.h int fun(int point[],int n,int high[]) { } main() { int j,m,high[9]; int point[9]={50,60,65,70,75,80, 88,90,95}; FILE *out; m=fun(point,9,high); printf(\nHigh the average point are :); out=fopen(outfile.dat,w); for(j=0;jm;j++) { printf(%d ,high[j]); fprintf(out,%d\n0,high[j]); } fclose(out); } 答案 一、填空题 【答案及难度指数】★★ (1)m1 (2)m-1 (3)1 【一起来审题】 (1)该程序功能是对阶乘的实现。其中,阶乘的计算公式定义为: 公式分为参数m是1和大于1的两种情况,例如,1的阶乘1!=1;5的阶乘5!=5×4×3×2×1。 (2)从已给部分源程序的main主函数开始入手,主函数执行printf输出语句,该语句调用自定义的fun函数,并将数值8传递给fun函数的m参数。其中fun函数就是对阶乘算法的实现。 (3)进入fun函数,根据前面的定义,它对阶乘算法的实现可以分为两种情况,一是当m1时,应该用什么程序来实现阶乘的计算;二是当m=1时,函数直接返回1即可。 【解题思路】 第一空:if(___1___)是要根据m的取值来判断使用何种阶乘的计算公式的。这里根据第2句递归调用语句,可知该语句是用来计算当m1时的阶乘。因此第一空if语句里面的条件应该是满足m1。所以,第一空应填m1。 第二空:return (m*fun(___2___))很显然是采用递归函数来实现阶乘的计算,所以,第二空应填m-1。 第三空:return ___3___该语句是要实现当m=1时的阶乘计算。所以,第三空应填1。 【主要考点】递归函数。 二、改错题 【答案及难度指数】★★ (1)Prime(int m) (2)if(!(m%j)) 【一起来审题】 (

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档