首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
下列数据结构中,能用二分法进行查找的是______
查看本题答案
包含此试题的试卷
初级程序员《单选题》真题及答案
点击查看
你可能感兴趣的试题
下列数据结构中能用二分法进行查找的是
无序线性表
线性链表
二叉链表
顺序存储的有序表
下列数据结构中能用二分法进行查找的是
无序线性表
线性链表
二叉链表
顺序存储的有序表
下列数据结构中能用二分法进行查找的是
顺序存储的有序线性表
线性链表
二又链表
有序线性链表
热门试题
更多
阅读以下说明和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;}
[说明] 若S和T是用结点大小为1的单链表存储的两个串试设计一个算法找出S中第一个不在T中出现的字符查找过程是这样的取S中的一个字符结点然后和T中所有的字符一一比较直到比完仍没有相同的字符时查找过程结束否则再取S中下一个字符重新进行上述过程 [函数] typedefstructnode{ chardata; structnode*next; }LinkStrNode;//结点类型 typedefLinkStrNode*LinkString;//LinkString为链串类型 LifikStringS;//S是链串的头指针 charSearchNoinLinkStringSLinkStringT {//查找不在T中出现的字符 LinkStrNode*p*q; 1; q=T; while2 {//取S中结点字符 while3//进行字符比较 q=q->next ifq==NULLreturn4//找到并返回字符值 q=T//指针恢复串T的开始结点 5 } printfthere’snosuchcharacter. returnNULL }
[说明] 设有一张学生成绩表scores存放在Access数据库Student中其中包括学生编号姓名以及各科目考试成绩下面的应用程序利用ADOData和DataGrid控件实现了对成绩数据的基本管理其操作包括 1添加新记录单击添加按钮光标将指向最后一条数据记录在其后编辑好新的数据记录后再单击更新按钮该数据即被加入成绩表 2删除记录单击删除按钮将删除当前所指记录其后的数据记录依次上移 3更新记录直接编辑某条已有记录再单击更新按钮将更新成绩表 4记录排序选中单列字段后单击排序按钮记录集将按该字段升序排列 程序的运行界面为 在开发过程中数据库连接对象使用了名为Adodc1的ADOData控件数据显示区域使用了名DataGnd1的DataGrid控件界面上从左到右各操作按钮分别取名为CmdAddCmdDelCmdUpdateCmdRefreshCmdSort和CmdExit [VisualBasic代码] DimconndatabasetableAsString PrivateSubForm_Load database=E:/Student.mdb’设置要访问的数据库 conn=Provider=Microsoft.Jet.OLEDB.4.0;DataSouse=&database Adodc1.ConnectionString=conn’设置连接字符串 table=scores Adode1.1=table’设置所要访问的数据表 SetDataGrid1.2=Adodc1 EndSub PrivateSubCmdAdd_Click’添加按钮的单击事件响应过程 Adodc1.Recordset.3 EndSub PrivateSubCmdDel_Click’删除按钮的单击事件响应过程 Adodc1.Recordset.Delete Adodc1.Reeordset.MoveNext EndSub PrivateSubCmdUpdate_Click’更新按钮的单击事件响应过程 Adode1.Reeordset.UpdateBatchadAffectAll EndSub PrivateSubCmdRefresh_Cliek’刷新按钮的单击事件响应过程 Adodc1.Refresh EndSub PrivateSubCmdSort_Cliek’排序按钮的单击事件响应过程 IfDataGrid1.SelStartCol<0OrDataGridl.SelStartCol4DataGrid1.SelEndColThen MsgBox请选择某一字段列! ExitSub EndIf Adodc1.RecordSource=SELECT*FROM&table&orderby&_ DataGrid1.Columns5.DataField Adodc1.Refresh EndSub PrivateSubCmdExit_Click’退出按钮的单击事件响应过程 End EndSub
[说明] 下面的流程图实现了正整数序列{K1K2Kn}的重排得到的新序列中比K1小的数都在K1的左侧比K1大的数都在K1的右侧以n=6为例序列{122913218}的重排过程为 {122913218} →{212913218} →{921213218} →{892121321} [流程图]
[说明] 下面的程序演示了根据随机产生的奖牌数生成金银奖牌榜的过程程序使用的排序法是简单排序法以金牌得数为例其思想是选择最大的元素将它交换到最前面然后对剩下的部分采用同样的方法直到全部排序完成 程序界面中左右两个文本框分别用于存放随机产生的奖牌数以及生成的奖牌榜名为Text1和Text2上下两个按钮分别名为Command1和Command2代码中使用的量主要有一维数组cntries用于存储10个国家的名称二维数组medals其元素medalsi0和medalsi1分别用于存放第i个i从0开始国家的金银牌数目 [VisualBasic代码] Dimcntries10AsStringmedals102AsInteger ’随机产生奖牌数 SubnewMedals ’为数组cntries和medals赋值 EndSub ’输出奖牌榜 SubprintOuttxtAs1 DimstrResuhAsStringiAsInteger strResult=国家&Chr9&金牌数&Chr9&银牌数&vbCrLf Fori=0To9 strResult=strResult&cntriesi&Chr9&medalsi0&Chr9&medalsi1&vbCrLf Next txt.Text=strResult EndSub ’交换两变量的值 Subexchange2aAsVariant2bAsVariant DimtempAsVariant temp=a:a=b:b=temp EndSub ’随机产生并输出奖牌数 PrivateSubCommand1_Click newMedals printOutText1 EndSub ’生成并输出奖牌榜 PrivateSubCommand2_Click DimijkAsIntegertempAsString Fori=0To9’按金牌数排序 j=i’找到自第i个位置起全部数据中金牌得数最多者记其下标为j Fork=i+1To9 If3Thenj=k Next Ifi<>jThen’若ij不等则交换对应位置的国家名金银牌数目 exchangecntnesientriesj exchangemedalsi0medalsj0 exchangemedalsi1medalsj1 EndIf Next Fori=0To9’按银牌数进行二次排序 j=i Fork=i+1To9 Ifmedalsk0<>medalsj0Then4 If5Thenj=k Next Ifi<>jThen exchangecntriesicntriesj exchangemedalsi1medalsj1 EndIf Next printOutText2 EndSub
阅读下列说明图和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;} }
阅读以下说明和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语言函数填补空缺 [说明]已知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;}
[说明] 邻接表是图的一种顺序存储与链式存储结合的存储方法其思想是对于图G中的每个顶点vi将所有邻接于vi的顶点vj连成一个单链表这个单链表就称为顶点vi的邻接表其中表头称作顶点表结点VertexNode其余结点称作边表结点EdgeNode将所有的顶点表结点放到数组中就构成了图的邻接表AdjList邻接表表示的形式描述如下#defineMaxVerNum100/*最大顶点数为100*/ typedefstructnode{/*边表结点*/ intadjvex;/*邻接点域*/ structnode*next;/*指向下一个边表结点的指针域*/}EdgeNode; typedefstructvnode{/*顶点表结点*/ intvertex;/*顶点域*/ EdgeNode*firstedge;/*边表头指针*/ }VertexNode; typedefVertexNodeAdjList[MaxVerNum];/*AdjList是邻接表类型*/ typedefstruct{ AdjListadjlist;/*邻接表*/ intn;/*顶点数*/ }ALGraph;/*ALGraph是以邻接表方式存储的图类型*/ 深度优先搜索遍历类似于树的先根遍历是树的先根遍历的推广 下面的函数利用递归算法对以邻接表形式存储的图进行深度优先搜索设初始状态是图中所有顶点未曾被访问算法从某顶点v出发访问此顶点然后依次从v的邻接点出发进行搜索直至所有与v相连的顶点都被访问若图中尚有顶点未被访问则选取这样的一个点作起始点重复上述过程直至对图的搜索完成程序中的整型数组visited[]的作用是标记顶点i是否已被访问 [函数] voidDFSTraverseALALGraph*G/*深度优先搜索以邻接表存储的图G*/ {inti; fori=0;i<1;i++visited[i]=0; fori=0;i<1;i++if2DFSALGi; } voidDFSALALGraph*Ginti/*从Vi出发对邻接表存储的图G进行搜索*/ {EdgeNode*p; 3; p=4; whilep!=NULL/*依次搜索Vi的邻接点Vj*/ {if!visited[5]DFSALG5; p=p->next;/*找Vi的下一个邻接点*/ } }
【说明】 设有3n+2个球互连将自然数1~3n+2分别为这些球编号使相连的两球编号之差的绝对值正好是数列123n+1中的各数如下图所示 其中填自然数的思想如下 1先自左向右第1列中间1个填数然后第2列上下2个填数每次2列但若n为偶数最后1次只排第1列中间一个数 2自右向左先右第1列中间填数若n是奇数再右第2列中间填数然后依次右第1列上下2个填数再右第2列中间1个填数直到左第2列为止 【程序】 #include<stdio.h> #definesize10 inta[3][size]; voidmain { intikmn; printfimputthen:; scanf%d&n; k=1; fori=0;i<=n/2;i++ { a[1][2*i]=k;k++; ifi==n/2&&1||i<n/2 { a[0][2*i+1]=k; k++; 2 k++; } } ifn%2==1 { 3 k++; m=n; } else 4 fori=0;i<n/2;i++ { a[1][m-2*i]=k;k++; 5 k++; a[2][m-2*i-1]=k;k++; } a[1][1]=k; printf/n; printf; fori=1;i<=n;i++ printf%6da[0][i]; printf/n/n; fori=0;i<=n+1;i++ printf%6da[1][i]; printf/n/n; printf; fori=1;i<=n;i++ printf%6da[2][i]; printf/n; }
阅读以下说明和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语言程序填补空缺 [说明] 某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件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函数代码回答问题 [说明]著名的菲波那契数列定义式为 f1=1f2=1fn=fn-1+fn-2n=34 因此从第1项开始的该数列为1123581321函数fib1和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项调用fib1fib2时可确保参数n获得一个正整数1 [C函数代码]函数fib1fib2求得菲波那契数列第n项n>40的速度并不相同清指出速度慢的函数名并简要说明原因
阅读以下说明和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语言程序填补空缺 [说明] 某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件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}
[说明] 本程序将利用文本框txtInput输入的一行字符串中的所有字母加密加密加密结果在文本txtCode中显示加密方法如下将每个字母的序号移动5个位置即A->Fa->fB->GY->DZ->E程序段如下 [VisualBasic代码] PrivateSubForm_Click DimstrInputAsString*70输入字符串 DimCodeasString*70加密结果 DimstrTempAsString*1当前处理的字符 DimiasInteger DimLengthAsInteger字符串长度 DimiAscAsInteger第i个字ASCII码 1取字符串 i=1 Code= 2去掉字符串右边的空格求真正的长度 DoWhilei<=Length 3取第i个字符 IfstrTemp>=AAndstrTemp<=Z’Then iAsc=AscstrTemp+5 IfiAsc>AscZTheniAsc=iAsc-26 Code=Left$Codei-1+Chr$iAsc ElseIfstrTemp>=aAndstrTemp<=zThen iAsc=AscstrTemp+5 IfiAsc>AsczTheniAsc=iAsc-26 Code=Left$Codei-1+Chr$iAsc Else Code=Left$Codei-1+strTemp EndIf 4 Loop 5显示加密结果 EndSub
阅读以下说明和C函数代码回答问题 [说明]著名的菲波那契数列定义式为 f1=1f2=1fn=fn-1+fn-2n=34 因此从第1项开始的该数列为1123581321函数fib1和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项调用fib1fib2时可确保参数n获得一个正整数1 [C函数代码]函数fib1和fib2存在错误只需分别修改其中的一行代码即可改正错误 1函数fib1不能通过编译请写出fib1中错误所在行修改正确后的完整代码 2函数fib2在n≤2时不能获得正确结果请写出fib2中错误所在行修改正确后的完整代码
阅读以下说明和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}
阅读以下说明和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;} }
阅读以下说明和流程图回答问题将解答填入对应栏[说明]直接插入法排序是一种N2运算量的例程只能用在N较小的时候其方法是挑出第二个数将它按与第一个数大小的顺序插入然后挑出第三个数将它按大小顺序插入到前两个数中如此下去一直到最后一个也插入注流程中循环开始的说明按照循环变量循环初值循环终值增量格式描述[问题]将流程图的1~5处补充完整
阅读以下函数说明和C语言函数将应填入n处的字句写在对应栏内[说明]该程序从正文文件test.txt中读入一批整数并将它们按照递增的顺序存放在一个链表中其中函数structLink*insertChainstructLink*headstructLink*k用来寻找结点k在链表head中的插入位置并插入该结点[C程序]#include<stdio.h>#include<stdlib.h>structLink{intnumber;structLink*next;}structLink*insertChainstructLink*headstructLink*k;VOidmain{structLink*ptr*head;FILE*fd;inthum;iffd=fopentest.txtr==NULL{printCannotopenthisfile!/n;return;}head=NULLwhilefscanffd%dhum==1{ptr=1;if!ptrreturn;ptr->number=hum;ptr->next=NULL;head=insertChainheadptr;}2;return;}structLink*insertChainstructLink*headstructLink*k{structLink*ptr*u;ptr=head;whileptr&&k&&k->number>ptr->number{u=ptr;3}ifptr==headhead=k;else4;5;returnhead;}
阅读以下说明和C++程序将应填入n处的字句写在对应栏内[说明]下面程序输出一个矩形面积以及矩形区域上的假想的作物产量[C++程序]#include<iostream.h>classcrop_assessment{intactual_crop;intideal_crop;public:voidsetintin_actualintin_ideal{actualcrop=in_actual;ideal_crop=in_ideal;}intget_actual_cropvoid{1;}intget_ideal_cropvoid{2;};Classlot_size{intlength;intwidth;3crop;public:voidsetint1intwintainti{length=1;width=w;crop.setai;}intget_areavoid{returnlength*width;}intget_datavoid{return4;}intget_data2voidfreturn5;}}intmain{Los_sizesmallmedium;small.set55525;medium.set10101050;cout<<Forasmalllotofarea<<smallget_area<</n;cout<<theactualcropsare$<<small.get_data2<</n;cout<<andidealcropsare$<<small.get_data<</n;cout<<ForamediumLotofarea<<medium.getarea<<:/n;cout<<theactualcropsare$<<medium.get_data2<</n;cout<<andidealcropsare$<<medium.get_data<</n;return0;}
【说明】 本程序用于评选优秀教师和学生当输入一系列教师或学生的记录后将优秀学生及教师的姓名列出来其类结构如下图所示 【程序】 #include<iostream.h> #include<stdio.h> classbase { protected: charname[8]; public: voidgetname{cout<<name:;cin>>name;} voidprintname{cout<<name:<<name<<endl;} 1 }; classstudent:2 { intnum; public: voidgetnum {cout<<score:;cin>>num;} boolisgood {return3} }; classteacher:2 { intnum; public: voidgetnum {cout<<paper:;cin>>num;} boolisgood {returnnum>3true:false;} voidmain { base*p[50]; student*pstud; teacher*ptech; charch; intcount=0; do{ cout<<inputteachertorstudents:; cin>>ch; ifch==’s’ { pstud=newstudent; pstud->getname; pstud->getnum; p[count++]=pstud; } elseifch==’t’ { 4 ptech->getname; ptech->getnum; p[count++]=ptech; } else cout<<inputiswrong<<endl; cout<<continuetoiputy/n; cin>>ch; }whilech==’y’; forinti=0;i<count;i++ if5 p[i]->printname; }
阅读以下说明和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;
[程序5.1说明] 下列程序运行时当单击窗体后从键盘输入一个字符判断该字符是字母字符数字字符还是其他字符并做相应的显示窗体上无任何控件并禁用Ase和Chr函数SelectCase语句中禁用枚举值 [VisualBasic代码] PrivateSubFormLoad DimxAsString*1 X=1请输入单个字符字符 SelectCaseUCase2 Case3 PrintX+是字母字符 Case4 PrintX+是数字字符 CaseElse PrintX+是其他字符 EndSelect [程序5.2说明] 在窗体上画一个名称为Timer1的计时器和一个名称为Labe11的标签当运行程序后将在标签中显示当前时间的数字时钟包括时分秒 [VisualBasic代码] PrivateSubFom_Load Timer1.Interval=1000 EndSub PrivateSubTimer1_timer5 EndSub
阅读以下说明和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}
【说明】 计算三角函数sinx 给定精度e和n若第k步后的结果为sin1第k+1步后的结果为sin2若|sin1·sin2|<e则返回sin1的值若没有达到精度e但是步骤达到n步则返回第n步后的值其流程图如下所示
[说明] 从键盘输入一个高精度正整数n去掉其中s个数字后按原左右次序再组成一个新的正整数对给定的n要寻找一种方案使得余下的数字组成的新数最小 算法分析 每次删除一个数字选择一个使余下的数最小的数字作为删除对象当s=1时在n中删除哪一个数字能达到最小的目的从左到右每相邻的两个数字比较若出现减郎左边大于右边则删除左边的大数字若不出现减即所有数字全部升序则删除最右边的大数字当s>l当然小于n的位数按上述操作一个一个删除删除一个达到最小后再从头即从串首开始删除第2个依此分解为s次完成若删除不到s个后已无左边大于右边的减序则停止删除操作打印余下串的左边L-s个数字即可x为统计删除数字的个数m=1表示脱离循环L为n的长度 [流程图] [问题] 将流程图中的1~5处补充完整
热门题库
更多
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术
电话交换专业技术