计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
程序员(初级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
问答题请认真阅读以下关于某传输系统的技术说明、状态转换图及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);
进入题库练习
问答题【说明】 函数DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)的功能是:将线性表A中关键码为key1的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为 typedef struct node int key; struct node * next; *LinkedList; 【函数】 int DelA_InsB ( LinkedList La, LinkdeList Lb,int key1,int key2,,int len) LinkedList p,q,s,prep,pres; int k; if( ! La->next || ! Lb-> next ||| en <=0)return-1; p = La -> next;prep = La; while(pp = 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 =s->next; if( ! s) return - t; /*表B中不存在键值为key2的结点*/ (4) =q-> next; /*将表A中的len个结点删除*/ q->next= (5) ; pres -> next = p; /*将len个结点移至表B */ return 0;
进入题库练习
问答题试题四 阅读以下说明和C 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明] 函数MultibaseOutput(long n, int B)的功能是:将一个无符号十进制整数n 转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B 进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C 代码中的符号常量及栈的类型定义如下: #define MAXSIZE 32 typedef struct { int *elem; /* 栈的存储区 */ int max; /* 栈的容量,即栈中最多能存放的元素个数 */ int top; /* 栈顶指针 */ }Stack; [C 代码] int InitStack(Stack *S, int n) /* 创建容量为n 的空栈 */ { S->elem = (int *)malloc(n * sizeof(int)); if(S->elem == NULL) return -1; S->max = n; (1) = 0 ; return 0; } int Push(Stack *S, int item) /* 将整数item 压入栈顶 */ { if(S->top == S->max){ printf("Stack is full!/n"); return -1;} (2) = item ; return 0; } int StackEmpty(Stack S) { return (!S.top) ? 1 : 0; } /* 判断栈是否为空 */ int Pop(Stack *S) /* 栈顶元素出栈 */ { if(!S->top) { printf("Pop an empty stack!/n"); return -1;} return (3) ; } void MultibaseOutput(long n, int B) { int m; Stack S; if (InitStack( return;} do { if (Push( return;} n = (5) ; }while(n != 0); while(!StackEmpty(S)) { /* 输出B 进制的数 */ m = Pop( if(m < 10) printf("%d", m); /* 小于10,输出数字 */ else printf("%c", m + 55); /* 大于或等于10,输出相应的字符 */ } printf("/n"); }
进入题库练习
问答题试题三(共15分)阅读以下说明和C函数,填补函数代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。[说明]队列是一种常用的数据结构,其特点是先入先出,即元素的插入在表头、删除在表尾进行。下面采用顺序存储方式实现队列,即利用一组地址连续的存储单元存放队列元素,同时通过模运算将存储空间看作一个环状结构(称为循环队列)。设循环队列的存储空间容量为MAXQSIZE,并在其类型定义中设置base、rear和length三个域变量,其中,base为队列空间的首地址,rear为队尾元素的指针,length表示队列的长度。例如,容量为8的循环队列如图3-1所示,初始时创建的空队列如图3-1(a)所示经过一系列的入队、出队操作后,队列的状态如图3-1(b)所示(队列长度为3)。下面的C函数1、C函数2和C函数3用于实现队列的创建、插入和删除操作,请完善这些代码。[C函数1]创建一个空的循环队列。[C函数2]元素插入循环队列。[C函数3]元素出循环队列。
进入题库练习
问答题阅读以下说明和Java代码,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]设计RGB方式表示颜色的调色板,进行绘图。其类图如下图所示。该程序的Java代码附后。类图[Java代码]//颜色类classMyColor{privateintred,green,blue;publicMyColor(){red=0;green=0;blue=0;}publicMyColor(intred,intgreen,intblue){this.red=red;this.green=green;this.blue=blue;}//其他方法略publicStringtoString(){return"Red:"+red+"\tGreen:"+green+"\tBlue"+blue;}}//调色板类classPalette{publicintnumber;//颜色数private______palette;//颜色表publicPalette(){number=256;palette=newMyColor[number];}publicPalette(MyColor[]palette,intnumber)______=number;______=palette;}//其他方法略publicStringtoString(){Stringstr="";for(inti=0;i<number;i++){str+=i+":"+palette[i]+"\n";}returnstr;}}//绘图类classDrawing{public______intCOLORNUMBER=16;publicstaticvoidmain(String[]args){Palettepalette;intred,green,blue;MyColor[]color=newMyColor[COLORNUMBER];for(inti=0;i<COLORNUMBER;i++){red=(int)(Math.random()*256);green=(int)(Math.random()*256);blue=(int)(Math.random()*256);color[i]=______(red,green,blue);}palette=newPalette(color,COLORNUMBER);System.out.println(palette);}}
进入题库练习
问答题[说明]以下[C程序]是对某电码明文(原文)进行加密形成密文。其加密算法如下。假定原文为C1C2C3……Cn,加密后形成的密文为S1S2S3……Sn其中n为小于256的任意自然数。首先读入正整数Key(Key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如图4-12所示。图4-12密文字符环示意图加密时从S1位置起顺时针计数,当数到第Key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第Key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置;依此类推,直至n个原文字符全部放入密文环中。由此产生的S1S2……Sn即为原文的密文。例如,原文:OneWorldOneDream。当Key=5时,其密文为:meOnWlanDoOedrer;当Key=6时该原文的密文为:oeDnOedrrOnWmale。程序使用示例如图4-13所示。图4-13程序使用示例在[C程序]中,将电码的原文存入字符数组old[],加密钥匙存入在整数变量Key中。函数decode用于将原文old加密并返回密文字符数组的首指针。其中,函数采用一个双向循环链表CODE来表示密文环。函数strlen用于计算一个字符串中个数(不包括字符串结尾符'/0/)。为了简单起见,程序中假设内存容量足以满足动态存贮单元分配的要求。[C程序]#include<stdio.h>#include<alloc.h>#defineCR13typedefstructnode{charch;structnode*forward;/*Linktonextnode.*/structnode*backward;/*Linktopreviousnode.*/}CODE;main(){char{{U}}(1){{/U}},old[256];intstrlen(),key,num=0;printf("/nPleaseinputthetelegraph:/n")while(num<255old[{{U}}(2){{/U}}]='/0';do{printf("/nPleaseinputKey=?(Key>1):");scanf("%d",}while(key<=1);printf("/nThedecodeoftelegraph:'%s'is:/n'%s'/n",old,decode(old,key));char*decode(old,key);char*old;intkey;{char*new;intlength,count,i;CODE*loop,*p;length=strlen(old);loop=({{U}}(3){{/U}})malloc(length*sizeof(CODE));for(i=1;i<length-1;i++){loop[i].forward=loop[i].backward=}loop[0].backward=loop[0].forward=loop[length-1].forward=loop;loop[length-1].backward=for(p=loop,i=0;i<length;i++){for(count=1;count<key;count++)p={{U}}(4){{/U}};p->ch=*old++;p->backward->forward={{U}}(5){{/U}};p->forward->backward={{U}}(6){{/U}};p=p->forward;}new=(char*)malloc((length+1*sizeof(char));for(i=0;i<length;i++)new[i]=loop[i].ch;new[length]='/0';return(new)}intstrlen(s)char*s;{intlen=0;while({{U}}(7){{/U}}!='/0')len++;return(len);}
进入题库练习
问答题[说明] 本程序的功能是产生一个抽奖游戏中的随机数组合。抽奖的规则是从自然数1至50中无重复抽取6个数。为了保证抽取的无重复性,将50个自然数放在数组source中。每抽取了一个数,就用数组的最后一个数来改写这个被抽中的数,并把数组的长度减1。为使输出更为清晰,把抽取出来的6个数放在数组target中,经过排序(Arrays类中的sou方法实现排序)然后输出。注:Math.random方法返回一个在0(包含)到1(不包含)之间的随机浮点数。[Java代码] import java. util. *;public class DrawOut public static void main (String[ ] args) int n =50; int k =6; int[ ] source = new int[n]; for(int i=0; i < (1) ;i++) source[i] = i + 1; int[ ] target = new int[k]; //将抽中的数字从source数组中取出,放入到target数组 for (int i = 0; i < (2) ; i+ +) int r = (int) (Math. random() * (3) ); target[i] = source[r]; .... [r] = (4) ; (5) ; Arrays. sort(target); for (int i = 0; i < target, length; i + + ) System. out. prinfln ( target [i] );
进入题库练习
问答题【说明】本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数key(key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:加密时从S1位置起顺时针计数,当数到第key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置:依次类推,直至n个原文字符全部放入密文环中。由此产生的S1S2…Sn即为原文的密文。例如,当Key=3时,原文thisisadecodingsystem的密文为:aotgnhediysdimietsncss当Key=4时,该原文的密文为:ssdtydhtegiasiscnmeion本程序将电码的原文存放在字符数组old中,加密钥匙存放在整数key中。函数decode用于将原文old加密并返回密文字符数组的首指针。其中函数采用一个双向循环链表CODE来表示密文环:函数strlen用于计算一个字符串中的字符个数(不包括字符串结尾符'/O')。为了简单起见,程序中假设内存容量足以满足动态存储单元分配的要求。#include<stdio.h>#include<stdlib.h>typedefstructnodecharch;structnode*forward;/*Linktonextnode.*/structnode*backward;/*Linktopreviousnode.*/CODE;intstrlen(char*s)intlen=0;while(*s++!='/0')len++;return(len);char*decode(char*otd,intkey)char*New;intlength,count,i;CODE*loop,*p;length=strlen(old);loop=(CODE*)malloc(length*sizeof(CODE));for(i=1;i<length-1;i++) loop[i],forward=(1)loop[0].backward=loop[0],forward=loop[length-1].forward=loop;(2)for(p=loop,i=0;i<length;i++) for(count=1;count<key;count++p=p->forward;(3)p->backward->forward=p->forward;p->forward->backward=p->backward;(4)New=(char*)malloc((length+1)*sizeef(char));for(i=0;i<length;i++)(5)New[length]='/0';return(New);voidmain()charold[256];intkey,num=0;printf("/nPleaseinputthetelegraph:/n");while(num<255old[(num==255)?num:num-1]='/0';doprintf("/nPleaseinputKey(Key>1):");scanf("%d",while(key<=1);printf("/nThedecodeoftelegraph:'%s'is:/n'%s'/n",old,decode(old,key));
进入题库练习
问答题【说明】 本题中的函数encode()和decode()分别实现对字符串的变换和复原。其中变换函数encode()顺序考查已知字符串的字符,按以下规则逐组生成新字符串: (1)若已知字符串的当前字符不是数字字符,则将该字符复制在新字符串中。 (2)若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中。 (3)若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中。 (4)以上述一次变换为一组,在不同组之间另插入一个下划线“_”用于分隔。例如,encode()函数对字符串26a3t2的变换结果为666_a_tttt_2。 复原函数decode()做与变换函数encode()相反的工作。即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字符和一个重复出现的字符,并在复原过程中略过变换函数,为不同组之间添加的一个下划线字符。 假定调用变换函数encode()时的已知字符串中不含下划线字符。 【函数】 int encode(char *instr, char *outstr){ char *ip, *op, c; int k,n; ip=instr; op=outstr; while(*ip){ if(*ip>='0' c={{U}} (2) {{/U}}; for(k=0; k<n;k++) *op++=c; } else{{U}} (3) {{/U}}; *op++='_'; ip++; } if(op>outstr)op--; {{U}} (4) {{/U}}; return op-outstr; } int decode(char *instr, char *outstr){ char *ip, *op, c; int n; ip=instr; op=outstr; while(*ip){ c=*ip; n=0; while(*ip==c n++; } if({{U}} (5) {{/U}})*op++='0'+n-1; *op++=c; if({{U}} (6) {{/U}})ip++; } *op='/0'; return op-outstr; }
进入题库练习
问答题阅读以下说明和Java代码,填充程序中的空缺,将解答填入答题纸的对应栏内。[说明]某应急交通控制系统(TraficControlSystem)在红灯时控制各类车辆(Vehicle)的通行,其类图如下图所示,在紧急状态下应急车辆在红灯时可通行,其余车辆按正常规则通行。类图下面的Java代码实现以上设计,请完善其中的空缺。[Java代码]abstractclassVehicle{publicVehicle(){}abstractvoidrun();};interfaceEmergency{______;______;};classCarextendsVehicle{publicCar(){}voidrun(){/*代码略*/}};ClassTruckextendsVehicle{publicTruck(){}voidrun(){/*代码略*/}};classPoliceCar______{booleanisEmergency=false;publicPoliceCar(){}publicPoliceCar(booleanb){this.isEmergency=b;}publicbooleanisEmergent(){return______}publicvoidrunRedLight(){/*代码略*/}};/*类Ambulance、FireEngine实现代码略*/publicclassTraficControlsystem{/*交通控制类*/privateVehicle[]V=newVehicle[24];intnumVehicles;publicvoidcontrol(){for{inti=0;i<numVehicles;i++){if(V[i]instanceofEmergency}else______.run();}}voidadd(Vehiclevehicle){v[numVehicles++]=vehicle;}/*添加车辆*/voidshutDown(){/*代码略*/}publicstaticvoidmain(String[]args){TraficControlSystemtcs=newTraficControlSystem();tcs.add(newCar());tcs.add(newPoliceCar());tcs.add(newAmbulance());tcs.add(newAmbulance(true));tcs.add(newFireEngine(true));tcs.add(newTruck());tcs.add(newFireEngine());tcs.control();tcs.shutDown();}}
进入题库练习
问答题[说明] 下面的词典类Dic实现了简单的英译汉功能。程序运行后的输出为“我是一个学生”。[C++程序]#include <iostream.h>#include <string.h>#define Max 100class Dic int top; char words[Max] [12]; char mean[Max] [20]; public: Die()top=0; void add(char w[],char m[]) strcpy(words[top],w); strcpy(mean[top],m); (1) ; void trans(char str[]) int i=0,j=0,k=0,s; char w[12],h[200]; while(l) if(str[i]! ='' //读取单词的一个字符,记录在w中 else w[j]='/0'; for(s=0;s < top;s++) if(strcmp(words[s],w) (2) 0) break; if(s<top) //找到了,翻译成对应的mean[s] strcpy(w,mean[s]); j= (3) ; else //未找到,翻译成(unknown) strcpy(w,"(unknown)"; j=9; for(s=0;s<j;s++) h[k++]=w[s]; if(str[i]=='/0') (4) ; break; j=0; i++; cout<<h<<endl; ;void main() Dic obj; obj.add("I","我"); obj.add("am","是"); obj.add("student","学生"); obj.add("a","一个"); obj.trans(" (5) ");
进入题库练习
问答题【说明】 已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个“黑色星期五”。“黑色星期五”指既是13日又是星期五的日期。 函数count_5_13(int year)首先算出年份year的1月13日是星期几,然后依次计算每个月的13日是星期几,若是星期五,则计数。 程序中使用了函数isLeapYear(int year),其功能是判断给定年份是否为闰年,返回值为1(或0)表示year是(或不是)闰年。 【C语言函数】 int count_5_13(int year) { int date; /*date为0表示星期日,为1~6分别表示星期一至星期六*/ long days=0; /*days记录天数*/ int m,y,c=0; /*c用于表示黑色星期五的个数*/ if (year<1900) return-1; /*计算从1900年1月1日起至给定年份year的1月13日间隔的天数*/ days=12; for (y= 1900; y < year; y++) { days +=365; if (isLeapYear(y)) {{U}}(1) {{/U}}; } date=((days%7) +1) %7; /*算出给定年份year的1月13日是星期几*/ c=({{U}} (2) {{/U}}) ?1:0; for(m=1;{{U}} (3) {{/U}};m++) { switch (m) { case 1:case 3: case 5: case 7:case 8:case 10:case 12: days=31; break; case 4: case 6: case 9: case 11: days=30; break; case 2:days=28; if({{U}} (4) {{/U}}) days=29; break; }/*end of switch*/ date=((days%7)+ {{U}}(5) {{/U}})%7; if (date==5) c++; } /*end of for*/ return c; }
进入题库练习
问答题(5)
进入题库练习
问答题阅读以下说明和C函数,填补C函数中的空缺(1)~(6),将解答写在答题纸的对应栏内。[说明]函数numberOfwords(charmessage[])的功能是计算存储在message字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过20时仅输出其前20个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似don't形式的词,单词之后都为空格或标点符号。函数中判定单词的规则是:(1)一个英文字母串是单词;(2)一个数字串是单词;(3)表示名词所有格的撇号(')与对应的单词看作是一个单词。除上述规则外,其他情况概不考虑。例如,句子“Thel990'switnessedmanychangesinpeople'sconceptsofconservation.”中有10个单词,输出如下:The1990'switnessedmanychangesinpeople'sinpeople'sconceptsofconservation函数numberOfwords中用到的部分标准库函数如下表所述。
进入题库练习
问答题[说明] C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在以下[C++程序]中定义了相应的类模板,使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息。 [C++程序] #include <iostream.h> template <class T> class Array; template <Class T> class ArrayBody friend (1) ; T* tpBody; int iRows,iColumns, iCurrentRow; ArrayBody(int IRsz, int iCsz) tpBody = (2) ; iRows = iRsz; iColumns = iCsz; iCurrentRow = -1; Public: T row_error = column_error =false; try if (iCurrentRow < 0 || iCurrentRow >= iRows) row_error = true; if (j<0 || j>= iColumns) column_error = true; if (row_error == true || column_error == true) (3) ; catch(char) if (row_error == true) cerr << "行下标越界[" << iCurrentRow << "]"; if (column_error = true) cerr << "列下标越界[" << j << "]"; cout << "/n"; return tpBody[iCurrentRow * iColumns + j]; ~Arraygody()delete[]tpBody; ; template <class T> class Array ArrayBody<T> tBody; Public; ArrayBody<T> return tBody; Array(int iRsz, int iCsz) : (5) ; void main() Array<int> a1(10,20); Array<double> a2(3,5); int b1; double b2; b1 = a1[-5][10]; //有越界提示:行下标越界[-5] b1 = a1[10][15]; //有越界提示:行下标越界[10] b1 = a1[1][4]; //没有越界提示 b2 = a2[2][6]; //有越界提示:列下标越界[6] b2 = a2[10][20]; //有越界提示:行下标越界[10]列下标越界[20] b2 = a2[1][4]; //没有越界提示
进入题库练习
问答题[说明] 下面的词典类Dic实现了简单的英译汉功能。程序运行后的输出为“我是一个学生”。 [C++程序] #include <iostream.h> #include <string.h> #define Max 100 class Dic { int top; char words[Max] [12]; char mean[Max] [20]; public: Die(){top=0;} void add(char w[],char m[]){ strcpy(words[top],w); strcpy(mean[top],m); {{U}}(1) {{/U}}; } void trans(char str[]) { int i=0,j=0,k=0,s; char w[12],h[200]; while(l) { if(str[i]! ='' //读取单词的一个字符,记录在w中 else { w[j]='/0'; for(s=0;s < top;s++) if(strcmp(words[s],w) {{U}}(2) {{/U}} 0) break; if(s<top) //找到了,翻译成对应的mean[s] { strcpy(w,mean[s]); j={{U}} (3) {{/U}};} else //未找到,翻译成(unknown) { strcpy(w,"(unknown)"}; j=9; } for(s=0;s<j;s++) h[k++]=w[s]; if(str[i]=='/0') {{{U}} (4) {{/U}}; break;} j=0; } i++; } cout<<h<<endl; } }; void main() { Dic obj; obj.add("I","我"); obj.add("am","是"); obj.add("student","学生"); obj.add("a","一个"); obj.trans("{{U}} (5) {{/U}}"); }
进入题库练习