【计算机类职业资格】二级C语言-288 (1)及答案解析.doc

上传人:sumcourage256 文档编号:1325137 上传时间:2019-10-17 格式:DOC 页数:4 大小:34KB
下载 相关 举报
【计算机类职业资格】二级C语言-288 (1)及答案解析.doc_第1页
第1页 / 共4页
【计算机类职业资格】二级C语言-288 (1)及答案解析.doc_第2页
第2页 / 共4页
【计算机类职业资格】二级C语言-288 (1)及答案解析.doc_第3页
第3页 / 共4页
【计算机类职业资格】二级C语言-288 (1)及答案解析.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、二级 C 语言-288 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 fun()函数,fun()函数的功能是求 n 的阶乘。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 fun()函数的横线上填入所编写的若干表达式或语句。试题程序: #includestdio.h long fun(int n) if( 1) return(n*fun( 2); return 3; void main() printf(“10!=%1d/n“, fun(10); (分数:30.00)二、程序改错题(总

2、题数:1,分数:40.00)2.下列给定程序中,函数 fun()的功能是:统计 substr 所指的字符串在 str 所指的字符串中出现的次数。例如,若字符串为 aaas 1kaaas,子字符串为 as,则应输出 2。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h int fun(char*str, char*substr) int i, j, k, num=0; /*found* for(i=0, stri, i+) for(j=i, k=0; substrk=strj; k+

3、 j+) /*found* If(substrk+1=“/0“) num+; break; return nnm; void main() char str80, substr80; printf(“Input a string:“); gets(str); printf(“Input a substring:“); gets (substr); printf(“%d/n“, fun(str, substr); (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.编写函数 fun(),其功能是:根据以下公式求的值(要求精度 0.0005,即某项小于 0.0005 时停止迭

4、代)。(分数:30.00)_二级 C 语言-288 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 fun()函数,fun()函数的功能是求 n 的阶乘。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 fun()函数的横线上填入所编写的若干表达式或语句。试题程序: #includestdio.h long fun(int n) if( 1) return(n*fun( 2); return 3; void main() printf(“10!=%1d/n“, fun(10); (分数:30

5、00)解析:n1 或 1n n-1 1 或 11 或 1L 解析 此题应用的是递归算法,因为10!=109!,9!=98!,8!=87!依此类推,而 1!=1,2!=21!=2,3!=32!=6,依此可以推出 10!,递推算法表示为: n!=1(n=1 或 n=0) n!=n*(n-1)(n1)二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 fun()的功能是:统计 substr 所指的字符串在 str 所指的字符串中出现的次数。例如,若字符串为 aaas 1kaaas,子字符串为 as,则应输出 2。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 ma

6、in()函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h int fun(char*str, char*substr) int i, j, k, num=0; /*found* for(i=0, stri, i+) for(j=i, k=0; substrk=strj; k+, j+) /*found* If(substrk+1=“/0“) num+; break; return nnm; void main() char str80, substr80; printf(“Input a string:“); gets(str); printf(“Inp

7、ut a substring:“); gets (substr); printf(“%d/n“, fun(str, substr); (分数:40.00)_正确答案:()解析:(1)错误:for(i=0, stri, i+) 正确:for(i=0; stri; i+) (2)错误:If(substrk+1=“/0“) 正确:if(substrk+1=“/0“) 解析 for 循环语句形式应为:for(表达式 1;表达式 2;表达式 3),表达式之间是分号;C 语言标识符区分大小写,所以条件句关键词 if 应小写。三、程序设计题(总题数:1,分数:30.00)3.编写函数 fun(),其功能是:

8、根据以下公式求的值(要求精度 0.0005,即某项小于 0.0005 时停止迭代)。(分数:30.00)_正确答案:()解析:double fun(double eps) double s=1.0, s1=1.0; Int n=1; while(s1=eps) /当某项大于精度要求时,继续求下一项 s1=s1*n/(2*n+1); /求多项式的每一项 s=s+s1; /累加求和 n+; return 2*s; 解析 此题考查的是用迭代法求多项式的值。通过观察题目中给出的数学公式可知,后面一项是前面一项乘以 n/(2*n+1),发现这个规律后,问题迎刃而解。通过定义 double 类型变量,并且赋初值,用来存放多项式的总和。此题中需要注意的是,表示每一项的 s1 和表示多项式之和的 s,两者的初值都是1.0。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1