计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
程序员(初级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
填空题【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。 在Date类中设计如下重载运算符函数: Date operator + (int days) : 返回某日期加上天数得到的日期。 Date operator - (int days) : 返回某日期减去天数得到的日期。 int operator - (Date //day_tab二维数组存放各月天数,第一行对应非闰年,第二行对应闰年class Date { int year, month, day //年,月,日 int leap(int); //判断是否闰年 int dton(Date month = m; day = d;} void setday(intd){day = d;} void setmonth(int m) {month = m;} void setyear(int y) {year =y;} int getday() {return day;} int getmonth() {return month:} int getyear() {return yea;} Date operator + (int days) //+运算符重载函数 { static Date date; int number = ________ date = ntod(number) return date } Date operator - (int days) //-运算符重载函数 { staffs Date date; int number= ________ ; number - = days; date = ntod(number) return date; } int operator - (Date return days; } void disp() { cout<<year<<"."<<month<<". "<<day<<endl; } }; int Date: :leap( int year) if( ________ ) //是闰年 return 1; //不是闰年 else return0: } int Date:: dton( Date for(y=1;y<=d. year;y++) if( ________ )days+ =366; //闰年时加366天 else days + = 365; //非闰年时加365天 for(m =0;m<d. month-1;m++) if( (6) ) days += day_tab[1] [m]; else days +=day_tab[0] [m]; days + = d. day; return days; } Date Date::ntod(intn) //将从元0年0月0日的天数转换成日期 { int y=1,m = 1,d,rest = n,lp; while ____ { if(leap(y)) if(rest<= 366) break; else rest - = 366; else //非闰年 if(rest = 365 ) break; else rest-=365; y++; } y--; Ip = leap(y); while ____ { if(lp) //闰年 if(rest>day_tab[1] [m - 1]) rest -= day_tab[1] [m-1]; else break; else //非闰 if(rest>day_tab[0] [m -1]) rest -= day_tab[0] [m-1]; else break; m++; } d = rest; return Date(y;m,d); } void main() { Date now(2003,10,1) ,then(2005,6,5); cout<<" now:";now. disp(); cout<<" then:";then. disp(); cout<<"相差天数:"<<(then-now)<<endl; Date dl = now + 1000,d2 = now - 1000; cout<<"now + 1000:" ;d1. disp(); cout<<" now - 1000:" :d2. disp(); }
进入题库练习
填空题下列赋值语句中哪两个是合法的(写出合法赋值语句的编号)?
进入题库练习
填空题阅读以下说明和C程序,填充程序中的空缺。 [说明] 埃拉托斯特尼筛法求不超过自然数N的所有素数的做法是:先把N个自然数按次序排列起来,1不是素数,也不是合数,要划去;2是素数,取出2(输出),然后将2的倍数都划去;剩下的数中最小者为3,3是素数,取出3(输出),再把3的倍数都划去;剩下的数中最小者为5,5是素数(输出),再把5的倍数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,每次从序列中取出的最小数构成的序列就是不超过N的全部质数。 下面的程序实现埃拉托斯特尼筛法求素数,其中,数组元素sieve[i](u>0)的下标i对应自然数i,sieve[i]的值为1/0分别表示i在/不在序列中,也就是将i划去(去掉)时,就将sieve[i]设置为0。 [C程序] #include <stdio.h> #define N 10000 int main() { char sieve[N+1]=(0); int i=0,k; /*初始时2~N都放入sieve数组*/ for(i=2;______;i++) sieve[i]=1; for(k=2;;){ /*找出剩下的数中最小者并用K表示*/ for(;k<N+1&&sieve[k]==0;______); if(______)break; print("%d/t",k); /*输出素数*/ /*从Sieve中去掉k及其倍数*/ for(i=k;i<N+1;i=______) ______; } return 0; }/*end of main*/
进入题库练习
填空题[说明] 函数count months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。 该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。 规定两个相邻年份的同月同日之间的问隔为1年。例如,2007.5.30—2008.5.30的间隔为1年。若相邻两年中前一年是闰年,并且日期是2月29日,则到下一年的2月28日为1年,即2008.2.29—2009.2.28的间隔为1年。 规定两个相邻月份的相同日之间的间隔为1个月,但需要特别考虑月末的特殊情况。例如,2007.1.29—2007.2.28的间隔为1个月,同理,2007.1.30—2007.2.28、2007.1.31—2007.2.28的间隔都是1个月。 计算起止日期间隔不足一年的完整月份数时,分两种情况: (1)起止日期不跨年度。先用终止日期的月号减去起始日期的月号得到月份数,然后再根据情况进行修正。例如,起止日期为2008.3.31—2008.9.20,通过月号算出月份数为6。修正时,通过调用函数makevalid将2008.9.31改为2008.9.30,与终止日期2008.9.20比较后,将月份数修正为5。 (2)起止日期跨年度。计算方法如下例所示:对于起止日期2008.7.25—2009.3.31,先计算2008.7.25—2008.12.25的月份数为5,再算出2008.12.25—2009.3.25的月份数为3,因此2008.7.25—2009.3.31之间的完整月份数为8。 日期数据类型定义如下: typedef struct int year; int month; int day; /*日期的年号(4位)、月和日号*/ DATE; 程序中使用的函数cmp_date( )、isLeapYear( )和makevalid( )说明如表11-8所示。 表11-8 函数说明 函数名 参数 返回值 说明 cmp_date DATE start DATE end -1:start<end 0:start=end 1:start>end 比较两个日期的大小,例如, 2007.1.30小于2007.5.15 2008.11.23等于2008.11.23 2008.1.31大于2007.5.15 isLeap Year int year 1:year表示的年号是闰年 0:year表示的年号不是闰年 判断给定年号是否为闰年 makevalid DATE *r 无 若日期*r是非法的,即*r不是闰年时其日期为2月29日,或者其4、6、9、11等月份出现了31日,则将其日期改为当月最后 [C语言函数] int count_months(DATE start, DATE end) int years=0, months=0; DATE r; if (cmp_date(start, end)>0) r=start; start=end; end=r; years=end.year-start.year; /*计算年数*/ r=start; r.year=end.year; if (cmp_date(r, end)>0) /*修正年数*/ (1) ; r.year--; if(r. year<end. year) /*跨年度时,先计算到12月的月份数*/ months= (2) ; r. month= (12) ; months+=(end. month+12-r. month)%12; r. year=end. year; r. month=end. month; makeva!id( (3) ); /*将日期r修正为有效日期*/ if(cmp_date(r, end)>0) /*修正月份数*/ (4) ; months+= (5) ; /*计算总月份数*/ return months;
进入题库练习
填空题阅读下列说明、图和Java代码,填补空缺。[说明]已知对某载客车辆(Car)进行类建模,如图13-2所示,其中类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;//定义最多载客数staticfinalintMAX_WHEELS=5;//定义最多轮胎数protectedEngineengine;protectedDriverdriver;protectedBodybody=newBody();protectedWheel[]wheels;protectedPassenger[]passengers;publicCar(Driverdriver){//构造函数{{U}}(2){{/U}}.driver=driver;engine=newEngine("TX6536型号引擎");wheels=newWheel[MAX_WHEELS];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.printin("司机尚未上车!");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++代码,填补C++代码中的空缺,将解答写在对应栏内。 [说明] 已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。 下面是实现该工资系统的C++代码,其中定义了4个类:工资系统类PayRoll、员工类Emplovee、正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。 [C++代码] //头文件和域名空间略 const int EMPLOYEE_NUM=5; class Employee protected: int emDCode; //员工号 string name; //员工姓名 double salary; //周发放工资 public: Employee(const int empCode,const string &name) this->empCode=empCode; this->name=name; virtual~Employee() virtual void pay()=0; double getSalary()return this->salary; ; class Salaried ______ private: double payRate; //年薪 public: Salaried(const int empCode,const string void pay() this->salary=______;//计算正式员工的周发放工资数 cout<<this->name<<":"<<this->salary<<endl; ; class Hourly ______ private: double payRate; //小时工资数 int hours; //周工作小时数 public: Hourly(const int empCode, const string this->hours=hours, void pay() this->saiary=______;//计算计时工的周发放工资数 cout<<this->name<<"::<<this->salary<<endl; ; class PayRoll public: void pay(Employee* e[]) for (int i=0; i<EMPLOYEE_ NUM; i++) e[i]->pay(); ; int main() PayRoll* payRoll=new PayRoll; ______ employees[EMPLOYEE_ NUM]= new Salaried(1001,"Zhang San",58000.00), //此处省略对其他职工对象的生成 new Hourly(1005,"L1",12,50.00), ; payRoll->pay(______); double total=0.0; for(int i=0;i<EMPLOYEE_ NUM;i++) (total+=employees[i]->getSalary(); //统计周发放工资总额 cout<<"总发放额="<<total<<endl; delete payRoll; retum 0;
进入题库练习
填空题请指出错误所在行号并给出该行修改后的完整结果。
进入题库练习
填空题类Stock的定义中有两处错误,请指出错误所在行号并给出该行修改后的完整结果。
进入题库练习
填空题指出该代码是否存在内存泄漏。
进入题库练习
填空题不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的编号) ①sq=sh;②sh=tr;③tr=sq;④sq=tr;⑤sh=sq。
进入题库练习
填空题阅读以下说明和流程图,填补流程图中的空缺。[说明]已知数组A[1:n]中各个元素的值都是非零整数,其中有些元素的值是相同的(重复)。为删除其中重复的值,可先通过以下流程图找出所有的重复值,并对所有重复值赋0标记之。该流程图采用了双重循环。处理思路:如果数组A某个元素的值在前面曾出现过,则该元素赋标记值0。例如,假设数组A的各元素之值依次为2,5,5,1,2,5,3,则经过该流程图处理后,各元素之值依次为2,5,0,1,0,0,3。[流程图]
进入题库练习
填空题[说明] 已知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)) (1) ; date=((days%7)+1)%7; /*算出给定年份year的1月13日是星期几+/ c=( (2) )?1:0; for(m=1; (3) ; 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( (4) )days=29; break; /*end of switch*/ date=((days%7)+ (5) )%7; if (date==5) c++; /*end of for*/ return c;
进入题库练习
填空题[说明] 完成以下中序线索化二叉树的算法。 [函数] Typedef int datatype; Typedef struct node { Int ltag, rtag; Datatype data; *lchild,* rchild; }bithptr; bithptr pre; void inthread ( p ); {if {inthread ( p->lchild ); if ( p->lchild==unll ) ________ ; if ( P->RCHILD=NULL) p->rtag=1; if ________ {if ________ pre->rchild=p; if ( p->1tag==1 ) ________ ; } INTHREAD ( P->RCHILD ); ________ ; } }
进入题库练习
填空题阅读以下说明和C函数,填充函数中的空缺。 [说明] 已知两个整数数组A和B中分别存放了长度为m和n的两个非递减有序序列,函数Adjustment(A,B,m,n)的功能是合并两个非递减序列,并将序列的前m个整数存入A中,其余元素依序存入B中。例如: 合并前 合并后 数组A的内容 1,9,28 1,4,7 数组B的内容 4,7,12,29,37 9,12,28,29,37 合并过程如下:从数组A的第一个元素开始处理。用数组B的最小元素B[0]与数组A的当前元素比较,若A的元素较小,则继续考查A的下一个元素;否则,先将A的最大元素暂存入temp,然后移动A中的元素挪出空闲单元并将B[0]插入数组A,最后将暂存在temp中的数据插入数组B的适当位置(保持B的有序性)。如此重复,直到A中所有元素都不大于B中所有元素为止。 [C函数] void Adjustment(int A[],intB[],int m,int n) /*数组A有m个元素,数组B有n个元素*/ int k,temp; for(i=0;i<m;i++) if(A[i]<=B[0]) continue, temp=______;/*将A中的最大元素备份至temp*/ /*从后往前依次考查A的元素,移动A的元素并将来自B的最小元素插入A中*/ for(k=m-1;______;k--) A[k]=A[k-1]; A[i]=______; /*将备份在七emp的数据插入数组B的适当位置*/ for(k=1;______&&k B[k-1]=B[k]; B[k-1]=______;
进入题库练习
填空题请补齐第21行代码中的空缺。
进入题库练习
填空题[说明] 某电信公司记录了每个用户的详细通话情况(每次通话数据记录在一行),现将某用户某月的通话数据存入一个文本文件“dial.txt”中,其数据格式如下: 拨入或拨出标记通话开始时间通话结束时间对方号码 注1:数据字段以一个空格作为分隔符。 注2:拨入和拨出标记均为小写字母。拨入标记为“i”,表示其他用户呼叫本机,本机用户不需付费;拨出标记为“o”,表示本机呼叫其他用户,此时本机用户需要付费。 注3:通话开始和结束时间的格式均为:HH:MM:SS。其中HH表示小时,取值00~23;MM表示分钟,取值00~59;SS表示秒,取值00~59。从通话开始到结束这段时间称为通话时间,假定每次通话时间以秒为单位,最短为1秒,最长不超过24小时。 注4:跨月的通话记录计入下个月的通话数据文件。 例如“o 23:01:12 00:12:15…”表示本次通话是本机呼叫其他用户,时间从23时01分12秒至次日的0时12分15秒,通话时间为71分03秒。 下面程序的功能是计算并输出该用户本月电话费(单位:元)。 通话计费规则为: (1)月通话费按每次通话费累加; (2)每次的通话费按通话时间每分钟0.08元计算,不足1分钟时按1分钟计费。 对于每次的拨出通话,程序中先分别计算出通话开始和结束时间相对于当日0点0分0秒的时间长度(以秒为单位),然后算出本次通话时间和通话费。 例如,若输入文件dial.txt的数据如下所示,则输出fee=7.44。 o 14:05:23 14:11:25 82346789 i 15:10:00 16:01:15 13890000000 o 10:53:12 11:07:05 63000123 o 23:01:12 00:12:15 13356789001 [C语句程序代码] #include<stdio.h> FILE *fin; int main( ) char str[80]; int h1, h2, m1, m2, s1, s2; long t_start, t_end, interval; int c; double fee=0; fin=fopen("dial. txt", "r")j; if (!fin) return -1; while(!feof(fin)) if(!fgets(str, 80, fin)) break; if( (1) ) continue; h1=(str[2]-48)*10+str[3]-48; m1=(str[5]-48)*10+str[6]-48; s1=(str[8]-48)*10+str[9]-48; h2=(str[11]-48)*10+str[12]-48; m2=(str[14]-48)*10+str[15]-48; s2=(str[17]-48)*10+str[18]-48; t_start=h1*60*60+m1*60+s1; /*通话开始时间*/ t_end=h2*60*60+m2*60+s2; /*通话结束时间*/ if( (2) ) /*若通话开始和结束时间跨日*/ interval= (3) -t_start+t_end; else interval=t_end-t_start; c= (4) ; /*计算完整分钟数表示的通话时间*/ if(interval%60) (5) ; fee+=c*0.08; fclose(fin); printf("fee=%.21f/n", fee); return 0;
进入题库练习
填空题阅读以下说明和Java代码,填补Java代码中的空缺,将解答写在对应栏内。 [说明] 己知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。 下面是实现该工资系统的Java代码,其中定义了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。 [Java代码] abstract class Employee protected String name; //员工姓名 protected int empCode; //员工号 protected double salary; //周发放工资 publ ic Employee(int empCode,String name) this.empCode=empCode; this.name=name; public double getSalary() return this.salary; public abstract void pay(); class Salaried ______ Employee private double annualSalary; Salaried(int empCode,String name,double payRate) super(empCode,name); this.annualSalary=payRate; public void pay() salary=______;//计算正式员工的周发放工资数 System.out.printin(this.name+":"+this.salary); class Hourly ______ Empioyee private double hourlyPayRate; private int hours; Hourly(int empCode,String name,int hours,double payRate) super(empCode,name); this.hourlyPayRate=payRate; this.hows=hours, public void pay() salary=______;//计算计时工的周发放工资数 System.out.printin(this.name+":"+this.salary); public class PayRoll private ______ employees[]= new Salaried(1001,"Zhang San",58000.00), //此处省略对其他职工对象的生成 new Hourly(1005,"Li",12,50.00) ; public void pay(Employee e[]) for(int i=0;i<e.length;i++) e[i].pay(); public static void main(String[]rgs) PayRoll payRoll=new PayRoll(); payRoll.pay(______); double total=0.0; for(int i=0;i<payRoll.employees.length;i++)//统计周发放工资总额 total+=payRoll.employees[i].getSalary(); System.out.printin(total);
进入题库练习
填空题阅读以下说明和Java代码,将应填入______处的语句或语句成分写在对应栏内。 [说明] 某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。 [Java代码] import java.io.*; class Student private String sNO;//学号 private int Credit;//分数 public int getCredit() return Credit; public string toString() return"sNO="+this.sNO+",Credit="+this.Credit; Student(String sNO,int Credit) ______=sNO; ______=Credit; public class SortStudent void sort(Student[]s)//Sort the array s[] in decending order of Credit for(int i=0;i<s.length-1;i++) for(int j=i+1:j<s.length;j++) if(s[i].______<s[j].______) Student tmp=s[i]; s[i]=s[j]; s[j]=tmp; public static void main(String argv[]) Student[] testStudent=new Student[siZe]; try BufferedReader in=new BufferedReader(new FileReader("students.txt")); boolean done=false; int i=0; while(!done) String s=in.readLine(); //每次读取一个学生的学号和成绩 if(s!=null) String tmp[]=s.split(","); testStudent[i++]=______(tmp[0],Integer.parseInt(tmp[1])); else done=true; in.closeo(); ______=new SortStudent(); ss.sort(testStudent); System.out.printin("top 30%:"); for(int j=0;j<size*0.3;j++) System.out.printin(testStudent[j]); catch(IOException e) System.out.printin("io error!"); catch(NumberFormatException e) System.out.printin("not a number!"); ______int size=100; //学生总数
进入题库练习
填空题{{B}}试题七{{/B}}阅读以下说明和流程图,填补流程图中的空缺。 [说明] 假设数组A中的各元素A(1),A(2),…,A(M)已经按从小到大排序(M≥1);数组B中的各元素B(1),B(2),…,B(N)也已经按从小到大排序(N≥1)。执行下面的流程图后,可以将数组A与数组B中所有的元素全都存入数组C中,且按从小到大排序(注意:序列中相同的数全部保留并不计排列顺序)。例如,设数组A中有元素:2,5,6,7,9;数组B中有元素2,3,4,7;则数组C中将有元素:2,2,3,4,5,6,7,7,9。 [流程图] 本题流程图如图8-31所示。
进入题库练习
填空题阅读以下说明和C程序代码,将程序补充完整。 [说明] 下面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) { int i=0, k=0; char str[32]; while(m>0) { str[k++]={{U}} (1) {{/U}} +'0'; m=m/10; } for(i=0; i<k/2; i++) 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}}) { printf("%id->", n); for(a=0, t=n; t>0; ){ a={{U}} (4) {{/U}}*10+t%10; t=t/10; n={{U}} (5) {{/U}}; printf("%id/n", n); system("pause"); return 0;
进入题库练习