【计算机类职业资格】二级C++机试-161及答案解析.doc

上传人:花仙子 文档编号:1324340 上传时间:2019-10-17 格式:DOC 页数:7 大小:35KB
下载 相关 举报
【计算机类职业资格】二级C++机试-161及答案解析.doc_第1页
第1页 / 共7页
【计算机类职业资格】二级C++机试-161及答案解析.doc_第2页
第2页 / 共7页
【计算机类职业资格】二级C++机试-161及答案解析.doc_第3页
第3页 / 共7页
【计算机类职业资格】二级C++机试-161及答案解析.doc_第4页
第4页 / 共7页
【计算机类职业资格】二级C++机试-161及答案解析.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、二级 C+机试-161 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,该程序运行时有错误,请补充程序中的丢失部分,使得程序运行。可以在修改处增加或者删除一条语句。本程序完成以下功能:(1)获得输入的两个数字 d1,d2(d1=6,d2=1)。(2)输出两个中较大的一个(输出 6)。(3)计算 d1/d2 如果 d2 等于 0,返回-1(输出结果 6)。(4)输出 d1+d2 的结果(输出结果 7)。(5)输出 d1+1 的结果(输出结果 7)。(6)输出 d2-1 的结果(输出结果

2、 0)。注意:错误的语句在/*error*/的下面。修改该语句即可。其他的语句不能修改。试题程序:#includeiostream.hvoid main()int d1;int d2;int d3;cout“please input two number:“end1;cind1d2;/*error*/d3=(d1(d2)?d1:d2;cout“Max data is:“d3end1;/计算 d1/d2 如果 d2 等于 0,返回-1/*error*/d3=(d2)?d1/d2:-1;cout“d1/d2=“d3end1;/*error*/d3=(-d1)+(d2+);cout“d1+d2=“d

