首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
在第一趟排序之后,一定能把数据表中最大或最小元素放在其最终位置上的排序算法是()
查看本题答案
包含此试题的试卷
初级程序员《单选题》真题及答案
点击查看
你可能感兴趣的试题
在下列算法中______算法可能出现下列情况在最后一趟开始之前所有的元素都不在其最终的位置上
堆排序
冒泡排序
插入排序
快速排序
在第一趟排序之后一定能把数据表中最大或最小元素放在其最终位置上的排序算法是______
冒泡排序
插入排序
快速排序
选择排序
在直接插入排序冒泡排序简单选择排序和快速排序方法中能在第一趟排序结束后就得到
冒泡排序和快速排序
直接插入排序和简单选择排序
冒泡排序和简单选择排序
直接插入排序和快速排序
在对n个元素进行冒泡排序的过程中第一趟至多需要进行______对相邻元素之间的比较
在直接插入排序冒泡排序简单选择排序和快速排序方法中能在第一趟排序结束后就得到最大或最小元素的排序方法
冒泡排序和快速排序
直接插入排序和简单选择排序
冒泡排序和简单选择排序
直接插入排序和快速排序
下列排序算法中______每一趟都能选出一个元素放在最终位置上并且是不稳定的
冒泡排序
希尔排序
直接选择排序
直接插入排序
下列排序算法中算法可能会出现下面情况在最后一趟开始之前所有元素都不在其最终的位置上
堆排序
冒泡排序
快速排序
插入排序
在第一趟排序之后一定能把数据表中最大或最小元素放在其最终位置上的排序算法是______
冒泡排序
插入排序
快速排序
选择排序
在第一趟排序之后一定能把数据表中最大或最小元素放在其最终位置上的排序算法是______
冒泡排序
基数排序
快速排序
归并排序
在每一趟排序过程中都将待排序序列中最大关键字选出来并将它从待排序序列中剔除继续对剩余元素进行同样操作
给定结点的关键字序列FBJGEAIDCH对它按字母的字典顺序进行排列采用不同方法其最终结果相同
A
B
C
D
已知某序列为49386597761327试采用该序列的第一个元素为枢轴进行快速排序则经过一趟快速排序
在直接插入排序冒泡排序简单选择排序和快速排序方法中能在第一趟排序结束后就得到最大或最小元素的排序方法
冒泡排序和快速排序
直接插入排序和简单选择排序
冒泡排序和简单选择排序
直接插入排序和快速排序
在第一趟排序之后一定能把数据表中最大或最小元素放在其最终位置上的排序算法是______
冒泡排序
插入排序
快速排序
选择排序
第一趟排序后序列中关键字最大的记录交换到最后的排序方法是______
下列排序算法中某一趟结束后未必能选出一个元素放在其最终位置上的是
堆排序
冒泡排序
快速排序
直接插入排序
在每一趟排序过程中都将待排序序列中最大关键字选出来并将它从待排序序列中剔除继续对剩余元素进行同样操作
基数排序
堆排序
起泡排序
选择排序
排序过程中对尚未确定最终位置的所有元素进行一遍处理称为一趟排序下列排序方法中每一趟排序结束时都至少能
仅Ⅰ、Ⅲ、Ⅳ
仅Ⅰ、Ⅲ、Ⅴ
仅Ⅱ、Ⅲ、Ⅳ
仅Ⅲ、Ⅳ、Ⅴ
下列排序算法中第一趟排序完毕后其最大或最小元一定在其最终位置上的算法是
归并排序
直接选择排序
快速排序
基数排序
在第一趟排序之后一定能把数据序列中最大或最小元素放在其最终位置上的排序方法是
冒泡排序
插入排序
快速排序
归并排序
热门试题
更多
阅读以下说明和C语言函数填补空缺 [说明]已知1900年1月1日是星期一下面的函数count_5_13int year用于计算给定的年份year中有几个黑色星期五黑色星期五指既是13日又是星期五的日期 函数count_5_13int year首先算出年份year的1月13日是星期几然后依次计算每个月的13日是星期几若是星期五则计数 程序中使用了函数isLeapYearint year其功能是判断给定年份是否为闰年返回值为1或0分别表示year是或不是闰年 [C语言函数]intCount_5_13intyear {intdate; /*date为0表示星期日为1~6分别表示星期一至星期六*/longdays=0; /*days记录天数*/intmyc=0; /*c用于表示黑色星期五的个数*/ifyear<1900return-1; /*计算从1900年1月1日起至给定年份year的1月13日间隔的天数*/ days=12fory=1900;y<year;y++{ days+=365;ifiSLeapYearY1 ;} date=days%7+1%7; /*算出给定年份year的1月13日是星期几+/c=2 1:0;form=1;3;m++ {switchm{ case1:case3:case5:case7:case8:case10:case12: days=31;break; case4:case6:case9:case11: days=30;break; case2:days=28; if4days=29; break;}/*endofswitch*/ date=days%7+5%7; ifdate==5c++;}/*endoffor*/ returnc;}
阅读以下说明和C语言程序填补空缺 [说明] 某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件dial.txt中其数据格式如下 拨入或拨出标记通话开始时间通话结束时间对方号码注1数据字段以一个空格作为分隔符 注2拨入和拨出标记均为小写字母拨入标记为i表示其他用户呼叫本机本机用户不需付费拨出标记为o表示本机呼叫其他用户此时本机用户需要付费 注3通话开始和结束时间的格式均为HH:MM:SS其中HH表示小时取值00~23MM表示分钟取值00~59SS表示秒取值00~59从通话开始到结束这段时间称为通话时间假定每次通话时间以秒为单位最短为1秒最长不超过24小时 注4跨月的通话记录计入下个月的通话数据文件例如o23: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.44o14:05:2314:11:25 82346789i15:10:0016:01:1513890000000o 10:53:1211:07:0563000123o23:01:1200:12:15 13356789001[C语句程序代码] #include<stdio.h>FILE*fin;intmain {charstr[80]; inth1h2m1m2s1s2;longt_start t_endinterval;intc;double fee=0;fin=fopendial.txtrj; if!finreturn-1; while!feoffin{if!fgetsstr80fin break;if1 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; elseinterval=t_end-t_start; c=4; /*计算完整分钟数表示的通话时间*/ifinterval%60 5; fee+=c*0.08;}fclosefin; printffee=%.21f/nfee; return0;}
阅读以下说明和C语言函数回答问题 [说明] 下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误 [C程序代码]01#include<stdio.h> 0203intmain04 {05longnnum;06int i;0708do{ 09printf清输入一个正整数:;10scanf%idn; 11}whilen<=0;12k=1; 13fori=1;n>=0;i++{14 ifiio2=1{15Rum=num+n%10*k; 16k=k*10;17}18 n=n/10;19}20 printf新数据为:%d/nnum;21return0; 22}
[说明] 编写一个Applet程序接受HTML文件传递的整数参数根据该参数指定Applet中文本框的长度编写对应的HTML文件运行这个Applet [Java代码] importjava.applet.* importjava.awt.* publicclasschuangdicsextends1 { TextFieldtf=newTextField inttfLength=0 publicvoidinit { try { tfLength=Integer.parseInt2length tf.setColumnstfLength addtf } catchNumberFormatExceptionnfe { tf.3HTML文件传人的参数格式错误 addtf } } } [HTML代码] <html> <head> <title>4</title> </head> <body> <hr> <appletcode=chuangdicswidth=700height=150> <paramname=lengthvalue=20> 5 <hr> </body> </htmI>
阅读以下说明和C语言函数填补空缺 [说明]函数countmonthsDATEstartDATE 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.282007.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 日期数据类型定义如下typedefstruct{ intyear;intmonth;intday;/*日期的年号4位月和日号*/}DATE; 程序中使用的函数cmp_dateisLeapYear 和makevalid说明如表11-8所示 表11-8函数说明 函数名 参数 返回值 说明 cmp_date DATEstart DATEend -1start<end 0start=end 1start>end 比较两个日期的大小例如 2007.1.30小于2007.5.15 2008.11.23等于2008.11.23 2008.1.31大于2007.5.15 isLeapYear intyear 1year表示的年号是闰年 0year表示的年号不是闰年 判断给定年号是否为闰年 makevalid DATE*r 无 若日期*r是非法的即*r不是闰年时其日期为2月29日或者其46911等月份出现了31日则将其日期改为当月最后 [C语言函数]intcount_monthsDATEstartDATEend {intyears=0months=0; DATEr;ifcmp_datestartend>0{ r=start;start=end;end=r; }years=end.year-start.year; /*计算年数*/r=start; r.year=end.year;ifcmp_daterend>0{ /*修正年数*/1; r.year--;} ifr.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修正为有效日期*/ ifcmp_daterend>0/*修正月份数*/ 4;months+=5 ;/*计算总月份数*/returnmonths; }
阅读以下说明和C语言函数填补空缺 [说明]已知1900年1月1日是星期一下面的函数count_5_13int year用于计算给定的年份year中有几个黑色星期五黑色星期五指既是13日又是星期五的日期 函数count_5_13int year首先算出年份year的1月13日是星期几然后依次计算每个月的13日是星期几若是星期五则计数 程序中使用了函数isLeapYearint year其功能是判断给定年份是否为闰年返回值为1或0分别表示year是或不是闰年 [C语言函数]intCount_5_13intyear {intdate; /*date为0表示星期日为1~6分别表示星期一至星期六*/longdays=0; /*days记录天数*/intmyc=0; /*c用于表示黑色星期五的个数*/ifyear<1900return-1; /*计算从1900年1月1日起至给定年份year的1月13日间隔的天数*/ days=12fory=1900;y<year;y++{ days+=365;ifiSLeapYearY1 ;} date=days%7+1%7; /*算出给定年份year的1月13日是星期几+/c=2 1:0;form=1;3;m++ {switchm{ case1:case3:case5:case7:case8:case10:case12: days=31;break; case4:case6:case9:case11: days=30;break; case2:days=28; if4days=29; break;}/*endofswitch*/ date=days%7+5%7; ifdate==5c++;}/*endoffor*/ returnc;}
阅读以下说明和C程序代码将程序补充完整 [说明] 下面C程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数 函数intisPalmlong m的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0 [C程序代码]#include<stdio.h> #include<stdlib.h>intisPalmlongm {inti=0k=0;charstr[32]; whilem>0{str[k++]=1+’0’; m=m/10;}fori=0;i<k/2; i++ifstr[i]!=str[2]return0; return1;}intmain {longnat; printfinputapositiveinteger:;scanf%ld&n; ifn<100||n>=1000return-1;while3 {printf%id->n;fora=0t=n; t>0;{a=4*10+t%10;t=t/10; n=5;printf%id/nn; systempause;return0;
阅读下列说明图和Java代码将应填入n处的字句写在答题纸的对应栏内 [说明] 已知对某载客车辆Car进行类建模如图6-1所示其中类Engine表示发动机引擎类Wheel表示车轮类Body表示车身类Driver表示司机类Passenger表示乘客 [Java代码] classBody{//此处代码省略}; //车身类classPassenger{ //此处代码省略};//乘客类classWheel{ //此处代码省略};//车轮类class Driver{//司机类publicString name;//表示第几路公交车司机publicDriverString driverName{name=driverName;//构造函数};class Engine{//引擎类publicStringengineNo; //引擎编号publicEngineStringengineNo {this.engineNo=engineNo;//构造函数};publicclass Car{//汽车类staticfinalint1 =7;//定义最多载客数staticfinalintMAX WHEELS=5;//定义最多轮胎数protectedEngine engine;protectedDriverdriver; protectedBodybody=newBody; protectedWheel[]wheels;protected Passenger[]passengers;publicCarDriverdriver {//构造函数2 .driver=driver;engine=new EngineTX6536型号引擎;wheels=new Wheel[MAXWHEELS];passengers=new Passenger[MAX_PASSENGERS];forint index=0;index<MAX_WHEELS;index++{ wheels[index]=newWheel; }forintindex=0; index<MAX_PASSENGERS;index++{ passengers[index]=null; }}int getPassengerNumber{//获取车上乘客数量 //此处代码省略return0; }void getOnPassengerPassengeraPassenger{//乘客上车 //此处代码省略} voidrun{//开车if 3{System.out.println司机尚未上车!;return;} //此处代码省略} publicstaticvoidmainStringargs[]{ Driverdriver=newDriver第五路公交车司机; Carcar=newCar4 ;forintindex=0; index<MAX_PASSENGERS;index++ car.getOnPassenger5Passenger; car.run;} }
【说明】 计算n的合数一个整数n可以有多种划分使其划分的一列整数之和为n例如整数5的划分为 5 41 32 311 221 2111 11111 共有7种划分这种划分的程序如下所示 【程序】 #include<stdio.h> intn[1000]mk; voidoutputsum { intj; forj=0;n[j]!=0;j++ printf%d/tn[j]; printf/n; } voidsuminti ifm-n[i]<n[i] {m=m-n[i]; 1 i++; n[i+1]=0; } else { 2 m-=n[i]; i++; } ifm!=n[i] sumi; else output_sum; ifn[i]>1 { n[i]--; 3 } else { whilen[i]==1&&i>O { i--; 4 } ifi!=0 { 5 sumi; } } } voidmain { inti; scanf%d&n[0]; m=k=n[0]; fori=1;i<=k;i++ n[i]=0; whilen[0]!=1 { n[0]--; i=0; sum0; m=k; } }
阅读下列说明图和Java代码将应填入n处的字句写在答题纸的对应栏内 [说明] 已知对某载客车辆Car进行类建模如图6-1所示其中类Engine表示发动机引擎类Wheel表示车轮类Body表示车身类Driver表示司机类Passenger表示乘客 [Java代码] classBody{//此处代码省略}; //车身类classPassenger{ //此处代码省略};//乘客类classWheel{ //此处代码省略};//车轮类class Driver{//司机类publicString name;//表示第几路公交车司机publicDriverString driverName{name=driverName;//构造函数};class Engine{//引擎类publicStringengineNo; //引擎编号publicEngineStringengineNo {this.engineNo=engineNo;//构造函数};publicclass Car{//汽车类staticfinalint1 =7;//定义最多载客数staticfinalintMAX WHEELS=5;//定义最多轮胎数protectedEngine engine;protectedDriverdriver; protectedBodybody=newBody; protectedWheel[]wheels;protected Passenger[]passengers;publicCarDriverdriver {//构造函数2 .driver=driver;engine=new EngineTX6536型号引擎;wheels=new Wheel[MAXWHEELS];passengers=new Passenger[MAX_PASSENGERS];forint index=0;index<MAX_WHEELS;index++{ wheels[index]=newWheel; }forintindex=0; index<MAX_PASSENGERS;index++{ passengers[index]=null; }}int getPassengerNumber{//获取车上乘客数量 //此处代码省略return0; }void getOnPassengerPassengeraPassenger{//乘客上车 //此处代码省略} voidrun{//开车if 3{System.out.println司机尚未上车!;return;} //此处代码省略} publicstaticvoidmainStringargs[]{ Driverdriver=newDriver第五路公交车司机; Carcar=newCar4 ;forintindex=0; index<MAX_PASSENGERS;index++ car.getOnPassenger5Passenger; car.run;} }
【程序2.1说明】求所有满足如下条件的三位数它除以11得的商等于它各位数字的平方和例如550除以11商为5050=52+52+02【程序2.1】voidmain{intijns;fori=100;i<=999;i++{n=i;j=n/11;s=0;while1{2n/=10;}if3printf%d/ti;}}【程序2.2说明】本程序输入一字符串将其中的大写字母改变成小写字母【程序2.2】voidmain{inti=0;chars[120];scanf%ss;while4{if5s[i]=s[i]-’A’+’a’;i++;}printf%s/ns;}
阅读以下说明和C语言程序填补空缺 [说明] 某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件dial.txt中其数据格式如下 拨入或拨出标记通话开始时间通话结束时间对方号码注1数据字段以一个空格作为分隔符 注2拨入和拨出标记均为小写字母拨入标记为i表示其他用户呼叫本机本机用户不需付费拨出标记为o表示本机呼叫其他用户此时本机用户需要付费 注3通话开始和结束时间的格式均为HH:MM:SS其中HH表示小时取值00~23MM表示分钟取值00~59SS表示秒取值00~59从通话开始到结束这段时间称为通话时间假定每次通话时间以秒为单位最短为1秒最长不超过24小时 注4跨月的通话记录计入下个月的通话数据文件例如o23: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.44o14:05:2314:11:25 82346789i15:10:0016:01:1513890000000o 10:53:1211:07:0563000123o23:01:1200:12:15 13356789001[C语句程序代码] #include<stdio.h>FILE*fin;intmain {charstr[80]; inth1h2m1m2s1s2;longt_start t_endinterval;intc;double fee=0;fin=fopendial.txtrj; if!finreturn-1; while!feoffin{if!fgetsstr80fin break;if1 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; elseinterval=t_end-t_start; c=4; /*计算完整分钟数表示的通话时间*/ifinterval%60 5; fee+=c*0.08;}fclosefin; printffee=%.21f/nfee; return0;}
阅读以下说明和C语言程序填补空缺 [说明] 某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件dial.txt中其数据格式如下 拨入或拨出标记通话开始时间通话结束时间对方号码注1数据字段以一个空格作为分隔符 注2拨入和拨出标记均为小写字母拨入标记为i表示其他用户呼叫本机本机用户不需付费拨出标记为o表示本机呼叫其他用户此时本机用户需要付费 注3通话开始和结束时间的格式均为HH:MM:SS其中HH表示小时取值00~23MM表示分钟取值00~59SS表示秒取值00~59从通话开始到结束这段时间称为通话时间假定每次通话时间以秒为单位最短为1秒最长不超过24小时 注4跨月的通话记录计入下个月的通话数据文件例如o23: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.44o14:05:2314:11:25 82346789i15:10:0016:01:1513890000000o 10:53:1211:07:0563000123o23:01:1200:12:15 13356789001[C语句程序代码] #include<stdio.h>FILE*fin;intmain {charstr[80]; inth1h2m1m2s1s2;longt_start t_endinterval;intc;double fee=0;fin=fopendial.txtrj; if!finreturn-1; while!feoffin{if!fgetsstr80fin break;if1 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; elseinterval=t_end-t_start; c=4; /*计算完整分钟数表示的通话时间*/ifinterval%60 5; fee+=c*0.08;}fclosefin; printffee=%.21f/nfee; return0;}
阅读以下函数说明和C语言函数将应填入n处的字句写在对应栏内[说明]这是一个模拟渡口管理的算法某汽车轮渡口过江渡船每次能载10辆车过江过江车辆分为客车类和火车类上船有如下规定同类车先到先上船客车先于货车上渡船且每上4辆客车才允许上一辆货车若等待客车不足4辆则以货车代替若无货车等待则允许客车都上船程序中用到的函数有enqueuequeue*sqelemtype*x在队列sq中入队一个元素xoutqueuequeue*sqelemtype*x在队列sq中出队一个元素并将其值赋给xemptyqueue*sq判断队列sq是否为空队若为空返回1否则返回0[C程序]#include<stdio.h>voidpass{queuebustruct;/*bus表示客车队列truck表示货车队列*/charch;intntag/*]n为车号tag为标志tag=0表示客车tag=1表示货车*/intcount=0countbus=0counttruck=0;/*分别表示上渡船汽车数客车数货车数*/while1{printf输入命令:/n;Scanf%c&ch;switchch{case’e’:case’E’:printf车号:/n;Scanf%d&n;printf客车/货车0/1:/n;scanf%d&tag;if1enqueue&busn;elseenqueue&truckn;break;case’i’:case’I’:whilecount<10{if2&&empty&bus==0{/*客车出队*/outqueue&bus&n;printf上船的车号为:/n;count++;3;}eiseif4{/*货车出队*/countbus=0;outqueue&truck&n;printf上船的车号为:/n;count++;counttruck++;}elseifempty&bus==0{5;outqueue&truck&n;printf没有10辆车排队轮渡/n;count++;countbus++;}else{printf没有10辆车排队轮渡/n;retUrn;}break;}case’q’:case’Q’:break;}ifch==’q’||ch==’Q’break;}}
[说明] 有若干教师每个教师只有姓名一个教师可以指导多名研究生每名研究生有姓名和研究方向程序最后输出每个教师指导的所有研究生的姓名和研究方向 [Java程序] publicclassTeacher{ Stringname; inttop=0; Student[]student=newStudent[20]; publicTeacher{} publicTeacherStringname{this.name=name;} booleanaddStudentstu{ intlen=this.student.length; iftop<len-1{ this.student[top]=siu; 1; returntrue; } else return2; } voiddisp{ System.out.println指导老师+this.name; System.out.println研究生:; forinti=0;i<3;i++{ System.out.println姓名:+this.student[i].name+/t研究方向:+this.student[i].search; } } publicstaticvoidmainString[]args{ Teachert[]={newTeacher李明newTeacher王华}; Students1=newStudent孙强数据库; Students2=newStudent陈文软件工程; Students3=newStudent章锐计算机网络; if!t[0].adds1{System.out.println每个老师最多只能指导20个学生!;} if!t[0].adda2{System.out.println每个老师最多只能指导20个学生!;} if!t[1].adds3{System.out.println每个老师最多只能指导20个学生!;} forinti=0;i<2;i++ 4; } } class5{ Stringname; Stringsearch; publicStudent{} publicStudentStringnameStringsearch{ this.name=name; this.search=search; } StringgetName{returnthis.name;} StringgetSearch{returnthis.search;} }
阅读以下说明和C函数代码回答问题 [说明]著名的菲波那契数列定义式为 f1=1f2=1fn=fn-1+fn-2n=34 因此从第1项开始的该数列为1123581321函数fib1和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项调用fib1fib2时可确保参数n获得一个正整数1 [C函数代码]将函数fib1和fib2改正后进行测试发现前46项都正确而第47项的值是一个负数请说明原因
[函数2.1说明] 求任意两个正整数的最大公约数的欧几里德算法用辗转相除法求正整数m和n的最大公约数并返回该公约数 [函数2.1] voidfunc1intmintn{ r=m%n whiler<>0{ 1 n=r 2 } returnn } [函数2.2说明] 判断101~200之间有多少个素数并输出所有素数用一个数分别去除2到sqrt这个数如果能被整除则表明此数不是素数反之是素数 [函数2.2] voidfunc2{ intmikh=0leap=1; printf/n; form=101;m<=200;m++ {3; fori=2;i<=k;i++ if4 {leap=0;break;} ifleap {printf%-4dm; 5; ifh%10==0 printf/n; } leap=1; } printf/nThetotalis%dh; }
【说明】 本程序输出10000之内的所有完全数完全数是指等于其所有因子和包括1但不包括这个数本身的数例如6=1×2×36=1+2+3则6是一个完全数 【程序】 publicclassPerfectNum { PublicstaticvoidmainStringargs[] { intcount=1; forinti=1;i<10000;i++ { inty=0; forintj=1;j<i;j++ if1 y=2 if3 { System.out.print4+String.valueOf’/t’; 5 Ifcount%3==0 System.out.printin; } } }
阅读以下说明和C程序代码将程序补充完整 [说明] 下面C程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数 函数intisPalmlong m的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0 [C程序代码]#include<stdio.h> #include<stdlib.h>intisPalmlongm {inti=0k=0;charstr[32]; whilem>0{str[k++]=1+’0’; m=m/10;}fori=0;i<k/2; i++ifstr[i]!=str[2]return0; return1;}intmain {longnat; printfinputapositiveinteger:;scanf%ld&n; ifn<100||n>=1000return-1;while3 {printf%id->n;fora=0t=n; t>0;{a=4*10+t%10;t=t/10; n=5;printf%id/nn; systempause;return0;
阅读下列说明图和Java代码将应填入n处的字句写在答题纸的对应栏内 [说明] 已知对某载客车辆Car进行类建模如图6-1所示其中类Engine表示发动机引擎类Wheel表示车轮类Body表示车身类Driver表示司机类Passenger表示乘客 [Java代码] classBody{//此处代码省略}; //车身类classPassenger{ //此处代码省略};//乘客类classWheel{ //此处代码省略};//车轮类class Driver{//司机类publicString name;//表示第几路公交车司机publicDriverString driverName{name=driverName;//构造函数};class Engine{//引擎类publicStringengineNo; //引擎编号publicEngineStringengineNo {this.engineNo=engineNo;//构造函数};publicclass Car{//汽车类staticfinalint1 =7;//定义最多载客数staticfinalintMAX WHEELS=5;//定义最多轮胎数protectedEngine engine;protectedDriverdriver; protectedBodybody=newBody; protectedWheel[]wheels;protected Passenger[]passengers;publicCarDriverdriver {//构造函数2 .driver=driver;engine=new EngineTX6536型号引擎;wheels=new Wheel[MAXWHEELS];passengers=new Passenger[MAX_PASSENGERS];forint index=0;index<MAX_WHEELS;index++{ wheels[index]=newWheel; }forintindex=0; index<MAX_PASSENGERS;index++{ passengers[index]=null; }}int getPassengerNumber{//获取车上乘客数量 //此处代码省略return0; }void getOnPassengerPassengeraPassenger{//乘客上车 //此处代码省略} voidrun{//开车if 3{System.out.println司机尚未上车!;return;} //此处代码省略} publicstaticvoidmainStringargs[]{ Driverdriver=newDriver第五路公交车司机; Carcar=newCar4 ;forintindex=0; index<MAX_PASSENGERS;index++ car.getOnPassenger5Passenger; car.run;} }
[函数8.1说明] 现考虑编写一个扑克游戏只用一副无大小王的扑克扑克的花色suit分为SpadeHeartDiamond和Club每门花色的牌共13张面值rank分别为2345678910JackQueenKing和Ace每张扑克牌应包含如下信息惟一的ID号1~52花色面值背面图案的编号等每张扑克牌的操作有判断两张扑克牌是相同花色吗相同面值吗判断一张扑克牌是给定的花色吗是给定的面值吗请补充扑克牌类Card类的声明和实现代码要求选取适当形式的数据成员描述每张扑克牌的信息同时以成员函数的形式实现指定的操作 [C++程序] constenumSUIT{SPADE=0HEARTDIAMONDCLUB} constenumRANK{TWO=0THREEFOURFIVESIXSEVENEIGHTNINETENJACKQUEENKINGACE} classCard { public 1intidmIDidmSuitid1/13mRankid-1%13{} boolIsSameSuitconstCard&rhs {retumthis==&rhs2} boolIsSankRankconstCard&rhs {returnthis==&rhsfalse:mRank==rhs.mRank} boolIsSuitintsuit {return3} boolIsRankintrank {returnmRank==rank} private staticintnBackImg//背面图案 constintmID constintmSuit constintmRank } [函数8.2说明] 输入一字符串将其中所有的小写字母转换为大写字母大写字母转换为小写字母然后显示输出转换后的字符串 [C++程序] #include<iostream.h> classvector { inta; intb; public vectorintx=0inty=0axby{} doubleoperator*4 { doublec 5; returnc } voidinputintxinty {a=x b=y } voidoutput {cout<<’’<<a<<’’<<b<<<<end1 } }; voidmain { vectorx1020y//定义xyz三个矢量类对象并将x置初值1020 doubled//定义实数d以存放点乘结果 y.input23//给y赋值为25 d=x*y//两矢量点乘 x.output//输出矢量x y.output//输出矢量y cout<<d<<end1//输出点乘结果 }
[说明] 编写一个函数输入为偶数时调用函数求1/2+/++1/n当输入n为奇数时调用函数1/1+1/3++1/n利用指针函数 [函数] #includestdio.h main { floatpevenpodddcall floatsum intn while1 { scanf%d&n ifn>1 break } ifn%2==0 { printfEven= 1 } else { pfinffOdd= 2 } printf%fsum } floatpevenintn { floats inti s=1 fori=2i<=ni+=2 3 returns } floatpoddn intn { floats inti s=0 fori=1i<=ni+=2 4 returns } floatdcallfpn float*fp intn { floats 5 returus }
阅读以下函数说明和C语言函数将应填入n处的字句写在对应栏内 [说明1] 函数intfactorsintn的功能是判断整数nn>=2是否为完全数如果n是完全数则函数返回0否则返回-1 所谓完全数是指整数n的所有因子不包括n之和等于n自身例如28的因子为124714而28=1+2+4+7+14因此28是完全数 [C函数1] intfactorsintn {intiS; fori=ls=0;i<=n/2;i++ ifn%i==O1; if2return0 rerurn-1; } [说明2] 函数intmaxintinta[]intk的功能是用递归方法求指定数组中前k个元素的最大值并作为函数值返回 [C函数2] intmaxintinta[]intk {intt; if3return4; t=maxinta+15j returna[0]>ta[0]t; }
[说明] 下面的词典类Dic实现了简单的英译汉功能程序运行后的输出为我是一个学生 [C++程序] #include<iostream.h> #include<string.h> #defineMax100 classDic {inttop; charwords[Max][12]; charmean[Max][20]; public: Die{top=0;} voidaddcharw[]charm[]{ strcpywords[top]w; strcpymean[top]m; 1; } voidtranscharstr[]{ inti=0j=0k=0s; charw[12]h[200]; whilel{ ifstr[i]!=’’&&str[i]!=’/0’ w[j++]=str[i];//读取单词的一个字符记录在w中 else{ w[j]=’/0’; fors=0;s<top;s++ ifstrcmpwords[s]w20break; ifs<top//找到了翻译成对应的mean[s] {strcpywmean[s];j=3;} else//未找到翻译成unknown {strcpywunknown};j=9;} fors=0;s<j;s++ h[k++]=w[s]; ifstr[i]==’/0’{4;break;} j=0; } i++; } cout<<h<<endl; } }; voidmain {Dicobj; obj.addI我; obj.addam是; obj.addstudent学生; obj.adda一个; obj.trans5; }
阅读以下说明和Java程序将应填入n处的字句写在对应栏内[说明]下面程序输出一个矩形面积以及矩形区域上的假想的作物产量[Java程序]publicclassMainJava{publicstaticvoidmainString[]args{Lot_sizesmall=newLot_size;Lot_sizemedium=newLot_size;small.set55525;medium.set10101050;System.out.printlnForasmalllotofarea+small.get_area+/n;System.out.printlntheactualcropsare$+small.get_data2+/n;System.out.printlnandidealcropsare$+small.getdata+/n;System.out.printlnForamediumlotofarea+medium.get_area+/nSystem.out.printlntheactualcropsare$+medium.get_data2+/n;System.out.printlnandidealcropsare$+medium.get_data+/n;}}classCrop_assessment{privateintactual_crop;privateintideal_crop;publicvoidsetintin_actualintinideal{actual_crop=in_actual;ideal_crop=in_ideal;}publicintget_actual_crop{return1;}publicintget_ideal_cropreturn2;}}classLot_size{privateintlength;privateintwidth;privateCrop_assessmentcrop=3;publicvoidsetint1intWintainti{length=1;width=W;crop.setai;}publicintget_area{returnlength*width;}publicintget_datafreturn4;}publicintget_data2return5;}}
[说明] Kruskal算法是一种构造图的最小生成树的方法设G为一无向连通图令T是由G的顶点构成的于图Kmskal算法的基本思想是为T添加适当的边使之成为最小生成树初始时T中的点互相不连通考察G的边集E中的每条边若它的两个顶点在T中不连通则将此边添加到T中同时合并其两顶点所在的连通分量如此下去当添加了n-1条边时T的连通分量个数为1T便是G的一棵最小生成树 下面的函数voidKruskalEdgeTypeedges[]intn利用Kruskal算法构造了有n个顶点的图edges的最小生成树其中数组father[]用于记录T中顶点的连通性质其初值为father[i]=-1i=01n-1表示各个顶点在不同的连通分量上若有father[i]=jj>-1则顶点ij连通函数intFindintfather[]intv用于返回顶点v所在树形连通分支的根结点 [函数] #defineMAXEDGE1000 typedefstruct {intv1; intv2; }EdgeType; voidKruskalEdgeTypeedges[]intn {intfather[MAXEDGE]; intijvf1vt2; fori=0;i<n;i++father[i]=-1; i=0; j=0; whilei<MAXEDGE&&j<1 {vf1=Findfatheredges[i].v1; vf2=Findfatheredges[i].v2; if2 {3=vf1; 4; printf%3d%3d/nedges[i].v1edges[i].v2; } 5; } } intFindintfather[]intv {intt; t=v; whilefather[t]>=0t=father[t]; returnt; }
[函数2.1说明] 下面程序的功能是将由键盘输入的某个十进制数转换成对应的R进制数并输出这里R是2到16的整数由键盘输入例如输入n=128base=13后的输出为9B [函数2.1] #include<stdio.h> main {charb[16]={’0’’1’’2’’3’’4’’5’’6’’7’’8’’9’’A’’B’’C’’D’’E’’F’}; intc[64]ni=0base; printfEnteranumber:;scaaf%d&n; printfEnternewbase:;scanf%d&base; do{c[i]=1; i++; n=n/base; }while2; printfTransmitnewbase:; for--i;i>=0;--iprintf%c3; } [函数2.2说明] 所谓回文字符中是指正序和逆序拼写相同的字符串例如astrtsaadgdtdgda等下面函数intfunchar*str的功能是判断字符串str是否是回文当字符串是回文时函数返回1否则返回0 [函数2.2] intfunchar*str {intijl; fori=0;str[i]!=’/0’;i++; l=i/2; forj=0i--;j<=1;4 if5return0; return1; }
阅读以下说明和C语言函数填补空缺 [说明]函数countmonthsDATEstartDATE 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.282007.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 日期数据类型定义如下typedefstruct{ intyear;intmonth;intday;/*日期的年号4位月和日号*/}DATE; 程序中使用的函数cmp_dateisLeapYear 和makevalid说明如表11-8所示 表11-8函数说明 函数名 参数 返回值 说明 cmp_date DATEstart DATEend -1start<end 0start=end 1start>end 比较两个日期的大小例如 2007.1.30小于2007.5.15 2008.11.23等于2008.11.23 2008.1.31大于2007.5.15 isLeapYear intyear 1year表示的年号是闰年 0year表示的年号不是闰年 判断给定年号是否为闰年 makevalid DATE*r 无 若日期*r是非法的即*r不是闰年时其日期为2月29日或者其46911等月份出现了31日则将其日期改为当月最后 [C语言函数]intcount_monthsDATEstartDATEend {intyears=0months=0; DATEr;ifcmp_datestartend>0{ r=start;start=end;end=r; }years=end.year-start.year; /*计算年数*/r=start; r.year=end.year;ifcmp_daterend>0{ /*修正年数*/1; r.year--;} ifr.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修正为有效日期*/ ifcmp_daterend>0/*修正月份数*/ 4;months+=5 ;/*计算总月份数*/returnmonths; }
阅读以下说明和C程序代码将程序补充完整 [说明] 下面C程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数 函数intisPalmlong m的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0 [C程序代码]#include<stdio.h> #include<stdlib.h>intisPalmlongm {inti=0k=0;charstr[32]; whilem>0{str[k++]=1+’0’; m=m/10;}fori=0;i<k/2; i++ifstr[i]!=str[2]return0; return1;}intmain {longnat; printfinputapositiveinteger:;scanf%ld&n; ifn<100||n>=1000return-1;while3 {printf%id->n;fora=0t=n; t>0;{a=4*10+t%10;t=t/10; n=5;printf%id/nn; systempause;return0;
阅读以下说明和C语言函数回答问题 [说明] 下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误 [C程序代码]01#include<stdio.h> 0203intmain04 {05longnnum;06int i;0708do{ 09printf清输入一个正整数:;10scanf%idn; 11}whilen<=0;12k=1; 13fori=1;n>=0;i++{14 ifiio2=1{15Rum=num+n%10*k; 16k=k*10;17}18 n=n/10;19}20 printf新数据为:%d/nnum;21return0; 22}
热门题库
更多
中级系统集成项目管理工程师
中级网络工程师
中级信息系统管理工程师
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识