- 1、本文档共97页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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))
【一起来审题】
(
您可能关注的文档
最近下载
- 2024年河北省继续医学教育公共必修课参考答案.docx VIP
- 2023年高考全国甲卷语文真题(含答案).pdf
- 2024年河北省继续医学教育公共必修课参考答案.pdf VIP
- 3.6 树和喜鹊.ppt VIP
- (四级)综合布线职业技能鉴定备考题库资料大全-上(单选题汇总).pdf
- 12J1 工程做法 天津市建筑标准设计图集(2012版).docx
- 高中化学必修1判断题(含答案).docx VIP
- 2023年中国石油大学(北京)公共课《毛泽东思想和中国特色社会主义理论体系概论》期末试卷B(有答案).docx VIP
- 慢性呼吸系统疾病防治行动实施方案(2023-2025年).pdf
- 2024幼儿园公开招聘简章(模板).pdf
文档评论(0)