3、3end1;cout“d1+1=“d1end1;cout“d2-1=“d2end1;return;(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。请完成以下两个函数。(1)fun1(int n)求出 n 的阶乘,必须使用递归调用。(2)fun2(int n)求出 n 的阶乘,不能使用递归调用。如果 n 小于 1 则返回 0。注意:不能修改函数的其他部分。试题程序:#includeiostream.h/必须使用递归int fun1(int n)/不能使用递归int fu

4、n2(int n)void main()int i;cout“请输入一个整数:“end1;cini;cout“输入数字的阶乘是:“fun1(i)end1;cout“输入数字的阶乘是:“fun2(i)end1;return;(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)使用 VC+6.0 打开源程序文件 3.cpp。其中类 TC 用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将 in.txt 文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件 out1.txt 和 out2.txt

5、中。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环。请在注释 1 后添加适当的语句。(2)把获得的输入文件的内容存储到 buf 中,并且用 len 记录下文件的长度。请在注释 2 后添加适当的语句。(3)将输入文件的后一半内容存储在第二个文件中,请在注释 3 后添加适当的语句。(4)使用文件流对象打开输入文件 in.txt,请在注释 4 后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:#includeiostream.h#includefs

6、tream.h#includestdlib.hclass TCpublic:TC(char *fileName)len=0;fstream infile;infile.open(fileName,ios:in);char ch;/*1*while()coutch;/*2*infile.close();void split()fstream outfile1;fstream outfile2;outfile1.open(“out1.txt“,ios:out);outfile2.open(“out2.txt“,ios:out);int i=0;for(i=0;i1en/2;i+)outfile1b

7、ufi;do/*3*while(i!=len);outfile1.close();outfile2.close();private:int len;char buf1024;void main()/*4*TC obj();obj.split();return;(分数:30.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_二级 C+机试-161 答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,该程序运行时有错误,请补充程序中的丢失部分,使得程序运行。可以在修改处增加或者删除

8、一条语句。本程序完成以下功能:(1)获得输入的两个数字 d1,d2(d1=6,d2=1)。(2)输出两个中较大的一个(输出 6)。(3)计算 d1/d2 如果 d2 等于 0,返回-1(输出结果 6)。(4)输出 d1+d2 的结果(输出结果 7)。(5)输出 d1+1 的结果(输出结果 7)。(6)输出 d2-1 的结果(输出结果 0)。注意:错误的语句在/*error*/的下面。修改该语句即可。其他的语句不能修改。试题程序:#includeiostream.hvoid main()int d1;int d2;int d3;cout“please input two number:“end1

9、;cind1d2;/*error*/d3=(d1(d2)?d1:d2;cout“Max data is:“d3end1;/计算 d1/d2 如果 d2 等于 0,返回-1/*error*/d3=(d2)?d1/d2:-1;cout“d1/d2=“d3end1;/*error*/d3=(-d1)+(d2+);cout“d1+d2=“d3end1;cout“d1+1=“d1end1;cout“d2-1=“d2end1;return;(分数:30.00)填空项 1:_ (正确答案:“d3=(d1(d2)?d1:d2;”应改为“d3=(d1)d2)?d1:d2;”。)解析:填空项 1:_ (正确答案:

10、“d3=(d2)?d1/d2:-1;”应改为“d3=(d2)?d1/d2:-1;”。)解析:填空项 1:_ (正确答案:“d3=(-d1)+(d2+);”应改为“d3=(d1+)+(d2-);或d3=(+d1)+(-d2);”。)解析:解析 本题考查了考生对条件表达式和自增自减运算符了解的情况。d3 应为 d1 和 d2 中较大者的值,所以“(d1(d2)”应改为“(d1d2)”。若 d2 不为 0,应返回 d1/d2 的值,而不是 d1/d2。第 3 处应该输 d1+1d2-1,所以两者的+、-应反过来。又因为 d3 应该是两者原值之和,所以+、-应同时为后缀式或前缀形式。二、2简单应用题(

11、总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。请完成以下两个函数。(1)fun1(int n)求出 n 的阶乘,必须使用递归调用。(2)fun2(int n)求出 n 的阶乘,不能使用递归调用。如果 n 小于 1 则返回 0。注意:不能修改函数的其他部分。试题程序:#includeiostream.h/必须使用递归int fun1(int n)/不能使用递归int fun2(int n)void main()int i;cout“请输入一个整数:“end1;cini;cout“输入数字的阶乘是:“fun1(i)end1;cout“输入数字的阶乘

12、是:“fun2(i)end1;return;(分数:40.00)_正确答案:(/必须使用递归int fun1(int n)if(n=0)return 0;if(n=1)return 1;return n*fun1(n-1);/不能使用递归int fun2(int n)if(n=0)return 0;int res=1;for(int i=1;i=n;i+)res*=i;return res;)解析:解析 本题考查的是递归函数和阶乘算法。递归的阶乘算法可以通过判断传入参数,如果大于1,则返回 n*funl(n-1),意思是返回 n 乘以 n-1 的阶乘;如果等于 1,则返回 1。这样递归下去就能

13、最终得出 n 的阶乘。非递归算法可以先建立一个累乘变量,并初始化为 1,然后循环遍历 1n,将遍历的数累乘到变量中即可。三、3综合应用题(总题数:1,分数:30.00)使用 VC+6.0 打开源程序文件 3.cpp。其中类 TC 用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将 in.txt 文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件 out1.txt 和 out2.txt 中。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)从输入文件中获得一个字符,并判断是否到文件结尾,如果

14、到文件结尾,则退出循环。请在注释 1 后添加适当的语句。(2)把获得的输入文件的内容存储到 buf 中,并且用 len 记录下文件的长度。请在注释 2 后添加适当的语句。(3)将输入文件的后一半内容存储在第二个文件中,请在注释 3 后添加适当的语句。(4)使用文件流对象打开输入文件 in.txt,请在注释 4 后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:#includeiostream.h#includefstream.h#includestdlib.hclass TCpublic:TC(char *fileName)len=0;

15、fstream infile;infile.open(fileName,ios:in);char ch;/*1*while()coutch;/*2*infile.close();void split()fstream outfile1;fstream outfile2;outfile1.open(“out1.txt“,ios:out);outfile2.open(“out2.txt“,ios:out);int i=0;for(i=0;i1en/2;i+)outfile1bufi;do/*3*while(i!=len);outfile1.close();outfile2.close();priv

16、ate:int len;char buf1024;void main()/*4*TC obj();obj.split();return;(分数:30.00)填空项 1:_ (正确答案:“while()”应改为“while(infile.get(oh)”。)解析:填空项 1:_ (正确答案:应添加“buflen+=ch;buflen=ch;len+;”。)解析:填空项 1:_ (正确答案:应添加“outfile2(bufi+;”或“outfile2bufi;i+;”。)解析:填空项 1:_ (正确答案:“TC obj();”应改为“TC obj(“in.txt“);”。)解析:解析 本题考查了文件流的使用。根据题意,第 1 处要获得一个字符,并判断是否到文件结尾,所以应使用 get 函数;第 2 处应将 ch 存入 bur 数组,同时让 len 增 1;第 3 处将 buf 中的字节输出给outfile2,注意同时让 i 增 1,否则 while 循环将进入死循环;第 4 处 TC 只有一个带 char*参数的构造函数,所以创建对象时必须使用构造参数,根据题意这个参数应该是“in.txt“”。

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

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

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