首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
通过电话线连接到因特网使用的链路层协议有SLIP和 (212) ,这种情况下给主机动态分配一个 (213) 。如果通过N-ISDN连网,用户可以使用的信道带宽是2B+D,数据速率最大可达到 (214...
查看本题答案
包含此试题的试卷
初级程序员《简单单选》真题及答案
点击查看
你可能感兴趣的试题
当通过电话线连接到ISPH寸因为电话线路输出信号为______信号只能通过调制解调器同电话网连接
数字
模拟
音频
模拟数字
通过电话线连接到因特网使用的链路层协议有SLIP和212这种情况下给主机动态分配一个213如果通过N
主机名
IP地址
端口号
时隙
目前连接到ISP的方式基本上分为通过电话线路和【18】连接到ISP
SLIP和PPP都是通过普通电话线连接的协议比较SLIP和PPP两个协议则
SLIP比PPP要快
SLIP比PPP要新
PPP比SLIP要快
PPP与SLIP一样
当通过电话线连接到ISP时因为电话线路输出信号为——信号计算机输出信号只能通过调制解调器同电话网连接
数字
模拟
音频
模拟数字
当通过电话线连接到ISP时因为电话线路输出信号为______信号计算机输出信号只能通过调制解调器与电
数字
模拟
音频
模拟数字
通过电话线连接到因特网使用的链路层协议有SLIP和212这种情况下给主机动态分配一个213如果通过N
2.048MB/s
1.544Mb/s
10Mb/s
8Mb/s
当通过电话线连接到ISP时因为电话线路输出信号为哪种信号计算技术输出信号只能通过调制解调器同电话网连
数字
模拟
音频
模拟数字
目前连接到ISP的方式基本上分为通过电话线路和______连接到ISP
当通过电话线连接到ISP时因为电话线路输出信号为信号计算技术出信号只能通过调制解调器同电话网连接
数字
模拟
音频
模拟数字
通过电话线连接到因特网使用的链路层协议有SLIP和212这种情况下给主机动态分配一个213如果通过N
HDLC
PPP
TCP
POP
通过电话线连接到因特网使用的链路层协议有SLIP和212这种情况下给主机动态分配一个213如果通过N
56kb/s
64kb/s
128kb/s
144kb/s
目前连接到ISP的方式基本上分为通过电话线路和【13】连接到ISP
热门试题
更多
[说明]下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误[C程序代码]01#include<stdio.h>0203intmain0405longnnum;06inti;0708do09printf清输入一个正整数:;10scanf%idn;11whilen<=0;12k=1;13fori=1;n>=0;i++14ifiio2=115Rum=num+n%10*k;16k=k*10;1718n=n/10;1920printf新数据为:%d/nnum;21return0;22
[说明]某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件dial.txt中其数据格式如下拨入或拨出标记通话开始时间通话结束时间对方号码注1数据字段以一个空格作为分隔符注2拨入和拨出标记均为小写字母拨入标记为i表示其他用户呼叫本机本机用户不需付费拨出标记为o表示本机呼叫其他用户此时本机用户需要付费注3通话开始和结束时间的格式均为HH:MM:SS其中HH表示小时取值00~23MM表示分钟取值00~59SS表示秒取值00~59从通话开始到结束这段时间称为通话时间假定每次通话时间以秒为单位最短为1秒最长不超过24小时注4跨月的通话记录计入下个月的通话数据文件例如o23:01:1200: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:2582346789i15:10:0016:01:1513890000000o10:53:1211:07:0563000123o23:01:1200:12:1513356789001[C语句程序代码]#include<stdio.h>FILE*fin;intmaincharstr[80];inth1h2m1m2s1s2;longt_startt_endinterval;intc;doublefee=0;fin=fopendial.txtrj;if!finreturn-1;while!feoffinif!fgetsstr80finbreak;if1continue;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/*通话结束时间*/if2/*若通话开始和结束时间跨日*/interval=3-t_start+t_end;elseinterval=t_end-t_start;c=4;/*计算完整分钟数表示的通话时间*/ifinterval%605;fee+=c*0.08;fclosefin;printffee=%.21f/nfee;return0;
[说明]已知1900年1月1日是星期一下面的函数count_5_13intyear用于计算给定的年份year中有几个黑色星期五黑色星期五指既是13日又是星期五的日期函数count_5_13intyear首先算出年份year的1月13日是星期几然后依次计算每个月的13日是星期几若是星期五则计数程序中使用了函数isLeapYearintyear其功能是判断给定年份是否为闰年返回值为1或0分别表示year是或不是闰年[C语言函数]intCount_5_13intyearintdate;/*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=21:0;form=1;3;m++switchmcase1: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;
[说明] 某单位动态收集的数据中常包含重复的数据所以需要进行处理使得重复的数据仅出现一次下面流程图的功能是在nn≥1个数据D1D2…Dn中选出其中所有不重复的k个数据置于原来前k个数据的位置上 该流程图的算法如下第1个数据必然被选出然后从第2个数据开始逐个考察其余的数据假设D1D2…Dmm≥1是已经选出的不重复的数据则对于数据Dim<i≤n将其依次与DmDm-1…D1进行比较若没有发现与之相同者则Di被选出并置于Dm+1的位置上否则对Di不做处理 例如如下10个数据 5227447191n=10 经过上述算法处理后的结果为 527419k=6 [流程图] 本题流程图如图8-32所示 注循环开始的说明按照“循环变量名循环初值循环终值增量”格式描述 4处填
[说明]下面的程序按照以下规则输出给定名词的复数形式1若名词以y结尾则删除y并添加ies2若名词以sch或sh结尾则添加es3其他所有情况直接添加s[C程序]#include<stdio.h>#include<string.h>char*pluralchar*wordintn;char*pstr;n=strlenword;/*求给定单词的长度*/pstr=char*mallocn+3;/*申请给定单词的复数形式存储空间*/if!pstr||n<2returnNULL;strcpypstrword;/*复制给定单词*/if1pstr[n-1]=’i’;pstr[n]=’e’;pstr[n+1]=’s’;2;elseifpstr[n-1]==’s’||pstr[n-1]==’h’&&3pstr[n]=’e’;pstr[n+1]=’s’;pstr[n+2]=’/0’;elsepstr[n]=’s’;pstr[n+1]=’/0’;4;maininti;char*ps;charwc[9][10]=chairdairybosscircusflydogchurchcluedish;fori=0;i<9;i++ps=5;printf%s:%s/nwc[i]ps;/*输出单词及其复数形式*/freeps;/*释放空间*/systempause;
[说明]已知1900年1月1日是星期一下面的函数count_5_13intyear用于计算给定的年份year中有几个黑色星期五黑色星期五指既是13日又是星期五的日期函数count_5_13intyear首先算出年份year的1月13日是星期几然后依次计算每个月的13日是星期几若是星期五则计数程序中使用了函数isLeapYearintyear其功能是判断给定年份是否为闰年返回值为1或0分别表示year是或不是闰年[C语言函数]intCount_5_13intyearintdate;/*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=21:0;form=1;3;m++switchmcase1: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;
[说明]已知1900年1月1日是星期一下面的函数count_5_13intyear用于计算给定的年份year中有几个黑色星期五黑色星期五指既是13日又是星期五的日期函数count_5_13intyear首先算出年份year的1月13日是星期几然后依次计算每个月的13日是星期几若是星期五则计数程序中使用了函数isLeapYearintyear其功能是判断给定年份是否为闰年返回值为1或0分别表示year是或不是闰年[C语言函数]intCount_5_13intyearintdate;/*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=21:0;form=1;3;m++switchmcase1: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程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数函数intisPalmlongm的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0[C程序代码]#include<stdio.h>#include<stdlib.h>intisPalmlongminti=0k=0;charstr[32];whilem>0str[k++]=1+’0’;m=m/10;fori=0;i<k/2;i++ifstr[i]!=str[2]return0;return1;intmainlongnat;printfinputapositiveinteger:;scanf%ld&n;ifn<100||n>=1000return-1;while3printf%id->n;fora=0t=n;t>0;a=4*10+t%10;t=t/10;n=5;printf%id/nn;systempause;return0;
[说明] 某单位动态收集的数据中常包含重复的数据所以需要进行处理使得重复的数据仅出现一次下面流程图的功能是在nn≥1个数据D1D2…Dn中选出其中所有不重复的k个数据置于原来前k个数据的位置上 该流程图的算法如下第1个数据必然被选出然后从第2个数据开始逐个考察其余的数据假设D1D2…Dmm≥1是已经选出的不重复的数据则对于数据Dim<i≤n将其依次与DmDm-1…D1进行比较若没有发现与之相同者则Di被选出并置于Dm+1的位置上否则对Di不做处理 例如如下10个数据 5227447191n=10 经过上述算法处理后的结果为 527419k=6 [流程图] 本题流程图如图8-32所示 注循环开始的说明按照“循环变量名循环初值循环终值增量”格式描述 2处填
[说明]下面的程序按照以下规则输出给定名词的复数形式1若名词以y结尾则删除y并添加ies2若名词以sch或sh结尾则添加es3其他所有情况直接添加s[C程序]#include<stdio.h>#include<string.h>char*pluralchar*wordintn;char*pstr;n=strlenword;/*求给定单词的长度*/pstr=char*mallocn+3;/*申请给定单词的复数形式存储空间*/if!pstr||n<2returnNULL;strcpypstrword;/*复制给定单词*/if1pstr[n-1]=’i’;pstr[n]=’e’;pstr[n+1]=’s’;2;elseifpstr[n-1]==’s’||pstr[n-1]==’h’&&3pstr[n]=’e’;pstr[n+1]=’s’;pstr[n+2]=’/0’;elsepstr[n]=’s’;pstr[n+1]=’/0’;4;maininti;char*ps;charwc[9][10]=chairdairybosscircusflydogchurchcluedish;fori=0;i<9;i++ps=5;printf%s:%s/nwc[i]ps;/*输出单词及其复数形式*/freeps;/*释放空间*/systempause;
[说明] 下面流程图的功能是在已知字符串A中查找特定字符串B如果存在则输出B串首字符在A串中的位置否则输出-1设串A由n个字符A0A1…An-1组成串B由m个字符B0B1…Bm-1组成其中n≥m>0在串A中查找串B的基本算法如下从串A的首字符A0开始取子串A0A1…im-1与串B比较若不同则再取子串A1A2…Am与串B比较以此类推 例如字符串“CABBRFFD”中存在字符子串“BRF”输出3不存在字符子串“RFD”输出-1 在流程图中i用于访问串A中的字符i=01…n-1j用于访问串B中的字符j=01…m-1在比较AiAi+1…Ai+m-1与B0B1…Bm-1时需要对Ai与B0Ai+1与B1…Ai+j与Bj…逐对字符进行比较若发现不同则需要取下一个子串进行比较以此类推 [流程图] 本题流程图如图8-30所示 4处填
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明]下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误[C程序代码]01#include<stdio.h>0203intmain0405longnnum;06inti;0708do09printf清输入一个正整数:;10scanf%idn;11whilen<=0;12k=1;13fori=1;n>=0;i++14ifiio2=115Rum=num+n%10*k;16k=k*10;1718n=n/10;1920printf新数据为:%d/nnum;21return0;22
[说明]下面待修改的C程序完成的功能是对于给定的一个长正整数从其个位数开始每隔一位取一个数字即取其个位百位万位等数字形成一个新的整数并输出例如将该程序修改正确后运行时若输入14251382则输出的整数为4532下面给出的C程序代码中有5个错误请指出所有的错误[C程序代码]01#include<stdio.h>0203intmain0405longnnum;06inti;0708do09printf清输入一个正整数:;10scanf%idn;11whilen<=0;12k=1;13fori=1;n>=0;i++14ifiio2=115Rum=num+n%10*k;16k=k*10;1718n=n/10;1920printf新数据为:%d/nnum;21return0;22
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明]某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件dial.txt中其数据格式如下拨入或拨出标记通话开始时间通话结束时间对方号码注1数据字段以一个空格作为分隔符注2拨入和拨出标记均为小写字母拨入标记为i表示其他用户呼叫本机本机用户不需付费拨出标记为o表示本机呼叫其他用户此时本机用户需要付费注3通话开始和结束时间的格式均为HH:MM:SS其中HH表示小时取值00~23MM表示分钟取值00~59SS表示秒取值00~59从通话开始到结束这段时间称为通话时间假定每次通话时间以秒为单位最短为1秒最长不超过24小时注4跨月的通话记录计入下个月的通话数据文件例如o23:01:1200: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:2582346789i15:10:0016:01:1513890000000o10:53:1211:07:0563000123o23:01:1200:12:1513356789001[C语句程序代码]#include<stdio.h>FILE*fin;intmaincharstr[80];inth1h2m1m2s1s2;longt_startt_endinterval;intc;doublefee=0;fin=fopendial.txtrj;if!finreturn-1;while!feoffinif!fgetsstr80finbreak;if1continue;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/*通话结束时间*/if2/*若通话开始和结束时间跨日*/interval=3-t_start+t_end;elseinterval=t_end-t_start;c=4;/*计算完整分钟数表示的通话时间*/ifinterval%605;fee+=c*0.08;fclosefin;printffee=%.21f/nfee;return0;
[说明]下面C程序代码的功能是对于输入的一个正整数n100≤n<1000先判断其是否是回文数正读反读都一样的数若不是则将n与其反序数相加再判断得到的和数是否为回文数若还不是再将该和数与其反序数相加并进行判断依此类推直到得到一个回文数为止例如278不是回文数其反序数为872相加后得到的1150还不是回文数再将1150与其反序数511相加得到的1661是回文数函数intisPalmlongm的功能是将正整数m的各位数字取出存入数组中然后判断其是否为回文数若m是回文数则返回1否则返回0[C程序代码]#include<stdio.h>#include<stdlib.h>intisPalmlongminti=0k=0;charstr[32];whilem>0str[k++]=1+’0’;m=m/10;fori=0;i<k/2;i++ifstr[i]!=str[2]return0;return1;intmainlongnat;printfinputapositiveinteger:;scanf%ld&n;ifn<100||n>=1000return-1;while3printf%id->n;fora=0t=n;t>0;a=4*10+t%10;t=t/10;n=5;printf%id/nn;systempause;return0;
[说明] 著名的菲波那契数列定义式为 f1=1f2=1fn=fn-1+fn-2n=34… 因此从第1项开始的该数列为1123581321…函数fib1和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项调用fib1fib2时可确保参数n获得一个正整数1 [C函数代码] 函数fib1fib2求得菲波那契数列第n项n>40的速度并不相同清指出速度慢的函数名并简要说明原因
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明] 已知某二叉树的非叶子节点都有两个孩子节点现将该二叉树存储在结构数组Ht中节点结构及数组Ht的定义如下 #defineMAXLEAFNUM30 Structnode charch; char*pstr; intparent; intlchildrchiid; ; StructnodeHt[2*MAXLEAFNUM]; 该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中例如某二叉树如图8-26所示其存储结构如图8-27所示其中与叶子节点a对应的数组元素下标为1a的父节点存储在Ht[5]表示为Ht[1].parent=5Ht[7].parent=0表示7号节点是树根Ht[7].lchild=3Ht[7].rchild=6分别表示7号节点的左孩子是3号节点右孩子是6号节点 如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示从根节点开始到叶子节点为止按所经过分支的次序将相应标识依次排列可得到一个01序列称之为对应叶子节点的编码例如图8-26中abcd的编码分别是100101011 函数LeafCodeHt[]n的功能是求解存储在Ht中的二叉树中所有叶子节点n个的编码叶子节点存储在Ht[1]~Ht[n]中求出的编码存储区由对应的数组元素pstr域指示 函数LeafCode从叶子到根逆向求叶子节点的编码例如对图8-26中叶子节点a求编码的过程如图8-28所示 [函数] typedefenumStatusERROROKStatus; StatusLeafCodeStruetnodeHt[]intn intpcpf; intistart; chartstr[31]=’/0’; fori=1;1;i++ start=29; pc=i;pf=Ht[i].parent; whilePf!=2 if3.lchiid==pc tstr[--start]=’0’; else tstr[-start]=’1’; pc=4;pf=Ht[Pf].parent; Ht[i].pstr=char*malloc31-start; if!Ht[i].pstrreturnERROR; strcpyHt[i].pstr5; returnOK; 4填
[说明] 已知某二叉树的非叶子节点都有两个孩子节点现将该二叉树存储在结构数组Ht中节点结构及数组Ht的定义如下 #defineMAXLEAFNUM30 Structnode charch; char*pstr; intparent; intlchildrchiid; ; StructnodeHt[2*MAXLEAFNUM]; 该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中例如某二叉树如图8-26所示其存储结构如图8-27所示其中与叶子节点a对应的数组元素下标为1a的父节点存储在Ht[5]表示为Ht[1].parent=5Ht[7].parent=0表示7号节点是树根Ht[7].lchild=3Ht[7].rchild=6分别表示7号节点的左孩子是3号节点右孩子是6号节点 如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示从根节点开始到叶子节点为止按所经过分支的次序将相应标识依次排列可得到一个01序列称之为对应叶子节点的编码例如图8-26中abcd的编码分别是100101011 函数LeafCodeHt[]n的功能是求解存储在Ht中的二叉树中所有叶子节点n个的编码叶子节点存储在Ht[1]~Ht[n]中求出的编码存储区由对应的数组元素pstr域指示 函数LeafCode从叶子到根逆向求叶子节点的编码例如对图8-26中叶子节点a求编码的过程如图8-28所示 [函数] typedefenumStatusERROROKStatus; StatusLeafCodeStruetnodeHt[]intn intpcpf; intistart; chartstr[31]=’/0’; fori=1;1;i++ start=29; pc=i;pf=Ht[i].parent; whilePf!=2 if3.lchiid==pc tstr[--start]=’0’; else tstr[-start]=’1’; pc=4;pf=Ht[Pf].parent; Ht[i].pstr=char*malloc31-start; if!Ht[i].pstrreturnERROR; strcpyHt[i].pstr5; returnOK; 2处填
[说明] 下面流程图的功能是在已知字符串A中查找特定字符串B如果存在则输出B串首字符在A串中的位置否则输出-1设串A由n个字符A0A1…An-1组成串B由m个字符B0B1…Bm-1组成其中n≥m>0在串A中查找串B的基本算法如下从串A的首字符A0开始取子串A0A1…im-1与串B比较若不同则再取子串A1A2…Am与串B比较以此类推 例如字符串“CABBRFFD”中存在字符子串“BRF”输出3不存在字符子串“RFD”输出-1 在流程图中i用于访问串A中的字符i=01…n-1j用于访问串B中的字符j=01…m-1在比较AiAi+1…Ai+m-1与B0B1…Bm-1时需要对Ai与B0Ai+1与B1…Ai+j与Bj…逐对字符进行比较若发现不同则需要取下一个子串进行比较以此类推 [流程图] 本题流程图如图8-30所示 2处填
[说明] 著名的菲波那契数列定义式为 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中错误所在行修改正确后的完整代码
[说明]假设数组A中的各元素A1A2AM已经按从小到大排序M≥1数组B中的各元素B1B2BN也已经按从小到大排序N≥1执行下面的流程图后可以将数组A与数组B中所有的元素全都存入数组C中且按从小到大排序注意序列中相同的数全部保留并不计排列顺序例如设数组A中有元素25679数组B中有元素2347则数组C中将有元素223456779[流程图]本题流程图如图8-31所示
[说明] 已知包含头节点不存储元素的单链表的元素已经按照非递减方式排序函数compressNODE*head的功能是去掉其中重复的元素使得链表中的元素互不相同 处理过程中当元素重复出现时保留元素第一次出现所在的节点 图8-29ab是经函数compress处理前后的链表结构示例图 链表的节点类型定义如下 typedefstructNode intdata; structNode*next; NODE; [C语言函数] voidcompressNODE*head NODE*ptr*q; ptr=1;/*取得第一个元素节点的指针*/ while2&&ptr->next q=ptr->next; whileq&&3/*处理重复元素*/ 4=q->next; freeq; q=ptr->next; 5=ptr->next; /*endofwhile*/ /*endofcompress*/ 3填
[说明]函数countmonthsDATEstartDATEend的功能是计算两个给定日期之间所包含的完整月份数该函数先算出起止日期中所含的完整年数再计算余下的完整月份数规定两个相邻年份的同月同日之间的问隔为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比较后将月份数修正为52起止日期跨年度计算方法如下例所示对于起止日期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日期数据类型定义如下typedefstructintyear;intmonth;intday;/*日期的年号4位月和日号*/DATE;程序中使用的函数cmp_dateisLeapYear和makevalid说明如表11-8所示表11-8函数说明函数名参数返回值说明cmp_dateDATEstartDATEend-1start<end0start=end1start>end比较两个日期的大小例如2007.1.30小于2007.5.152008.11.23等于2008.11.232008.1.31大于2007.5.15isLeapYearintyear1year表示的年号是闰年0year表示的年号不是闰年判断给定年号是否为闰年makevalidDATE*r无若日期*r是非法的即*r不是闰年时其日期为2月29日或者其46911等月份出现了31日则将其日期改为当月最后[C语言函数]intcount_monthsDATEstartDATEendintyears=0months=0;DATEr;ifcmp_datestartend>0r=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!id3;/*将日期r修正为有效日期*/ifcmp_daterend>0/*修正月份数*/4;months+=5;/*计算总月份数*/returnmonths;
[说明] 已知包含头节点不存储元素的单链表的元素已经按照非递减方式排序函数compressNODE*head的功能是去掉其中重复的元素使得链表中的元素互不相同 处理过程中当元素重复出现时保留元素第一次出现所在的节点 图8-29ab是经函数compress处理前后的链表结构示例图 链表的节点类型定义如下 typedefstructNode intdata; structNode*next; NODE; [C语言函数] voidcompressNODE*head NODE*ptr*q; ptr=1;/*取得第一个元素节点的指针*/ while2&&ptr->next q=ptr->next; whileq&&3/*处理重复元素*/ 4=q->next; freeq; q=ptr->next; 5=ptr->next; /*endofwhile*/ /*endofcompress*/ 1填
[说明]函数countmonthsDATEstartDATEend的功能是计算两个给定日期之间所包含的完整月份数该函数先算出起止日期中所含的完整年数再计算余下的完整月份数规定两个相邻年份的同月同日之间的问隔为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比较后将月份数修正为52起止日期跨年度计算方法如下例所示对于起止日期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日期数据类型定义如下typedefstructintyear;intmonth;intday;/*日期的年号4位月和日号*/DATE;程序中使用的函数cmp_dateisLeapYear和makevalid说明如表11-8所示表11-8函数说明函数名参数返回值说明cmp_dateDATEstartDATEend-1start<end0start=end1start>end比较两个日期的大小例如2007.1.30小于2007.5.152008.11.23等于2008.11.232008.1.31大于2007.5.15isLeapYearintyear1year表示的年号是闰年0year表示的年号不是闰年判断给定年号是否为闰年makevalidDATE*r无若日期*r是非法的即*r不是闰年时其日期为2月29日或者其46911等月份出现了31日则将其日期改为当月最后[C语言函数]intcount_monthsDATEstartDATEendintyears=0months=0;DATEr;ifcmp_datestartend>0r=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!id3;/*将日期r修正为有效日期*/ifcmp_daterend>0/*修正月份数*/4;months+=5;/*计算总月份数*/returnmonths;
[说明] 已知包含头节点不存储元素的单链表的元素已经按照非递减方式排序函数compressNODE*head的功能是去掉其中重复的元素使得链表中的元素互不相同 处理过程中当元素重复出现时保留元素第一次出现所在的节点 图8-29ab是经函数compress处理前后的链表结构示例图 链表的节点类型定义如下 typedefstructNode intdata; structNode*next; NODE; [C语言函数] voidcompressNODE*head NODE*ptr*q; ptr=1;/*取得第一个元素节点的指针*/ while2&&ptr->next q=ptr->next; whileq&&3/*处理重复元素*/ 4=q->next; freeq; q=ptr->next; 5=ptr->next; /*endofwhile*/ /*endofcompress*/ 5填
热门题库
更多
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术