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

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

1、二级 C+-86 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 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.h void main() int d1; int d2; int d3; cout“please input two number:“endl; cind1d2; /*error*/ d3=(d1d2)?d1:d2; cout“Max data is:“d3endl: /计算 d1/d2 如果 d2 等于 0,返回-1 /*error*/ d3=(d2)?d1/d2:-1; cout“d1/d2=“d3endl; /*error*/ d3=(-

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

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

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

6、#includeiostream.h #includefstream.h #includestdlib.h class TC public: TC(char * fileName) len=0; fstream infile; infile.open(fileName,ios:in); char ch; /*1* while() coutch: /*2* infile.dose(); void split() fstream outfile1; fstream outfile2; outfile1.open(“out1.txt“,ios:out); outfile2.open(“out2.tx

7、t“,ios:out); int i=0; for(i=0;ilen/2;i+) outfile1bufi; do /*3* while(i!=len); outfile1.close(); outfile2.close(); private: int len; char buf1024; ; void main() /*4* TC obj(); obj.split(); return; (分数:40.00)_二级 C+-86 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 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.h void main() int d

9、1; int d2; int d3; cout“please input two number:“endl; cind1d2; /*error*/ d3=(d1d2)?d1:d2; cout“Max data is:“d3endl: /计算 d1/d2 如果 d2 等于 0,返回-1 /*error*/ d3=(d2)?d1/d2:-1; cout“d1/d2=“d3endl; /*error*/ d3=(-d1)+(d2+); cout“d1+d2=“d3endl; cout“d1+1=“d1endl; cout“d2-1=“d2endl; return; (分数:30.00)_正确答案:(

10、)解析:(1)“d3=(d1d2)?d1:d2;”应改为“d3=(d1d2)?d1:d2;”。 (2)“d3=(d2)?d1/d2:-1;”应改为“d3=(d2)?d1/d2:-1;”。 (3)“d3=(-d1)+(d2+);”应改为“d3=(d1+)+(d2-);或 d3=(+d1)+(-d2);”。 答案考生文件夹 解析 本题考查了考生对条件表达式和自增自减运算符了解的情况。d3 应为 d1 和 d2中较大者的值,所以“(d1d2)”应改为“(d1d2)”。若 d2 不为 0,应返回 d1/d2 的值,而不是d1/d2。第 3 处应该输 d1+1 d2-1,所以两者的+、-应反过来。又因为

11、 d3 应该是两者原值之和,所以+、-应同时为后缀形式或前缀形式。二、简单应用题(总题数:1,分数:30.00)2.使用 VC+6.0 打开 下的源程序文件 2.cpp。请完成以下两个函数。 (1)funl(int n)求出 n 的阶乘,必须使用递归调用。 (2)fun2(int n)求出 n 的阶乘,不能使用递归调用。如果 n 小于 1 则返回 0。 注意:不能修改函数的其他部分。 试题程序: #includeiostream.h /必须使用递归 int funl(int n) /不能使用递归 int fun2(int n) void main() int i; cout“请输入一个整数:“

12、endl; cini; cout“输入数字的阶乘是:“funl(i)endl; cout“输入数字的阶乘是:“fun2(i)endl; return; (分数:30.00)_正确答案:()解析:/必须使用递归 int funl(int n) if(n=0) return 0; if(n=1) return 1; return n*funl(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; 答案考生文件夹 解析 本题考查的是递归函数和阶乘算法。

13、递归的阶乘算法可以通过判断传入参数,如果大于 1,则返回 n*funl(n-1),意思是返回 n 乘以 n-1 的阶乘;如果等于 1,则返回 1。这样递归下去就能最终得出 n 的阶乘。非递归算法可以先建立一个累乘变量,并初始化为 1,然后循环遍历 1n,将遍历的数累乘到变量中即可。三、综合应用题(总题数:1,分数:40.00)3.使用 VC+6.0 打开源程序文件 3.cpp。其中类 TC 用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将 in.txt 文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件

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

15、includeiostream.h #includefstream.h #includestdlib.h class TC public: TC(char * fileName) len=0; fstream infile; infile.open(fileName,ios:in); char ch; /*1* while() coutch: /*2* infile.dose(); void split() fstream outfile1; fstream outfile2; outfile1.open(“out1.txt“,ios:out); outfile2.open(“out2.txt

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

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

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

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