问答题【说明】在VisualBasic程序中,设计一个“个人所得税计算器”,其应用程序的运行窗口如图6-16所示。窗口中的3个文本框和两个按钮的名称分别为Txt_salary、Txt_base、TxL_tax、Cmd_compute和Cmd_quit。“个人所得税计算器”程序运行时,文本框Txt_base中存放的是免税金额基数(应扣除的基本费用)。当用户在文本框Txt_salary中输入月收入(工资或薪金)并单击【计算】按钮(Cmd_compute后,Txt_tax框中就显示计算所得的应纳税额。文本框Txt_base和Txt_tax在运行时不接受用户输入,Txt_base的内容以灰色显示。个人工资(或薪金)所得税是按照超额累进的税率来征收的,其计算方法如下:以每月收入总额减去免税金额基数后的余额作为该月的月应纳税所得额,再将应纳税所得额按相应级数采用相应的税率进行累进计算。目前的免税金额基数为1600元,税率如表6-15所示。表6-15个人所得税税率表(工资、薪金所得适用)级 数全月应纳税所得额税率(%) 1 不超过500元的 5 2 超过500元至2000元的部分 10 3 超过2000元至5000元的部分 15 4 超过5000元至20000元的部分 20 5 超过20000元至40000元的部分 25 6 超过40000元至60000元的部分 30 7 超过60000元至80000元的部分 35 8 超过80000元至100000元的部分 40 9 超过100000元的部分 45(注:本表所称全月应纳税所得额是指依照本法第六条的规定,以每月收入额减除费用1600元后的余额或者减除附加减除费用后的余额)设某个人的全月应纳税所得额为M(元),用下面的公式计算其应缴纳的个人所得税额S(元):若0<M≤500,则S=M×5%;若500<M≤2000,则S=500×5%+(M-500)×10%;若2000<M≤5000,则S=500×5%+1500×10%+(M-2000)×15%;若5000<M≤20000,则S=500×5%+1500×10%+3000×15%+(M-5000)×20%;假设某程序员2008年5月份工资总额为4700元,减去1600元后,应纳税所得额为3100元,其应缴纳的个人所得税额为500×5%+1500×10%+1100×15%=340元。在开发过程中,需要编写的程序代码如下。【VisualBask程序】OptionBase0PrivateSubCmdcompute-Click()Dimpaylevel,taxPratepaylevel=Array(0,500,2000,5000,20000,40000,60000,80000,100000,1000001taxPrate=Array(5,10,15,20,25,30,35,40,45)M=(1)S=0If(M>0)ThenForj=1To9If(2)Thens=s+(paylevel(j)-paylevel(j-1))*taxPrate(j-1)/100Else(3)ExitForEndifNextjEndif(4)=Str$(S)EndSubPrivateSubCmd_quit_Click()EndEndSubPrivateSubForm_Load()Txt_tax.Text=""Txt_salary.Text=""Txt_base.Text=1600Txt_tax.Locked=TrueTxt_base.Enabled=(5)EndSub
问答题【说明】
下面C程序代码的功能是:对于输入的一个正整数n(100≤n<1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将n与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278不是回文数,其反序数为872,相加后得到的1150还不是回文数,再将1150与其反序数511相加,得到的1661是回文数。
函数int isPalm(long m)的功能是:将正整数m的各位数字取出存入数组中,然后判断其是否为回文数。若m是回文数则返回1,否则返回0。
【C程序代码】
#include <stdio.h>
#include <stdlib.h>
int isPalm(long m)
{ /*判断m是否为回文数*/
int i = 0, k = 0;
char str[32];
while (m > 0) { /*从个位数开始逐个取出m的各位数字并存入字符数组str*/
str[k++] = {{U}}(1) {{/U}} + '0';
m = m / 10;
}
for(i = 0; i < k/2; i++) /*判断str中的k个数字字符序列是否是回文*/
if ( str[i] != str[{{U}} (2) {{/U}}] ) return 0;
return 1;
}
int main ( )
{
long n, a, t;
printf("input a positive integer:"); scanf("%ld",
if (n < 100 || n > =1000) return -1 ;
while({{U}} (3) {{/U}}) { /*n不是回文数时执行循环*/
printf("%ld-> ", n);
for(a = 0, t = n; t > 0; ) { /*计算n的反序数并存入a*/
a = {{U}}(4) {{/U}}*10 + t % 10; t = t / 10;
} /*end of for*/
n ={{U}} (5) {{/U}}; /*与反序数求和*/
} /*end of while*/
printf ("%id/n",n);
system("pause"); return 0;
}
问答题试题五(共15分)阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。[说明]下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图5-1所示的8个点中,点(1,1)与(2,0.5)是间距最近的点对。[C++代码]
问答题[说明]本程序实现的功能是查看磁盘上的图片及其基本信息。程序运行界面如下图所示,用户只要逐步选择适当的驱动器、目录和图片文件,图片内容随即显示在界面中央,文件的基本信息则呈现于右侧文本框中。用户还可以删除或复制选中的图片文件。在开发过程中,驱动器列表框名为Drivel,目录列表框名为Dir1,文件列表框名为File1,图片的显示由Image控件对象Image1来实现,文件信息文本框名为Text1,按钮“删除文件”和“复制到…”分别名为CmdDel和CmdCpy。[VisualBasic代码]DimfilenameAsStringDimfsoAsNew{{U}}(1){{/U}},fileAsfilePrivateSubForm_Load()Setfso=CreateObject("Scripting.FileSystemObject")Drivel.Drive="F:"EndSubPrivateSubDir1_Change()File1.path=Dirl.path’更新文件列表框的路径EndSubPrivateSubDrive1_Change()Dir1.path={{U}}(2){{/U}}’更新目录列表框的路径EndSubPrivateSubFile1_Click()’文件列表框的单击事件响应代码IfRight(Dir1.path,1)<>"/"Thenfilename=Dir1.path&"/"&Filel.filenameElsefilename=Dir1.path&Filel.filenameEndIfImage1.Picture={{U}}(3){{/U}}Setfile=fso.GetFile(filename)Text1.Text="文件名称:"&file.Name&vbCrLf&_"文件大小:"&file.Size&"字节"&vbCrLf&_"文件类型:"&file.Type&vbCrLf&_"创建日期:"&file.DateCreated&vbCrLf&_"修改日期:"&file.DateLastModifiedEndSubPrivateSubCmdCpy_Chck()’按钮“复制到…”的单击事件响应代码DimpathAsStringpath=InputBox("请输入目标路径(含文件名):"){{U}}(4){{/U}}EndSubPrivateSubCmdDel_Click()’按钮“删除文件”的单击事件响应代码{{U}}(5){{/U}}EndSub
问答题[说明]某订单管理系统的部分UML类图如图3-21所示。图3-21某订单管理系统的部分分类图在图3-21中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,OrdeItem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。各个类的部分属性和方法说明如表3-16所示。表3-16某订单管理系统各个类的部分属性和方法说明表类成员说明ProductListArrayListproductsProductStringcode产品编号Stringdescription产品描述doubleprice产品单价Booleanequals(Objectobject)若两个产品相同则返回true,否则返回falseOrderItemProductproduct订单项中的产品intquantity产品的订购数量ProductgetProduct()获取订单项中的产品OrderArrayList(OrderItem)items订单中饮食的订单项OrderListArrayList(Order)Orders订单voidaddOrder(OrderOrder)向订单列表中添加新订单intgetNumberOfOrders()获取订单列表中的订单总数SalesSystemProductListcatalog产品目录OrderListsales订单列表voidstatistic()依次统计产品目录中每个产品的订购总量,并打印出每个产品的编号、说明、订购总量和订购金额可以使用类java.util.ArrayList<E>来实现对象的聚集关系,如图3-21所示OrderList与Order之间的聚集关系。For...each循环提供了一种遍历对象集合的简单方法。在for...each循环中,可以指定需要遍历的对象集合及用来接收集合中每个元素的变量,其语法如下:for(用来接收集合中元素的变量:需要遍历的对象集合)如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口java.util.Iterable<T>。[Java程序7-1]和[Java程序7-2]分别给出了类OrderList和方法statistic的Java代码。[Java程序7-1]importjava.util.*.publicclassOrderList(1)privateArrayList<Order>orders;publicOrderList()this.orders=newArrayList(Order)"();publicvoidaddOrder(Orderorder)this.orders,add(order);publicIterator<Order>iterator()return(2);publicintgetNumberOfOrders()returnthis.orders,size();[Java程序7-2]importjava.util.*;publicclassSalesSystemprivateProductListcatalog;privateOrderListsales;privatestaticPrintWriterstdOut=newPrintWriter(System.out,true);publicvoidstatistic()for(Productproduct:(3)intnumber=0;for(Orderorder:(4)for((5):order)if<product.ecluals(item.getProduct()))number+=item.getQuantity();stdOut.println(product.getCode()+""+product.getDescription()+""+number+""+number*product.getPrice());//其余的方法未列出
问答题[说明] 本程序包含的函数及其功能说明如下: (1)函数first_insert()的功能是在已知链表的首表元之前插入一个指定值的表元; (2)函数reverse_copy()的功能是按已知链表复制出一个新链表,但新链表的表元链接顺序与 已知链表的表元链接顺序相反; (3)函数Print_link()用来输出链表中各表元的值; (4)函数free_link()用来释放链表全部表元空间。[程序] #include <stdio. h >#include <malloe. h >typodef struct node int val; struct node * next; NODE;void first_insert(NODE * * p,int v) NODE *q = (NODE *) malloe(sizeof(NODE)); q->val = v; q->next = *p; /* 为新表元赋值*/ * p = (1) ; NODE * reverse_copy( NODE * p) NODE * u; for(u=NULL; p!=NULL; p=p->next) first_insert( (2) ); return u; void printlink(NODE * p ) for(; (3) ) prinff("%d/t", p->val); printf(" /n");void free_link( NODE * p) NODE * u; while(p! =NULL) u=p->next;free(p); (4) ; void main( ) NODE * link1 , * link2; int i; link1 = NULL; for(i=1; i<= 10; i+ + )first_insert( link2 = reverse_copy(link1 ); (5) ; free_link( linkl ) ;free_link(link2);
问答题试题七(15分)阅读以下应用说明以及用VisualBasic编写的程序代码,将应填入(n)处的字句写在答题纸的对应栏内。[应用说明]本应用程序的运行窗口中将显示一个简单的模拟时钟如下:该圆形钟面上有时针、分针和秒针在运动,不断显示系统的当前时间。在开发该应用时,首先建立一个圆形Shape控件作为钟面(背景为白色)。设圆心为象素坐标(X0,Y0),半径为940。再在圆心处建立一个小的实心圆Shape控件作为轴心。钟面上的刻度3,6,9,12为四个标签。时针、分针、秒针(红色)为线型控件,名称分别为LineH、LineM、LineS,线宽属性值分别为:3,2,1,线长属性值分别为500,700,900。这三个线型控件的起点坐标都固定在(X0,Y0),其终点坐标随转角θ而动态变化:设置定时器Timer1使该时钟能反映系统的当前时间,其定时间隔为0.5秒,该定时器的Interval属性值应设置为(1)。每隔0.5秒,秒针需要调整位置,但分针和时针只是在初始显示时以及在每次秒计数为0时才需要调整位置(可节省计算量)。[程序代码]ConstPi=3.1416ConstX0=1750ConstY0=1150ConstLH=500,LM=700,LS=900PublicfirstAsBooleanPrivateSubForm_Load()LineS.X1=X0'秒针的起点位置LineS.Y1=Y0LineM.X1=X0'分针的起点位置LineM.Y1=Y0LineH.X1=X0'时针的起点位置LineH.Y1=Y0first=TrueEndSubPrivateSubTimer1_Timer()S=Second(Time)S_seta=Pi*(2)'秒针的转角LineS.X2=X0+LS*Sin(S_seta)'秒针的终点位置LineS.Y2=Y0-LS*Cos(S_seta)If((3))ThenM=Minute(Time)LineM.X2=X0+LM*Sin(Pi*M/30)'分针的终点位置LineM.Y2=Y0-LM*Cos(Pi*M/30)H=Hour(Time)If(H>=12)ThenH=H-12H_seta=Pi*((4))'时针的转角LineH.X2=X0+LH*Sin(H_seta)'时针的终点位置LineH.Y2=Y0-LH*Cos(H_seta)first=(5)EndIfEndSub
问答题[说明]某银行新近开通外汇定期存款业务。为方便用户查询不同存款方式下的日利率、计算本利,特开发了日利率查询及本利计算程序,其运行窗口如下图所示。用户只要在界面上选择相应的存款方式(包括外汇币种、存期等),便可单击按钮一查询存款日利率。若输入一定数量的本金。程序还会根据所选择的存期计算并输出本利和。在开发过程中,选择币种和存期的组合框(ComboBox)名分别为Combo1和Combo2,单旋钮(CommandButton)“个人单位”和“金融机构”分别名为Option1和Option2,用于输入本金的文本框(TextBox)名为Price,“输出日利率”和“计算本利和”按钮(CommandButton)分别名为Command1和Command2。且已知,第i类币种、第j类存期之下,个人单位与金融机构的存款日利率分别存放于数组元素interestRate(i,j,0)和interestRate(i,j,1)中,其中i,j从0开始计数。[VisualBasic代码]DiminterestBate(50,10,2)AsSingle’通用声明PrivateSubForm_Load()……’为数组interestRate赋初值EndSub’根据所选择的币种、存期等信息确定日利率FunctiongetInterestRate()DimstrCurrency,strTimeAsString,i,j,k,intDaysAsIntegerstrCurrency=Combo1.TextstrTime=Combo2.TextFori=0ToCombol.ListCount-1IfCombol.List(i)=strCurrencyThen{{U}}(1){{/U}}NextForj=0ToCombo2.ListCount-1IfCombo2.List(j)=strTimeThen{{U}}(1){{/U}}NextIf{{U}}(2){{/U}}=TrueThenk=0Else:k=1EndIf{{U}}(3){{/U}}=interestRate(i,j,k)EndFunction’输出日利率PrivateSubCommund1_Click()MsgBox"日利率为"&getInterestRate()EndSub’输出本利和PrivateSubCommand2_Click()DimstrTimeAsString,intDaysAsInteger,sngCorpus,sngResultAsSinglestrTime=Combo2.TextsngCorpus=CSng(Text1.Text){{U}}(4){{/U}}’计算存款天数(以每月30天计)Case"一个月":intDays=30Case"三个月":intDays=90Case"六个月":intDays=120EndSelect’计算并输出本利和sngResult=sngCorpus+{{U}}(5){{/U}}MsgBox"本利之和为:"&sngResultEndSub
问答题【说明】已知对某载客车辆(Car)进行类建模,如图7-1所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。【Java代码】classBody{//此处代码省略);//车身类classPassenger{//此处代码省略)///乘客类classWheel{//此处代码省略);//车轮类classDriver{//司机类publicStringname;//表示第几路公交车司机publicDriver(StringdriverName){name=driverName/)//构造函数};classEngine{//引擎类publicStringengineNo;//引擎编号publicEngine(StringengineNo){this.engineNo=engineNo;)//构造函数};publicclassCar{//汽车类staticfinalint{{U}}(1){{/U}}=7;//定义最多载客数staticfinalintMAXWHEELS =5;//定义最多轮胎数protectedEngineengine;protectedDriverdriver;protectedBodybody=newBody();protectedWheel[]wheels;protectedPassenger[]passengers;publicCar(Driverdriver){//构造函数{{U}}(2){{/U}}.driver=driver;engine=newEngine("TX6536型号引擎");wheels=newWheel[MAXWHEELS];passengers=newPassenger[MAX_PASSENGERS];for(intindex=0;index<MAX_WHEELS;index++){wheels[index]=newWheel();}for(intindex=0;index<MAX_PASSENGERS;index++){passengers[index]=null;}}intgetPassengerNumber(){//获取车上乘客数量//此处代码省略}voidgetOnPassenger(PassengeraPassenger){//乘客上车//此处代码省略}voidrun(){//开车if({{U}}(3){{/U}}){System.out.println("司机尚未上车!");return;}//此处代码省略}publicstaticvoidmain(Stringargs[]){Driverdriver=newDriver("第五路公交车司机");Carcar=newCar({{U}}(4){{/U}});for(intindex=0;index<MAX_PASSENGERS;index++)car.getOnPassenger({{U}}(5){{/U}}Passenger());car.run();}}
问答题阅读以下说明和C++代码,将应填入{{U}} (n) {{/U}}处的字句写在答题纸的对应栏内。
{{B}}[{{/B}}说明{{B}}]{{/B}}
已知类LinkedList表示列表类,该类具有四个方法:addElement()、lastElement()、 numberOfElement()以及removeLastElement()。四个方法的含义分别为:
void addElement(Object):在列表尾部添加一个对象;
Object lastElement():返回列表尾部对象;
int numberOfElement():返回列表中对象个数;
void removeLastElement():删除列表尾部的对象。
现需要借助LinkedList来实现一个Stack栈类,C++代码1和C++代码2分别采用继承和组合的方式实现。
{{B}}[{{/B}}C++代码1{{B}}]{{/B}}
class Stack :public LinkedList {
public :
void push (Object o) {addElement (o); }; //压栈
Object peek() {return{{U}} (1) {{/U}};}; //获取栈顶元素
bool i sEmpty (){ //判断栈是否为空
return numberOfElement ( ) == 0;
);
Object pop () { //弹栈
Object o = lastElement();
{{U}} (2) {{/U}};
return o;
};
};
{{B}}[{{/B}}C++代码2{{B}}]{{/B}}
class Stack {
private:
{{U}} (3) {{/U}};
public:
void push (Object o) { //压栈
list. addElement (o);
};
Object peek() { //获取栈顶元素
return list.{{U}} (4) {{/U}};
};
bool isEmpty () { //判断栈是否为空
return list. numberOfElement ( ) = = 0;
Object pop() { //弹栈
Object o = list. lastElement ();
list. removeLastElement ( );
return o; };
}
{{B}}[{{/B}}问题{{B}}]{{/B}}
若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第 index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)?{{U}} (5) {{/U}}(A.继承 B.组合)
问答题(5)
问答题[说明]
下面的程序利用递归算法计算x和y的最大公约数。
[函数2.1]
main ( )
{ int x,y,k,t;
scanf(" % d% d" ,
if(x>y) { t=x;x=y; y=t;}
{{U}} (1) {{/U}};
while(k! =0){
y=x;
{{U}}(2) {{/U}};
k=y%x;
}
prinff( "% d" ,x); }
[函数2.2说明]
函数fun(char *str,char *substr的功能是计算子串sugbstr在串str中出现的次数。
[函数2.2]
fun(ehar * str, char * substr)
{ int x,y,z;
{{U}}(3) {{/U}};
for(x=0;str[ x] ! = '/O';x + + )
for(y=x,z=0;sabstr[z] = =str[y];{{U}} (4) {{/U}},y+ +)
if( (5) = ='/0') {
num + +;
break;
}
return(num);
}
问答题[说明]
本程序中预设了若干个用户名和口令。用户输入正确的用户名后,可以查找对应的口令,一旦输入结束标记“end”,程序结束。
[C++程序]
#include <iostream. h>
#include <string. h>
class User
{ protected:
char user[10];
char pass[7];
public:
User(char[ ],char[]);
{{U}}(1) {{/U}}{return user;}
{{U}}(2) {{/U}}{return pass;}
};
User::User(char u[],char p[])
{ strcpy(user,u);
strcpy(pass,p); }
void main()
{ User ua[]={User("Li","123456"),User("wang","654321"),User("Song","666666")
char name[10];
while(1)
cout< < "输入用户名:";
cin> >name;
if({{U}} (3) {{/U}}= =0) break;
for(int i=0;i<3;i+ +)
if(strcmp(name,ua[i].getuser()) = =0){
cout< <"密码:" < < ua[i].getpass() < <endl;
{{U}}(4) {{/U}};
if({{U}} (5) {{/U}})cout< <"该用户不存在!" < <endl;
}
}
问答题[函数2.1说明] 下面程序的功能是:将由键盘输入的某个十进制数转换成对应的R进制数并输出。这里R是 2到16的整数,由键盘输入。例如,输入n=128,base=13后的输出为9B。[函数2.1]#include <stdio.h>main() char b[16]='0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'; int c[64],n,i=0,base; printf("Enter a number:");scaaf("%d", printf("Enter new base:");scanf("%d", doc[i]= (1) ; i++; n=n/base; while( (2) ); printf("Transmit new base:"); for(- -i;i>=0;- -i)printf("%c", (3) );[函数2.2说明] 所谓回文字符中是指正序和逆序拼写相同的字符串,例如astrtsa,adgdtdgda等。下面函数int fun(char *str)的功能是判断字符串str是否是回文,当字符串是回文时,函数返回1,否则返回0。[函数2.2]int fun(char *str) int i,j,l; for(i=0;str[i]! ='/0';i++); l=i/2; for(j=0,i- -;j<=1; (4) ) if( (5) ) return 0; return 1;
问答题【说明】
给定函数fun的功能是:将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用“.”结束输入。
【函数】
int fun(char *c,int status)
{
if({{U}} (1) {{/U}}=='')
return 1;
else
{
if({{U}} (2) {{/U}}
return 0;
}
}
main()
{
int flag=1;
char ch;
printf("请输入一字符串,用点号结束输入!/n");
do {
ch=getchar();
flag=fun(
putchar(ch);
}while(ch!='.');
printf("/n");
}
问答题[说明]下面的流程图描述了计算自然数1到N(N≥1)之和的过程。[流程图][问题1]将流程图中的(1)~(3)处补充完整。[问题2]为使流程图能计算并输出1*3+2*4+…+N*(N+2)的值,A框内应填写(4);为使流程图能计算并输出不大于N的全体奇数之和,B框内应填写(5)。
问答题【说明】主窗口有一个按钮、一个文本框和一个复选框,初始时窗口大小不能调整,选中复选框后窗口大小可以调整,如果撤销复选框的选择,则窗口的大小又不能调整,如下图所示。【Java代码】importjava.awt.*;importjava.awt.event.*;classMyFrameextendsFrameimplementsItemListener,ActionListenerCheckboxbox;TextAreatext;Buttonbutton;MyFrame((1))super(s);box=newCheckbox("设置窗口是否可调整大小");text=newTextArea(12,12);button=(2)("关闭窗口");button.addActionListener(this);box.addltemListener(this);setBounds(100,100,200,300);setVisible(true);add(text,BorderLayout.CENTER);add(box,BorderLayout.SOUTH);add(button,BorderLayout.NORTH);setResizable((3));validate();publicvoiditemStateChanged(ItemEvente)if(box.getState()==true)setResizable(true);elsesetResizable(false);publicvoidactionPerformed(ActionEvente)(4);classsimplepublicstaticvoidmain(Stringargs[])(5)("simple");
问答题[说明] 本程序的功能是给公司的员工Tom,Jack,Green增加薪水。三人的职位分别是programmer, Manager,CEO。 程序由6个类组成:WorkerTest是主类,programmer,Manager,CEO三个类,薪水增加的规则是 programmer的涨幅是5%;Manager的是10%;CEO也是Manager,但是它除了有Manager的涨幅,还有1000元的bonus。接口SalaryRaise提供了一个增加薪水的方法raise()。[java程序] public class WorkerTest public WorkerTest( ) public static void main( String[] args) Programmer programmer = new Programmer( "Tom" ,3000); Manager manager = new Manager( "Jack" ,4000); CEO ceo = new CEO( "Green" ,4000); Worker [] worker = new Worker[3]; programmer, raise( ); manager, raise( ); ceo. raise( ); worker[0] = programmer; worker [1] = manager; worker[2] = ceo; for ( int i = 0 ;i < worker, length; i + + ) System. out. prinfln (" Name:" + worker [i]. getName ( ) +" / tSalary:" + worker [i]. getSalary ());public interface SalaryRaise void raise( ); public class Worker public String name; public double (1) ; public Worker( ) public String getName( ) return name; public void setName( String name) this. name = name; public double getSalary( ) return salary; public void setSalary(double salary) this. salary = salary; public class Programmer extends Worker implements (2) public Programmer( ) public void raise( ) double pets=0.05; double sala = this. getSalary( ) * (1 + pers); this. setSalary (sala); public Programmer( Siring name, double salary) t this. name = name; this. salary = salary;public class Manager extends (3) implements SalaryRaise public Manager( ) public Manager(String name, double salary) this. name = name; this. salary = salary; public void raise( ) double pets = 0.1; double sala = this. getSalary() * (1 + pers); this. setSalary(sala); public class CEO extends Manager implements SalaryRaise public CEO() public CEO( String name,double salary) this. name = name; this. salary = salary; public void raise( ) double bonus = 1000; (4) ; double sala = this. getSalary( ); (5) ; this. setSalary(sala);
问答题阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]函数GetListElemPtr(LinkListL,inti)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。函数DelListElem(LinkListL,inti,ElemType*e)的功能是删除含头结点单链表的第i个元素结点,若成功则返回SUCCESS,并由参数e带回被删除元素的值,否则返回ERROR。例如,某含头结点单链表L如下图(a)所示,删除第3个元素结点后的单链表如下图(b)所示。#defineSUCCESS0#defineERROR-1typedefintStatus;typedefintElemType;链表的结点类型定义如下:typedefstructNode{ElemTypedata;structNode*next;}Node,*LinkList;[C代码]LinkListGetListElemPtr(LinkListL,inti){/*L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点;若找到,则返回该元素结点的指针,否则返回NULL*/LinkListp;intk;/*用于元素结点计数*/if(i<1||!L||!L->next)returnNULL;k=1;p=L->next;/*令p指向第1个元素所在结点*/while(p++k;}returnp;}StatusDelListElem(LinkListL,inti,ElemType*e){/*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/LinkListp,q;/*令P指向第i个元素的前驱结点*/if(i==1)______;elsep=GetListElemPtr(L,i-1);if(!P||!p->next)returnERROR;/*不存在第i个元素*/q=______;/*令q指向待删除的结点*/p->next=q->next;//从链表中删除结点*/______;/*通过参数e带回被删除结点的数据*/free(q);returnSUCCESS;}
问答题【说明】设学生(学生数少于50人)某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点“.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组B[50]中。【流程图】