上机考试试题答案与解析
一、程序改错题
(1)应改为“Ave+=data[i];”或“Ave=Ave+data[i];”。
(2)应改为“if(data[i])Max)Max=data[i];”。
(3)应改为“if(data[i](Min)Min=data[i];”。
【解析】本题第一个for循环是求数组各个元素的和,逐次将每个元素值加起来,而程序当中是逐个赋值的,因此在第1标识处应将“Ave=data[i]”改成“Ave+=data[i]”或“AveAve+data[i]”。第2处根据题意再求数组当中元素的最大值和最小值,用变量Max记录最大值,Min记录最小值,在for循环中,逐次比较,如果该元素值比当前Max大,则Max取该元素值,因此第2标识处正确的语句应该是“if(data[i]>Max)Max=data[i]”。如果数组中该元素值比Min小,则Min取该元素值。因此,两个if语句中的条件判断错误,将第3标识处的语句“if(data[i]>Min)Min=data[i];”改成“if(data[i]
二、简单应用题
intre=0:
for(inti=0;i {
for(intj=0;j {
if(!isPrime(A[i][j]))//判断是否是素数,不是
素数则累加
{
re=re+A[i][j];
}
}
}
returnre:
【解析】矩阵A[NUM][NUM]是二维矩阵,sum函数的参数n给出了矩阵A的具体维数,因此矩阵A中共含有n×n个有效数。A[NUM][NUM]中的元素可表示为A[i][j],其中i表示元素所在行数,j表示元素所在的列数,i、j分别在0到n-1范围内变化,因此设置内外两层循环可逐个遍历整个矩阵寻找非质数。函数isPrime提供了判断质数的方法,对每个元素A[i][j],调用函数isPrime(A[i][j]),判断函数的返回值是否为假,如果为假,说明不是质数,应该累加起来。
三、综合应用题
(1)应添加“BA(intm){a=m;}”。
(2)应添加“PAl(intm,intn):BA(n){b=m;}”。
(3)应添力Ⅱ“PA2(intm,intn,intk):PAl(n,k){C=m;)”。
(4)应添加“cout< 【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA,在BA()中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故第1处的语句应添加“BA(intm){a=m;)”。根据第2处的要求,构造函数的形式为“PAl(intm,intn)”,m赋值给PA1类成员b,将n作为基类BA构造函数的参数值传入,故第2处应添加“PA1(intm,intn):BA(n){b=m;}”。根据第3处的要求,函数形式为PA2(intm,intn,intk),在构造函数中将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n,因此第3处应添加“PA2(intm,intn,intk):PA1(n,k){C=m;}”。根据第4处的要求,PA2类公有派生于PA1,而PA1公有派生于BA,因此在PA2类中可以调用基类的geta()和getb()来获得基类私有成员a和b,再输出PA2的私有成员C即满足要求,因此第4处应添加“cout<
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |