阅读以下说明和C++程序,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
设计某IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元;销售员拿固定工资1000元,然后再按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的5‰。
按要求设计一个基类employee,销售员类salesman,经理类manager,销售经理类salesmanager.
程序5-1是类employee的模块内容,程序5-2是类salesman的类模块内容,程序5-3是类manager的模块内容,程序5-4是类salesmanager的模块内容。在主测试程序中,输入张三所管部门月销售量10000后的输出结果如下:
【程序5-1】
#include
#include
classemployee
{
protected:
intno;
char*name;
floatsalary;
public:
employee(intnum,char*ch)
{no=num;
name=ch;
salary=0;}
virtualvoidpay()=0;
virtualvoiddisplay()
{cout《"编号:"《no《endl;
cout《"本月工资:"《salary《endl;}
};
【程序5-2】
classsalesman:(1)
{
protected:
floatcommrate,sales;
public:
salesman(intnum,char*ch):employee(num,ch)
{commrate=0.04;}
voidpay()
{cout《name《"本月销售额:";
cin》sales;
salary=sales*commrate+1000;}
voiddisplay()
{cout《"销售员:"《name《endl;
employee::display();}
};
【程序5-3】
classmanager:(1)
{
protected:
floatmonthpay;
public:
manager(intnum,char*ch):employee(num,ch)
{monthpay=8000;}
voidpay()
{salary=monthpay;}
voiddisplay()
{cout《"经理:"《name《endl;
employee::display();}
};
【程序5-4】
classsalesmanager:(2)
{
public:
salesmanager(intnum,char*ch):(3)
{monthpay=5000;
commrate=0.005;}
voidpay()
{cout《name《"所管部门月销售量:";
cin》sales;
(4)}
voiddisplay()
{cout《"销售经理:"《name《endl;
(5)}
};
voidmain()//主测试函数
{salesmanagerp1(1001,"张三");
p1.pay();
p1.display();
}
第1题
阅读以下说明和C语言程序,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
魔方阵,又叫幻方,在我国古代称为"纵横图".由1…N2共N2个自然数构成每行、每列及两对角线上各数之和都相等的N×N方阵,这样的方阵就叫做N阶魔方阵。顾名思义,奇阶魔方阵就是N为奇数的幻方。
奇数阶魔方阵的生成方法如下:
(1)第一个位置在第一行正中。
(2)新位置应当处于最近一个插入位置右上方,但如果右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置;如果超出右边界,则新位置取应选行的最左一个位置。
(3)若最近一个插入元素为N的整数倍,则选下面一行同列上的位置为新位置。本题要求输入一个数据n,然后打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为:
816
357
492
了解其生成方法后,就可以根据此方法来写出程序了。首先设置int变量i,j,m,n.其中i标记魔方阵的行;j标记魔方阵的列;n表示魔方阵的维数,通过输入得到;通过m递加得到插入的数据。数组a[MAX][MAX]用于存放魔方阵元素。这里预定义了MAX的大小,没有采用动态分配,在此设置为15,即最大求得15×15阶魔方阵。
【程序】
#include
#defineMAX15
voidmain()
{
intn;
intm=1;
inti,j;
inta[MAX][MAX];
printf("Pleaseinputtherankofmatrix:");
scanf("%d",&n);
i=0;
(1)
while((2))
{
a[i][j]=m;
m++;
i--;
j++;
if((m-1)%n==0&&m>1)
{
(3)
j=j-1;
}
if(i<0)//超出上界
(4)
if(j>(n-1))//超出右边界
(5)
}
for(i=0;i
for(j=0;j
{
if(a[i][j]/10==0)
printf("%d",a[i][j]);//对程序无影响,只是使输出的数每一列对齐
else
printf("%d",a[i][j]);
if(j==(n-1))
printf("\n");
}
}
第2题
阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。
【说明】
二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:
●若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;
●若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;
●左、右子树本身就是二叉查找树。
设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:
typedefstructBiTnode{
intkey_value;/*结点的键值,为非负整数*/
structBiTnode*left,*right;/*结点的左、右子树指针*/
}*BSTree;
函数find_key(root,key)的功能是用递归方式在给定的二叉查找树(root指向根结点)中查找键值为key的结点并返回结点的指针;若找不到,则返回空指针。
【函数】
BSTreefind_key(BSTreeroot,intkey)
{
if((1))
returnNULL;
else
if(key==root->key_value)
return(2);
elseif(keykey_value)
return(3);
else
return(4);
}
【问题1】
请将函数find_key中应填入(1)~(4)处的字句写在答题纸的对应栏内。
【问题2】
若某二叉查找树中有n个结点,则查找一个给定关键字时,需要比较的结点个数取决于(5).
第3题
阅读以下说明和C函数将应填入(n)处的字句写在答题纸的对应栏内
【说明1】
函数Counter(intn,intw[])的功能是计算整数n的二进制表示形式中的1个数同时用数组w记录该二进制数中1所在位置的权。
例如十进制数22的二进制表示为10110.对于该二进制数,1的个数为3,在w[0]中存入2(即21)、w[1]中存入4(即22)w[2]存入16(即24)
【C函数1】
第4题
阅读以下说明和流程图将应填入(n)处的字句写在答题纸的对应栏内
【说明】
在一个矩阵中如果其零元素的个数远远多于其非零元素的个数时称这样的矩阵为稀疏矩阵稀疏矩阵通常采用三元组数组表示每个非零元素用一个三元组来表示即非零元素的行号列号和它的值然后按某种顺序将全部非零元素的三元组存于一个数组中例如对于以下二维数组
其中三元数组a的第行元素的值分别存储稀疏矩阵x的行数列数和非零元素的个数
下面的流程图描述了稀疏矩阵转换的过程
【流程图】
第5题
【题目描述】
问题1【我提交的答案】: |
【参考答案与解析】: 正确答案:D |
问题2【我提交的答案】: |
【参考答案与解析】: 正确答案:B |
【我的疑问】
为什么我的答案不对?求教
第6题
【题目描述】
【我提交的答案】: C |
【参考答案与解析】: 正确答案:A |
【我的疑问】
为什么我的答案不对?求教
第7题
ion video.
A.Multimedia
B.Database
C.File
D.Document
第8题
running client applications such as a browser.
A.modem
B.compression
C.hypertext
D.encode
第9题
以下关于子类和父类的叙述中,正确的是(69)。
A.代码中使用父类对象的地方,都可以使用子类对象替换
B.代码中使用子类对象的地方,都可以使用父类对象替换
C.父类定义的对象与子类定义的对象在属性和方法上一定相同
D.父类定义的对象与子类定义的对象在属性和方法上一定不同
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!