1、国家二级 C+机试(操作题)模拟试卷 373及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并且使程序输出的结果为: a=7, b=0 a=8, b=10 注意:错误的语句在 *error*的下面,修改该语句即可。 #include class CObj public: *error* friend void func(CObj, int, int); void di splay() *error* cout #define MAX N 10 int XXMAX NMAX N; int fun(
2、int n) void main() int n; do coutn; if(n=1) break; while(1); for(int i=0; iXXij; cout using namespace std; Class Date public: *3* void SetDate(int y, int m, int n); int IsLeapYear(); void Print() coutyear“一 ”month “一 ” day endl; private: *1* ; void Date: SetDate(int y, int m, int d) year=y; month=m;
3、 day=d; int Date: IsLeapYear() *2* return int main() Date datel, date2; datel SetDate(); date2 SetDate(2 00 4, 1 2, 1); cout“datel: ”; datel Print(); cout“date2: ”; date2 Pri nt(); *4* cout “date2 is”(“”: “not”)“a leapyear ”endl; retUrn 0; 国家二级 C+机试(操作题)模拟试卷 373答案与解析 一、基本操作题 1 【正确答案】 (1)添加语句: friend
4、 void func(CObj, int); (2)cout“a=”a“, b=”bendl; (3)CObj obj 1; 【试题解析】 程序中定义了类 CObj,其有两个成员变量 a和 b, 通过友元函数func()可改变 a和 b的值, display()成员函数显示 a和 b的值。 二、简单应用题 2 【正确答案】 int data=0; 初始化求平方和变量 for(int i=0; in; i+) data+=XXii*XXii; 求正对角线平方和 if(i!=ni一 1) data+=XXini1*XXini一 1;求逆对角线平方和 return data; 【试题解析】 本题函数
5、中的功能是输出 N行 N列正 方阵,然后求两条对角线上各元素之平方和。其中,假设矩阵行、列分别为 i、 j,那么对角线上的元素特点是主对角线上 i=j,以及逆对角线 j=n i一 1。 三、综合应用题 3 【正确答案】 (1)int year, month, day; (2)将 “return”补充完整为: return fyear 400=0)I f(year 4=0 &year 100 1=0); (3)将 “void SetDate(int y, int m, intn); ”补充完整为: void SetDate(inty=2004, int m=12, int n=1); (4)将 “cout“date2 is”(“”: “not”)“a leapyear ”end1; ”补充完整为:cout”date2 is”(date2 IsLeapYear()?”: “not”)”a leapyear ”end1; 【试题解析】 本题中程序的功能是判断 2004年是否为闰年。其中成员函数SetDate设置日期, IsLeapYear函数判断是否为闰年。在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐 个补全或修改。从己定源程序的 main主函数开始入手,可以看出程序通过调用类 Date和和其成员函数实现各种功能。