计算机二级C++78_第1页
计算机二级C++78_第2页
计算机二级C++78_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模拟计算机二级C+(机试)78一、改错题第1题:改错题 使用VC+6.0翻开考生文件夹下的源程序文件l.cpp,该程序运行时有错误,请补充程序中的丧失局部,使得程序运行。可以在修改处增加或者删除一条语句。本程序完成以下功能:(1) 获得输入的两个数字di,d2(d1=6,d2=1)。(2) 输出两个中较大的一个(输出6)。(3) 计算d1/d2如果d2等于0,返回-1(输出结果6) o 输出d1+d2的结果(输出结果 7)。(5) 输出d1+1的结果(输出结果7)。(6) 输出d2-1的结果(输出结果0) o注意:错误的语句在/*error*/的下面。修改该语句即可。 其他的语句不能修改。试题

2、程序:#include < iostream.h >void mai n()int d1 ;int d2 ;int d3 ;<< end1 ;严 error Tcout VV "please in put two nu mber:" cin>> d1 >> d2 ;d3=(d1(d2)?d1 : d2;cout VV "Max data is:" VV d3VV end1 ;/ 计算 d1/d2 如果 d2等于0,返回-1丿 error/d3=(d2)?d1d2 : -1 ;error*/cout VV &

3、quot;d1/d2=" VV d3VV end1 ; d3=(-d1)+(d2+);cout VV "d1+d2=" VV d3VV end1 ; cout VV "d1+1=" VV d1 V V end1 ; cout VV "d2-1=" VV d2VV end1 ; return ;参考答案:1、“ d3=(d1(d2)?d1 : d2; 应改为“ d3=(d1)d2)?d1 : d2; 。2、“d3=(d2)?d1d2 :-1 ;应改为“ d3=(d2)?d1/d2 :-1 ;。3 、“d3=(-d1)+(d2+

4、); 应改为“ d3=(d1+)+(d2-);或 d3=(+d1)+(-d2); 。详细解答:此题考查了考生对条件表达式和自增自减运算符了解的情况。d3应为 d1 和d2中较大者的值,所以“(d1(d2) 应改为“(di > d2) 。假设d2不为0, 应返回 d1/d2 的值,而不是 d1d2 。第 3 处应该输 d1+1d2-1 ,所以两者 的 +、- 应反过来。又因为 d3 应该是两者原值之和,所以 +、- 应 同时为后缀式或前缀形式。二、简单应用题第 2 题:简单应用题 使用 VC+6.0 翻开考生文件夹下的源程序文件 2.cpp 。请完成以下两个 函数。(1) fun1(int

5、 n) 求出 n 的阶乘,必须使用递归调用。(2) fun2(int n) 求出 n 的阶乘,不能使用递归调用。如果 n 小于 1 那么 返回 0。注意:不能修改函数的其他局部。试题程序:#include V iostream.h >/ 必须使用递归int fun1(int n)/ 不能使用递归int fun2(int n)void main()int i ;cout VV " 请输入一个整数 :" VV end1;cin >> i ;cout VV " 输入数字的阶乘是:" VV fun1(i) VV end1;cout VV &qu

6、ot; 输入数字的阶乘是:" VV fun2(i) VV end1;return ;参考答案: if(n < =0)return ; / if(n < =0)return 0 ;/ 必须使用递归 int fun1(int n) 0 ; if(n=1) n*fun1(n-1) ; return 1 ; return 不能使用递归 int fun2(int n)int res=1 ;for (int i=1 ; i < =n;i+)res*=ireturn res详细解答:此题考查的是递归函数和阶乘算法。递归的阶乘算法可以通过判断传入参数,如果大于1,那么返回n*fun

7、l(n-1),意思是返回n乘以n-1的阶乘;如果等于 1,那么返回1。这样递归下去就能最终得出n的阶乘。非递归算法可以先建立一个累乘变量,并初始化为 1,然后循环遍历1n,将遍历的数累乘到变量中即可。三、综合应用题第3题:综合应用题 使用VC+6.0翻开源程序文件3.cpp。其中类TC用于把文件输出到屏幕,然后 进行文件的分割。分割的方法如下:第一个文件的大小是文 件的前一半,另外一个文件的大小是剩余局部。此程序将in. txt文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件 out1.txt和 out2.txt 中。其中定义的类并不完整,按要求完成以下操作,将类的定义补充完 整。

8、(1) 从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结 尾,那么退出循环。请在注释1后添加适当的语句。(2) 把获得的输入文件的内容存储到buf中,并且用len记录下文件的长 度。请在注释2后添加适当的语句。(3) 将输入文件的后一半内容存储在第二个文件中,请在注释3后添加适当的语句。 使用文件流对象翻开输入文件in.txt,请在注释4后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不 要修改 其他的程序代码。试题程序:#include < iostream.h >#include < fstream.h >#include &l

9、t; stdlib.h >class TCpublic :TC(char *fileName)len=0 ;fstream in file ;infile.open(fileName , ios : in);char ch ;* 彳 *while()cout << ch ;*infile.close() ;void split()fstream outfile1;fstream outfile2;outfile1.open("out1.txt",ios :outfile2.open("out2.txt",ios :int i=0 ;fo

10、r(i=0 ;i V1en/2 ;i+)out) ;out) ;outfilel VV bufi;do*3* while(i!=len) ; outfile1.close() outfile2.close()private : int len ;void main()char buf1024 ;*TC obj() ; obj.split() ; return ; 参考答案:1、“ while() 应改为“ while(infile.get(oh) 。2、应添加“ buflen+=ch ;buflen=ch ;len+ ; 。3 、应添加“ outfile2(bufi+ ;或“ outfile2 VV bufi ;i+ ;。4 、“TCobj() ;应改为“ TC obj("in.txt") ;。详细解答:此题考查了文件流的使用。根据题意,第 1 处要获得一个字符,并 判断是否到文件结尾,所以应使用 get 函数;第 2 处应将 ch 存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论