问答题【说明】
源程序文件vectorClass.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整,并给出输出结果。
1.补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为 0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。
2.完成类vector的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员b和a。
3.完成类vector的友元函数friend double Multiply(vector
int b;
public:
vector({{U}} (1) {{/U}}): {{U}}(2) {{/U}}
{
}
void input(int x, int y)
{ {{U}}(3) {{/U}}
}
void output( )
{
cout<<'('<<a<<','<<b<<")" <<endl;
}
friend double Multiply(vector
};
double Multiply(vector
{{U}} (4) {{/U}}
return c;
}
void main( )
{
vector x(10,20),y;
double d;
y. input(2,3)
d=Multiply(x,y);
cout<<d<<endl;
}
程序输出结果是:{{U}} (5) {{/U}}。
问答题【说明】
本程序根据输入的月份数,输出它是哪个季节。
【代码】
import java.io.*;
public class season
{
public static void main(String[] args)
{
String strln="";
{{U}} (1) {{/U}}in=new InputStreamReader(System.in);
BufferedReader buffln=new BufferedReader(in);
System.out.print("Please enter a month(1-12):");
try
{
strln=buffln.readLine();//从命令行读入数据
}catch({{U}} (2) {{/U}})
{
System.out.println(e.toStdng());
}
int month={{U}} (3) {{/U}}(strln);//将字符串转换成整数型
int season=0;
if(month<12 //计算季节的公式
{{U}} (4) {{/U}}(season)
{
case 1:
System.out.println("the season is Springl");
break;
case 2:
System.out.println("the season is Summer!");
case 3:
System.out.println("the season is Fall!");
case 4:
System.out.println("the season is Winter!");
break;
{{U}} (5) {{/U}};
System.out.println("this is not correct month!");
}
}
}
问答题【说明】主窗口有一个按钮、一个文本框和一个复选框,初始时窗口大小不能调整,选中复选框后窗口大小可以调整,如果撤销复选框的选择,则窗口的大小又不能调整,如下图所示。【Java代码】importjava.awt.*;importjava.awt.event.*;classMyFrameextendsFrameimplementsItemListener,ActionListener{Checkboxbox;TextAreatext;Buttonbutton;MyFrame({{U}}(1){{/U}}){super(s);box=newCheckbox("设置窗口是否可调整大小");text=newTextArea(12,12);button={{U}}(2){{/U}}("关闭窗口");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({{U}}(3){{/U}});validate();}publicvoiditemStateChanged(ItemEvente){if(box.getState()==true){setResizable(true);}else{setResizable(false);}}publicvoidactionPerformed(ActionEvente){{{U}}(4){{/U}};}}classsimple{publicstaticvoidmain(Stringargs[]){{{U}}(5){{/U}}("simple");}}
问答题
问答题【说明】 将一正整数序列K1,K2,…,K9重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。 在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。 例:序列6,8,9,1,2,5,4,7,3 经重排后成为3,4,5,2,1,6,8,9,7 【函数】 #include < stdio. h > #include < conio. h > void jsValue( int a [10] [9] ) int i,j,k,n,temp; int b[9]; for(i=0;i<10;i++) temp=a[i] [0]; k=8;n=0; for(j=8;j=0;j--) if(temp < a[i] [j]) (1) =a[i][j]; if(temp >a[i] [j]) (2) =a[i][j]; if(temp =a[i] [j]) (3) = temp; for(j=0;j<9;j++) a[i][j] =b[j]; void main( ) int a[10] [9] = 6,8,9,1,2,5,4,7,3,3,5,8,9,1,2,6,4,7, 8,2,1,9,3,5,4,6,7, 3,5,1,2,9,8,6,7,4, 4,7,8,9,1,2,5,3,6, 4,7,3,5,1,2,6,8,9, 9,1,3,5,8,6,2,4,7, 2,6,1,9,8,3,5,7,4, 5,3,7,9,1,8,2,6,4, 7,1,3,2,5,8,9,4,6 ; int i,j; (4) ; for(i=0;i<10;i++) for(j=0;j<9;j++) printf("%d",a[i] [j] ); if( (5) )printf(","); printf(" /n" ); getch( );
问答题[说明] 循环队列的类型定义如下(其中队列元素的数据类型为datatype):typedef struct datatype data[MAXSIZE]; /*数据的存储区*/ int front,rear; /*队首、队尾指针*/ int num; /*队列中元素的个数*/c _ SeQueue; /*循环队*/ 下面函数及其功能说明如下: (1) c_SeQueue* Init_SeQueue():新建队列; (2) int ln_SeQueue( c_SeQueue *q, datatype x):将元素x插入队列q,若成功返回1否则返回0; (3) int Out_SeQueue (c_SeQueue *q, datatype *x):取出队列q队首位置的元素,若成功返回1否则返回0。[函数]c_SeQueue* Init_SeQueue() q=malloc(sizeof(c_SeQueue)); q->front=q->rear=MAXSIZE-1; (1) ; return q;int In_SeQueue( c_SeQueue *q, datatype x) if(q->num= =MAXSIZE) return 0; /*队满不能入队*/ else q->rear= (2) ; q->data[q->rear]=x; (3) ; return 1; /*入队完成*/ int Out_SeQueue( c_SeQueue *q, datatype *x) if (q->num= =0) return 0; /*队空不能出队*/ else *x= (4) ; /*读出队首元素*/ q->front= (5) ; q->num- -; return 1; /*出队完成*/
问答题[说明]为实现图书的国际统一编码,便于实现计算机化的图书管理,每本正式出版的图书都印有国际标准书号。标准书号由“ISBN”、10个数字(0-9)组成,其格式如下。ISBN组号-出版者号-书名号-校验码其中,校验码是根据前面9个数字计算得到的,用于计算机自动校验。假设标准书号的10个数字依次是a(1),a(2),…,a(10),则校验码a(10)的设置应使S=1O*a(1)+9*a(2)+8*a(3)+…+1*a(10)能被11整除。如果校验码a(10)应设置成10,则规定以“X”表示之。例如,《软件设计师考试考前冲刺预测卷及考点解析》的标准书号为:ISBN7-121-05027-5。第1段上的数字“7”是国际ISBN中心分配给中国ISBN中心管理的组号;第2段上的“121”表示电子工业出版社。标准书号的校验过程如图3-16所示,计算校验码的过程如图3-17所示。其中,Mod(S,11)表示S除以11得到的余数。图3-16标准书号的校验过程图3-17计算校验码的过程1.[问题1]请根据标准书号校验码的说明,将图3-16和图3-17程序流程图中(1)-(4)空缺处的内容填补完整。
问答题[C++代码]
问答题试题五(共15分)阅读下列说明、C++代码和运行结果填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。[说明]很多依托扑克牌进行的游戏都要先洗牌。下面的C++程序运行时先生成一副扑克牌,洗牌后再按顺序打印每张牌的点数和花色。[C++代码]
问答题[说明] 函数DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int key 2,int len)的功能是,将线性表A中关键码为key 1的节点开始的len个节点,按原顺序移至线性表B中关键码为key 2的节点之前。若移动成功,则返回0;否则返回-1。 线性表的存储结构为带头节点的单链表,La为表A的头指针,Lb为表B的头指针。单链表节点的类型定义如下。 typedef struct node int key; struct node*next; *LinkedList; [C程序] int DelA_InsB (LinkedLiSt La, LinkedList Lb, int key1,int key2,int len LinkedList p, q, S, prep, pres; int k; if (!La ->next || !Lb ->next || len<=0) return-l; p = La->next; prep = La; while (p p = p->next; if (!p) return -1; /* 表A中不存在键值为key1的节点 */ q = p; k = 1; while (q k++; if (!q) return -1; /* 表A中不存在要被删除的len个节点 */ S = Lb ->next; (3) ; while (s s = e->next; if (!s) return -1; /* 表B中不存在键值为key2的节点 */ (4) q->next; /* 将表A中的len个节点删除 */ q->next= (5) pres->next = p; /* 将len个节点移至表B */ return 0;
问答题【说明】
下面的程序构造一棵以二叉链表为存储结构的二叉树。
【函数】
BitTree *createbt(BitTree *bt)
{
BitTree *q;
struct node *s[30];
int j,i;
char x;
printf("i,x=");
scant("%d,%c",
while(i!=0 //生成一个结点
{{U}}(1) {{/U}};
q->lchild=NULL;
q->rchild=NULL;
{{U}}(2) {{/U}};
if ({{U}} (3) {{/U}})
{
j=i/2; // j为i的双亲结点
if(i%2==0)
{{U}}(4) {{/U}}; //i为j的左孩子
else
{{U}}(5) {{/U}}; //i为j的右孩子
}
printf("i,x=");
scanf("%d,%c",
}
return s[i];
}
问答题
问答题(以下试题六至试题八任选一题) 阅读下列说明和C++代码,请回答问题1至问题3。
【说明】 已知下列程序运行时的输出应为: 1:1
1:1 1:1【C++程序】 01 #include
<iostream> 02 using namespace std; 03
class Stock{ 04 protect: 05
{{U}} (1) {{/U}}{}; 06
Stock(iht n, int pr=1){ 07
shares = n; share_val=pr; 08
}; 09 void~Stock(){};
10 public: 11 //成员函数
12 void output(){ 13
{{U}}(2) {{/U}} << shares << ":" << share val
<< endl; 14 } 15
private: 16 //成员变量 17
int shares; 18 int
share_val; 19 }; 20 21
void main(){ 22 Stock a(1);
a.output(); 23
Stock b;
b.output(); 24 Stock c = Stock();
c.output(); 25 }
问答题【说明】某绘图系统定义了一个抽象类Ishape,现有3个类Cpoint,CLine和Ccircle,它们都具有IShape界面。相应的类图关系如图5-11所示。已知某第三方库已经提供了XCircle类,且完全满足CCircle图元显示时所需的功能。【VisualBasic代码6-1】是抽象类IShape类模块内容。【VisualBasic代码6-2】实现了类CCircle的IShape界面,并使用了XCircle提供的显示功能。XCircle提供的显示功能方法接口为displayIt。【VisualBasic代码6-1】PublieColorAsLongSubdraw()'方法体不包括可执行语句EndSubSubmove(stepxAsSingle,stepyAsSingle)'方法体不包括可执行语句EndSub【VisualBasic代码6-2】{{U}}(1){{/U}}PrivatecolorAsLong…'其他定义省略PrivateridgedAs{{U}}(2){{/U}}PrivateSubClass_Initialize()Setbridged={{U}}(3){{/U}}EndSubPrivateProperty{{U}}(4){{/U}}()AsLongIShape_Color=colorEndPropertyPrivateProperty{{U}}(5){{/U}}(ByValnewColorAsLong)Color=newColorEndPropertyPrivateSubIShape_draw()使用XCircle提供的显示功能{{U}}(6){{/U}}EndSubPrivateSubIShape_move(stepxAsSingle,stepyAsSingle)…'省略描述EndSub
问答题阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。[说明]下面流程图的功能是:在给定的两个字符串中查找最长的公共子串,输出该公共子串的长度L及其在各字符串中的起始位置(L=0时不存在公共字串)。例如,字符串“Thelightisnotbrighttonight”与“Tonightthelightisnotbright”的最长公共子串为“helightisnotbright”,长度为22,起始位置分别为2和10。设A[1:M]表示由M个字符A[1],A[2],…,A[M]依次组成的字符串;B[1:N]表示由N个字符B[1],B[2],…,B[N]依次组成的字符串,M≥N≥1。本流程图采用的算法是:从最大可能的公共子串长度值开始逐步递减,在A、B字符串中查找是否存在长度为L的公共子串,即在A、B字符串中分别顺序取出长度为L的子串后,调用过程判断两个长度为L的指定字符串是否完全相同(该过程的流程略)。[流程图]
问答题请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1和问题2。【说明】传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种,事件与其相应的状态转换如图6-18所示。下面的【C++代码1】与【C++代码2】分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。【C++代码1】constintCLOSED=1;constintOPENING=2;constintOPEN=3;constintCLOSING=4;constintSTAYOPEN=5;//定义状态变量,用不同整数表示不同状态classDoor{private:private:intstate;//传输门当前状态voidsetState(intstate){this->state=stale;}//设置当前状态public:Door():state(CLOSED){};voidgetState(){//根据当前状态输出相应的字符串switch(state){caseOPENING:cout<<"OPENING"<<endl;break;caseCLOSED:cout<<"CLOSED"<<endl;break;caseOPEN:cout<<"OPEN"<<endl;break;caseCLOSING:cout<<"CLOSING"<<endl;break;caseSTAYOPEN:cout<<"STAYOPEN"<<endl;break;}}voidclick(){//发生click事件时进行状态转换if({{U}}(1){{/U}})setState(OPENING);elseif({{U}}(2){{/U}})setState(CLOSING);elseif({{U}}(3){{/U}})setState(STAYOPEN);}voidtimeout(){//发生timeout事件时进行状态转换if(state==OPEN)setState(CLOSING);}voidcomplete(){//发生complete事件时进行状态转换if(state==OPENING)setState(OPEN);elseif(state==CLOSING)setState(CLOSED);}};intmain(){DooraDoor;aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete();aDoor.getState();aDoor.click();aDoor.getState();aDoor.click();aDoor.getState();return0;}【C++代码2】classDoor{public:DoorState*CLOSED,*OPENING,*OPEN,*CLOSING,*STAYOPEN,*state;Door();virtual~Door(){...//释放申请的内存,此处代码省略};voidsetState(DoorState*state){this->state=state;}voidgetState(){//例如,当前状态为CLOSED时,输出字符串为"CLOSED"};voidclick();voidtimeout();voidcomplete();};Door::Door(){CLOSED=newDoorClosed(this);OPENING=newDoorOpening(this);OPEN=newDoorOpen(this);CLOSING=newDoorClosing(this);STAYOPEN=newDoorStayOpen(this);state=CLOSED;}voidDoor::click(){{{U}}(4){{/U}};}voidDoor::timeout(){{{U}}(5){{/U}};}voidDoor::complete(){{{U}}(6){{/U}};}classDoorState{//定义一个抽象的状态,它是所有状态类的基类protected:Door*door;public:DoorState(Door*door){this->door=door;}virtual~DoorState(void);virtualvoidclick(){}virtualvoidcomplete(){}virtualvoidtimeout(){}};classDoorClosed:publicDoorState{//定义一个基本的closed状态public:DoorClosed(Door*door):DoorState(door){}virtual~DoorClosed(){}voidclick();};voidDoorClosed::click(){{{U}}(7){{/U}};}//其他状态类的定义与实现代码省略ihtmain(){DooraDoor;aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete();aDoor.getState();aDoor.timeout();aDoor.getState();return0;
问答题[C语言函数]
long change(int num)
{
ind,m=num;
long result mul;
if (num<=0||{{U}} (1) {{/U}} /*若num不大于0或num的位数大于4,则返回-1*/
retum-1;
mul=1;
{{U}}(2) {{/U}}
while(m>0){
d=m%10;
m={{U}} (3) {{/U}};
result=result+({{U}} (4) {{/U}}) *mul;
mul={{U}} (5) {{/U}};
}
return result;
}
问答题从下列3道试题(试题5至试题7)中任选1道解答。如果解答的试题数超过1道,则题号小的1道解答有效。阅读以下应用说明和VisualBasic程序,根据要求回答问题1问题2。【说明】某机动车驾驶员模拟考试系统的“交通禁令标志识别”窗体中,共有1个按钮(CmdTest)、6个标签、1个包含10个单选按钮的控件数组(OptPicture),如图2-15所示。其中,标签(LblPrompt1)“禁令标志”与标签(LblTest)相对应,标签(LblPrompt2)“图片答案”与标签(LblAnswer)相对应,标签(LblEvaluate)为结果提示。窗体(Frm001)对象和单选按钮控件数组(OptPicture)对象的部分属性及属性值如表2-15所示。{{B}}表2-15窗体、单选按钮控件数组的部分属性及属性值{{/B}}{{B}}对 象{{/B}}{{B}}属 性{{/B}}{{B}}属性值{{/B}}窗体(名称)Frm001Icon变通标识MaxButton(1)MinButton(2)单选按钮控件数组(名称)optPictureIndex(3)Style1-GraghicsPicture(装入相应图片)该程序运行时,单击【测试】按钮(CmdTest),在标签(LblTest)中随机显示一个交通禁令标志名称,用户单击控件数组(OptPicture)相应单选按钮后,程序在标签(LblAnswer)给出用户所击单选按钮对应的交通禁令标志名称,在标签(LblEvaluate)给出正确或错误的提示结果,如图2-15和图2-16所示。【VisualBasic程序】Dim{{U}}(4){{/U}}AsStringPrivateSubcmdTest_Click()DimiAsIntegerFori=0To9{{U}}(5){{/U}}NextilblPrompt2.Visible=FalselblAnswer.Visible=FalselblEvaluate.Visible=Falsei=Int(Rnd*10)lblTest.Caption=tname(i)EndSubPrivateSubForm_Load()DimiAsIntegerFori=0To9optPicture(i).Value=False{{U}}(6){{/U}}lblPrompt2.Visible=FalselblAnswer.Visible=FalselblEvaluate.Visible=Falsetname(0)="禁止向左向右转弯"tname(1)="禁止直行和向右转弯道"tname(2)="禁止直行和向左转弯"tname(3)="禁止驶入"tname(4)="禁止掉头"tname(5)="禁止车辆长时停放"tname(6)="禁止机动车通行"tname(7)="禁止非机动车通行"tname(8)="禁止超车"tname(9)="禁止车辆临时或长时停放"EndSubPrivateSuboptPicture_Click(IndexAsInteger)lblPrompt2.Visible=TruelblAnswer.Visible={{U}}(7){{/U}}lblEvaluate.Visible=TruelblAnswer.Caption={{U}}(8){{/U}}If{{U}}(9){{/U}}ThenlblEvaluate.ForeColor=vbRedlblEvaluate.Caption="恭喜你!回答正确!"ElselblEvaluate.ForeColor=vbBluelblEvaluate.Caption="很遗憾,回答错误。"EndIfEndSub
问答题阅读以下说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]在股票交易中,股票代理根据客户发出的股票操作指示进行股票的买卖操作。其类图如下图所示,相应的C++代码附后。类图[C++代码]#include<iostream>#include<string>#include<vector>usingnamespacestd;classStock{private:stringname;intquantity;public:Stock(stringname,intquantity){this->name=name;this->quantity=quantity;}voidbuy(){cout<<"[买进]股票名称:"<<name<<",数量:"<<quantity<<endl;}voidsell(){cout<<"[卖出]股票名称:"<<name<<",数量:"<<quantity<<endl;}};clasSorder{public:virtualvoidexecute()=0;};classBuyStock:______{private:Stock*stock;public:BuyStock(Stock*stock){______=stock;}voidexecute(){stock->buy();}};//类SellStock的实现与BuyStock类似,此处略classBroker{private:vector<Order*>orderList;public:voidtakeOrder(______order)(orderLiSt.pushback(order);}voidplaceorders(){for(inti=0;i<orderList.Size();i++){______->execute();}0rderLiSt.clear();}};classStockCommand{public:VOidmain(){Stock*aStock=newStock("股票A",10);Stock*bStock=newStock("股票B",20);Order*buyStockOrder=newBuyStock(aStock);Order*sellStockOrder=newSellStock(bStock);Broker*broker=newBroker();broker->takeOrder(buyStockorder);broker->takeOrder(sellStockOrder);broker->______();}};intmain(){StockCommand*stockCommand=newStockCommand();StockCommand->main();deleteStoCkCommand;}
问答题【说明】 编写程序,利用带参数的主函数main(),实现二进制文件的复制。比如,若该程序已生成可执行文件filebin.exe,在DOS操作系统命令状态下键入如下命令行: filebin f0.fil f1.fil 则实现将已存在的二进制文件f1.fil依原样复制给名为f0.fil的二进制文件。 【函数】 #include<stdio.h> void fcopy(FILE *fout, FILE *fin) char k; do k=fgetc( (1) ); if(feof(fin)) break; fputc( (2) ); while(1); void main(int argc,char *argv[]) FILE *fin,*fout; if(argc!= (3) ) return; if((fin=fopen(argv[2],"rb"))==NULL) return; fout= (4) ; fcopy( (5) ); fclose(fin); fclose(fout);
