考试试题答案与解析
一、程序改错题
(1)应改为“intmax(int&a,int&b)”。
(2)应改为“max(m,n);”。
【解析】
由题分析可知,max函数采用传送引用的方式来传递参数,因此第1处的语句应该为“intmax(int&a,int&b)”。调用max时,传递引用时直接使用变量名即可,第2处的语句应改为“max(m,n)”。
二、简单应用题
inti,j,k,t;
for(i=0;i(n-1;i++)
{
for(k=i,j=i+1;j if(A[k] 交换
k=j;
if(k!=i)//交换
{
t=AEi3;
A[i]=A[k];
A[k]=t;
}
【解析】以数组“A[]={3,8,7,6,5,0,1,2,9,4},,为例来说明具体的排序过程,第一次选择:第一步,从A[0]-A[9]中找最大值max及下标k,max=9,k=8;第二步,交换a[0]与最大值a[8]的值;第一次结束后a[0]已存放了最大值,下一次比较就不必再经过它了,而从a[1]开始,如此循环。从例中可以看出10个元素要进行9次比较,n个元素要进行n-1次比较。设置两层循环,外层循环变量i从0到n-1,内层循环变量从i开始到n-1,在内层循环中找最大值,如果最大值的下标k和i不同,则交换,实现选择法排序。在内层循环体内,如果最大值的下标k和i不同,则用一个临时变量记录第i个元素,然后将第k个元素赋值给第i个元素,临时变量值赋给第k个元素,如此完成两个元素的交换。
三、综合应用题
(1)应添加“#defineTRUE1”。
(2)应添加“classA1;”。
(3)应添加“friendboolfunc(A2&objl,Al&obj2);”。
(4)将“retllin”补充完整为“returnobjl.m_A2==TRUE&&obj2.m_A1==TRUE;”。
【解析】#define命令一般用一个指定的标识符(即宏
名)来代表一个字符串,其定义形式一般为“#define宏名(参数表)字符串”,因此第1处应添加“#defineTRUEl”。类声明格式为“class<类名>;”,故第2处应添加“class
A1;”。友元不是本类的成员函数,在它的函数体内可以通过对象名来访问类的私有成员和保护成员。友元函数是在类声明中由关键字friend修饰的非成员函数,第3处应添加“friendboolfune(A2&objl,Al&obj2);”。函数func返回变量m_A2和m_A1的逻辑与运算结果,因此第4处的语句应改为“returnobj1.m_A2==TRUE&&obj2.m_A1==TRUE;”。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |