1、国家二级 C+机试(操作题)模拟试卷 309及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有误,请改正其中的错误,使程序正常运行,并使程序在界面上输出为: 平均值为: 29 最大值为: 112 最小值为: -11 注意:错误的语句在 *error*的下面。修改该语句即可。 #include using namespace std; int main() int i, Ave, Min, Max; int data8=0, 112, 43, 78, -11, -6, 7, 9; Ave=0; for(i=0; iMin) Min=da
2、tai; cout int fun(int a, int n) Void main() int A=1, 2, 3, 4; cout class CMyTime private: *1* public: CMyTime(int year, int month) *2* void display() char yearChar3; char monthChar3; yearChar0= (m_year 100) 10+0; yearChar1= (m_year 10)+0; monthChar0 = (m_month 100) 10+0; monthChar1 = (m_month 10)+0;
3、 *3* coutMax)Max=datai; (3)if(dataiMax)Max=datai。 (3)同样如果数组该元素值比 Min小,则 Min取该元素值。因此,两个 if中条件判断错误,第 3标识处 “if(dataiMin)Min=datai”改成“if(datai0) return an-1+fun(a, n-1); 递归求 n项的和 return 0; 项数小于等于 0,返回求和值 0 【试题解析】 (1)如果要计算的项数小于等于 0,那么直接返回 0。 (2)否则调用递归语句 “an-1+fun(a, n-1)”,实现 0到第 n项的和。 三、综合应用题 3 【正确答案】 (1
4、)添加语句: int m year, m month; (2)添加语句: m year=year; m month=month; (3)添加语句: yearChar2 =0; monthChar2=0; (4)添加语句: m year+=m month 12;或 m year=m year+m month 12; 【试题解析】 (1)第 1个标识下添加 CMyTime的私有成员变量 m_year、m_month的声明,因此第 1个标识下应添加 “int m_year, m_month; ”。 (2)第 2个标识下完成类成员构造函数变量的初始化,即将参数分别赋值给m_year和 m_month,
5、因此第 2个标识下应添加 “m_year=year;m_month=month; ”。 (3)第 3个标识下准备输出 yearChar数组和 monthChar数组,字符数组的最后一个字符应该为 NULL(O),因此第 3个标识下应添加 “yearChar2=0;monthChar2=0; ”。 (4)m month和参数之和赋值给 m_month,其和可能超过 12,如果超过 12表示下一年了,因此 m_year应该加 1,故先判断 m_month是否比 12大,可取m_month 12和 m_year相加,如果 m_month没有超过 12则 m_month 12=0,反之则为 1,第 4标识下应添加 “m_year+=m_month 12;或m_year=m_year+m_month 12; ”。