[计算机类试卷]国家二级(C++)机试模拟试卷46及答案与解析.doc

上传人:王申宇 文档编号:502495 上传时间:2018-11-29 格式:DOC 页数:6 大小:31KB
下载 相关 举报
[计算机类试卷]国家二级(C++)机试模拟试卷46及答案与解析.doc_第1页
第1页 / 共6页
[计算机类试卷]国家二级(C++)机试模拟试卷46及答案与解析.doc_第2页
第2页 / 共6页
[计算机类试卷]国家二级(C++)机试模拟试卷46及答案与解析.doc_第3页
第3页 / 共6页
[计算机类试卷]国家二级(C++)机试模拟试卷46及答案与解析.doc_第4页
第4页 / 共6页
[计算机类试卷]国家二级(C++)机试模拟试卷46及答案与解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、国家二级( C+)机试模拟试卷 46及答案与解析 一、程序改错题( 30分) 1 使用 VC6打开考生文件夹下的工程 test32_1,此工程包含一个源程序文件test32_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为: Added Result for this C+tutorial: 3 源程序文件 test32_1.cpp清单如下: /* found */ #include iostream class CPP_Tutorial int private_data; /* found */ class friendclass; public: CPP_Tutor

2、ial() private_data = 5; ; class friendclass public: int subtractfrom(int x) CPP_Tutorial var2; /* found */ return var2 - x; ; void main() friendclass var3; cout “Added Result for this C+ tutorial: “ var3.subtractfrom(2)end1; 二、简单应用题( 40分) 2 请编写一个函数 fun(),它的功能是计算并输出给定整数 n的所有因子 (不包括 1与自身 )之和 (规定 n的值不大

3、于 1000)。 例如:输入 n的值为 856,则输出为 sum=763。 注意:部分源程序已存在文件 test33_2.cpp中。 请勿修改主函数 main和其他函数中的任何内容,仅在函数 count的花括号中填写若干语句。 文件 test33_2.cpp清单如下: #include stdio. h #include iostream. h int fun(int n) void main ( ) int n, sum; cout “Input n:“ end1; cin n; sum=fun (n); cout “ sum= n“ sum end1; 三、综合应用题( 30分) 3 使用

4、 VC6打开考生文件夹下的工程 test31_3。此工程包含一个 test31_3.cpp,其中定义了可以动态分配的字符串类,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义类 tstring的私有数据成员 length和 p,它们分别是血型的数据和字符型的指针,其中 length表示一个字符串的长度。请在注释 “/*1*”之后添加适当的语句。 (2)完成类 tstring的构造函数,使 length等于字符串 m的长度,并申请 由指针 p指向的 length长的字符型空间,将 m所指的字符串复制到该空间。请在注释“/*2*”之后添加适当的语句。 (3)完成类 tstr

5、ing的成员函数 strcopy(tstringn)的定义,该函数将对象 n的值 (包括字符串长度和字符串本身 )复制给调用该函数的对象 (对象 n的字符串长度任意 )。请在注释 “/*3*”之后添加适当的语句。 (4)完成类 tstring的友元函数 strlink(tstring m,tstring n)的定义,该函数将可动态分配的字符串类对象 m和 n的字符串成员连接在 一起 (对象 m和 n的字符串长度任意 ),并返回该串。请在注释 “/*4*”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 程序输出结果如下: hello the world! 源程

6、序文件 test31_3.cpp清单如下: #include iostream.h #include conio.h #include string.h class tstring public: /* 1 * tstring(char *m) /* 2 * strcpy(p,m); void strcopy(tstring n); friend char *strlink(tstring m,tstring n); ; void tstring:strcopy(tstring n) /* 3 * char *q; q=new charlength; strcpy(q,tstring:p);

7、q=strcat(tstring:p,n.p); tstring:p=q; tstring:length=strlen(tstring:p); char *strlink(tstring m, tstring n) int length=strlen(m.p)+strlen(n.p); char *p; /* 4 * strcpy(p,m.p); p=strcat(p,n.p); return p; void main ( ) tstring a(“hello “); tstring b(“the world“); tstring c(“!“); a.strcopy(b); cout strl

8、ink(a,c) end1; 国家二级( C+)机试模拟试卷 46答案与解析 一、程序改错题( 30分) 1 【正确答案】 (1) 错误: ginclude iostream 正确: #include iostream.h (2) 错误: class friendclass; 正确: friend class friendclass; (3) 错误: return var2-x; 正确; return var2.private_data-x; 【试题解析】 (1)主要考查考生是否理解头文件的概念,在 C+中可以把已经定义好的或者系统自带的类定义引入自建的工程中,其方式就是通过使用头文件,把要引

9、入的结构放在头文件 (.h结尾的 )中,在自建工程的开头使用 #include加入即可,不过应该使用头文件的全名,题目中错误的丢掉了扩展名 .h; (2)主要考查考生是否掌握了友元类的定义,友元类是声明在一个类内的新的类,友元类的所有成员都可以访问原来类的所有成员,所以友元类破坏了程序 的封装性,不过只有友元类和友元函数能够直接访问所在类的私有成员,题目中的类 friendclass将要访问所在类的私有成员,所以应该被定义成友元类; (3)主要考查考生对于对象和对象成员操作的掌握, var2是类 CPP_Tutorial的对象,它不能直接和数据成员操作,应该使用对象访问成员的操作符 “.”操作

10、它的数据成员 private_data和 x进行操作。 二、简单应用题( 40分) 2 【正确答案】 int fun(int n) int s=0,i; for(i=2;i =n-1;i+) if (n%i=0) s+=i; return s; 【试题解析】 本题的解题思路是用 n逐个去除以 2到 n-1之间的所有数,如果 n能被除尽,则把所得到的一个因子累加到 s中去。此种题型为典型考题。 三、综合应用题( 30分) 3 【正确答案】 (1) int length; char *p; (2) length=strlen(m); p=new charlength; (3) int length=strlen(tstung:p)+strlen(n.p); (4) p=new charlength; 【试题解析】 本题是对类与字符串常用函数的综合考查。字符串常用函数strcpy、 strcat和 strlen的调用格式和调用限制是需要熟练掌握的。程序中通过申请新的空间和改变指针指向解决了原有字符串函数 strcpy的目标字符串空间必须足够大的问题。根据实际情况利用以有类建立新类的能力是需要培养的。

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

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

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