50道编程算法题
1、求出三组互不相同的自然数A,B,C,使之满足 (算法提示 …
34、输入一个数,判断能否同时被3和7整除。
35、输入三个小数,输出三个小数中的最大的小数
36、输入一个数,判断它是否是质数
37、计算3到300中的质数有几个
38、求两个数的最大公约数
39、求两个数的最小公倍数
40、输入一个数,并把它分解质因数
m=CSng(InputBox("输入第一个数","求最大公约数",96))
n=Csng(InputBox("输入第二个数","求最大公约数",144))
Do Until n=0
x=n
n=m Mod n
m=x
Loop
MsgBox m
120、分数 ,=1,2,3,......,1000,哪些分数可约分?
13、编程计算1/1+1/2+2/3+3/5+5/8+8/13的和?
14、编程输出 + + + + + + + ......前20项之和?
15、编程求和 2+2(1/2)+3(1/3)+4(1/4)+5(1/5)+......2005(1/2005)+2006(1/2006)?
16、输入x,y两个数,输出这两个数中的最大数m?
Cstr len mid
84、把100最多可拆成哪些正整数的平方和?
85、求1000前五个质数。
86、若恰是5的倍数,求出3个不同的n
87、将表示成5个连续奇数之和
先把中间的数求出来!
50道C++编程练习题及解答
50道C/C++编程练习题1、输入3个数,求最大值int main(){ int a,b,c,m;cin>>a>>b>>c;m=a;if(b>m) m=b;if(c>m) m=c;cout<<m;}2、编程序,求方程ax2+bx+c=0的根#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,d,x1,x2;cin>>a>>b>>c;if(a==0)if(b==0) cout<<"error\n";else cout<< "x="<<-c/b<<endl;else{ d=b*b-4*a*c;if(fabs(d)<=1e-6)cout<<"x1=x2="<<-b/(2*a)<<endl;else if(d>1e-6){ x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);cout<<"x1="<<x1<<",x2="<<x2<<endl; }else cout<<"方程无实根\n";}}3、输入一个成绩,打印相应的等级int main(){ int a;cin >> a;if(a>=90) cout<<"A";else if(a>=80) cout<<"B";else if(a>=70) cout<<"C";else if(a>=60) cout<<"D";else cout<<"E";} 4、输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边。
北大 poj acm题目推荐50题
-北大poj acm题目推荐50题POJ == 北京大学ACM在线评测系统/JudgeOnline1. 标记难和稍难的题目大家可以看看,思考一下,不做要求,当然有能力的同学可以直接切掉。
2. 标记为A and B 的题目是比较相似的题目,建议大家两个一起做,可以对比总结,且二者算作一个题目。
3. 列表中大约有70个题目。
大家选做其中的50道,且每类题目有最低数量限制。
4. 这里不少题目在BUPT ACM FTP 上面都有代码,请大家合理利用资源。
5. 50个题目要求每个题目都要写总结,养成良好的习惯。
6. 这50道题的规定是我们的建议,如果大家有自己的想法请与我们Email 联系。
7. 建议使用C++ 的同学在POJ 上用G++ 提交。
8. 形成自己编写代码的风格,至少看上去美观,思路清晰(好的代码可以很清楚反映出解题思路)。
9. 这个列表的目的在于让大家对各个方面的算法有个了解,也许要求有些苛刻,教条,请大家谅解,这些是我们这些年的经验总结,所以也请大家尊重我们的劳动成果。
10. 提交要求:一个总文件夹名为bupt0xx (即你的比赛帐号), 这个文件夹内有各个题目类别的子目录(文件夹),将相应的解题报告放入对应类别的文件夹。
在本学期期末,小学期开始前,将该文件夹的压缩包发至buptacm@。
对于每个题目只要求一个POJxxxx.cpp 或POJxxxx.java (xxxx表示POJ该题题号) 的文件,注意不要加入整个project 。
11. 如果有同学很早做完了要求的题目,请尽快和我们联系,我们将指导下一步的训练。
下面是一个解题报告的范例:例如:POJ1000.cpp//考查点:会不会编程序。
//思路:此题要求输入两个数,输出两个数的和,我用scanf 和printf。
//提交情况:Wrong Answer 1次,忘了写printf()。
Compile Error 2次,选错了语言,由于C++ 和G++ 在iostream.h 的不用引用方法;少一个大括号。
ACM必做50题的解题-模拟
}
return 1;
}
int main(){
int i,j,n;
char c;
scanf("%d",&n);
while(n--){
for(i=1; i<=3; i++)
scanf("%s %s %s",left[i],right[i],result[i]);
for(c='A'; c<='L'; c++){
1)选择合适的算法
对于每一枚硬币x逐个试探:
x比真币轻的猜测是否成立?猜测成立则进行输出。
x比真币重的猜测是否成立?猜测成立则进行输出。
2)选择合适的数据结构
以字符串数组存储称量的结果。每次称量时,天平左右最多有6枚硬币。因此,字
符串的长度需要为7,最后一位存储字符串的结束符’\0’,便于程序代码中使用字符串
{
int t,n;
cin>>t;
while(t--){
cin>>n;
int x,y;
int cross[SIZE];
memset(cross,0,sizeof(cross));
for(int i=0;i<n;++i){
cin>>x>>y;
int start,end;
if(x>y){
swapnum(x,y);
case 'u': if( strchr(left[i], x) == NULL) return 0;
break;
case 'e': if(strchr(right[i], x) != NULL || strchr(left[i], x) != NULL) return 0;
典型算法题复习
1.在PV操作中会有一个经典的例子就是爸爸妈妈儿子女儿吃水果问题,爸爸妈妈向盘子里放入水果,儿子女儿向盘子取水果。
然而爸爸只向盘子放苹果,妈妈只向盘子放橘子,女儿只能吃苹果,儿子只能吃橘子。
并且盘子里只能装一个水果,这样爸爸妈妈就要竞争盘子向里面放入水果。
而儿子女儿取走水果后必须通知爸爸妈妈向里面放入水果。
这就是一个典型的PV操作中互斥与同步混合模型。
试用P、V操作写出同步算法。
2.假定某系统当时的资源分配图如下所示:(1)分析当时系统是否存在死锁。
(2)若进程P3再申请R2时,系统将发生什么变化,说明原因。
3.某操作系统采用可变分区分配存储管理方法,用户区为512K且始值为0,用空闲分区表管理空闲分区。
若分配时采用分配空闲低地址部分的方案,其初始时用户区的512K空间空闲,对下述申请序列:申请200K,申请100K,释放200K,申请120K,申请30K,申请50K,申请60K,释放30K;回答下列问题:(1)采用首次适应算法,空闲分区中有哪些空闲块(出始址,大小)?(2)采用最佳适应算法,空闲分区中有哪些空闲块(给出始址,大小)?4.今有3个进程P1、P2和P3协作解决文件打印问题:P1将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;P2将缓冲区1的记录复制到缓冲区2,每执行一次复制一个记录;P3将缓冲区2的内容打印出来,每执行一次打印一个记录。
缓冲区的大小和一个记录大小一样。
试用P、V操作来保证文件的正确打印。
5.有三个进程,Reader进程读入数据number1,将其放入缓冲器B1,Executor进程将B1中数据取出,处理成数据number2,将其放入缓冲器B2,Printer进程将number2数据取出打印,假设B1和B2只能存放一个数据,用P、V操作管理这三个进程的执行。
6.有一个具有两道作业的批处理系统(最多可有两道作业同时装入内存执行),作业调度采用计算时间短的作业优先调度算法,进程调度采用以优先数为基础的抢占式调度算法,今有如下作业序列(表中所列作业优先数即为进程优先数,数值越小优先级越高):(1)列出所有作业进入内存时间及结束时间。
c语言题库(60道题)
第一题:编写一个售货机(POS)计算程序,用于水果店售货员算账。
苹果每千克 3.2元,梨每千克1.96元,香蕉每千克3元,樱桃每千克24元。
某顾客购买1.5斤苹果,2斤梨,3斤香蕉,1.5斤樱桃,付给售货员100元。
要求规范输出这位顾客购买各类水果的名称,对应的重量和应付价钱,显示顾客所付款项,输出应找回的款项。
#include<stdio.h>main(){float apple=1.5,pear=2.0,banana=3.0,cherry=1.5;float cost,pay=100.0,retern;cost=3.2*apple+1.96*pear+3.0*banana+24.0*cherry;retern=pay-cost;printf("LIST\t重量:\t价钱:\n");printf("apple\t1.5\t%.2f\n",3.2*apple);printf("pear\t2.0\t%.2f\n",1.96*pear);printf("banana\t3.0\t%.2f\n",3.0*banana);printf("cherry\t1.5\t%.2f\n",24.0*cherry);printf("pay=%.2fRMB\ncost=%.2fRMB\nretern=%.2fRMB\n",pay,cost,retern);}第二题:编写一个程序,对输入的一组整数,分别统计其中正整数和负整数的个数(0作为结束标志)。
#include<stdio.h>main(){int a[]={12,1648,500,-322,41,-15,126,-45,0,45,-356},i=0,m=0,n=0;for(i=0;a[i]!=0;i++){if(a[i]<0)m++;else if(a[i]>0)n++;}printf("%d\n%d\n",m,n);}第三题:统计100-500之间各个数字之和为9的三位数,输出这些三位数。
C语言经典练习题50道(附答案)
1.**打印Hello World**练习:编写一个C程序,打印"Hello,World!"到屏幕上。
#include<stdio.h>int main(){printf("Hello,World!\n");return0;}2.**计算两个整数的和**练习:编写一个程序,接受两个整数,然后计算它们的和并打印结果。
#include<stdio.h>int main(){int a=5,b=7;int sum=a+b;printf("Sum:%d\n",sum);return0;}3.**判断奇数或偶数**练习:编写一个程序,接受一个整数,然后判断它是否为奇数或偶数。
#include<stdio.h>int main(){int num=10;if(num%2==0){printf("%d is even.\n",num);}else{printf("%d is odd.\n",num);}return0;}4.**计算阶乘**练习:编写一个程序,计算给定整数的阶乘。
#include<stdio.h>int main(){int n=5;int factorial=1;for(int i=1;i<=n;i++){factorial*=i;}printf("Factorial of%d is%d\n",n,factorial);return0;}5.**反转字符串**练习:编写一个程序,接受一个字符串,然后反转它并打印出来。
#include<stdio.h>#include<string.h>int main(){char str[]="Hello,World!";int len=strlen(str);for(int i=len-1;i>=0;i--){printf("%c",str[i]);}printf("\n");return0;}6.**检查素数**练习:编写一个程序,判断一个整数是否为素数。
50道C++编程练习题及解答
50道C/C++编程练习题1、输入3个数,求最大值int main(){ int a,b,c,m;cin>>a>>b>>c;m=a;if(b>m) m=b;if(c>m) m=c;cout<<m;}2、编程序,求方程ax2+bx+c=0的根#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,d,x1,x2;cin>>a>>b>>c;if(a==0)if(b==0) cout<<"error\n";else cout<< "x="<<-c/b<<endl;else{ d=b*b-4*a*c;if(fabs(d)<=1e-6)cout<<"x1=x2="<<-b/(2*a)<<endl;else if(d>1e-6){ x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);cout<<"x1="<<x1<<",x2="<<x2<<endl; }else cout<<"方程无实根\n";}}3、输入一个成绩,打印相应的等级int main(){ int a;cin >> a;if(a>=90) cout<<"A";else if(a>=80) cout<<"B";else if(a>=70) cout<<"C";else if(a>=60) cout<<"D";else cout<<"E";}4、输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边。
计算机网络计算题整理
目录1.最大传输速率R-MAX计算: (2)2.比特率与波特率的计算: (2)第三/四章数据链路层和MAC层 (2)1.带位填充首尾标志法即面向二进制帧格式:例:HDLC (3)2.奇偶校验: (3)3.校验和CheckSum (3)4.循环冗余校验CRC (4)5.流量控制 (4)1一位滑动窗口协议协议4:WT=1;WR=1 (4)2后退n帧协议 (5)6.信道利用率: (6)7.CSMA/CD最短帧长最短帧长和时隙长度为度 (6)8.求环比特长度;求总时间 (7)9.二进制指数后退算法 (7)10.碰撞问题: (8)第五章网络层 (9)1.IP地址分类 (9)2.路由算法 (9)最短路径算法Dijkstra: (9)扩散法flooding (9)距离矢量算法 (9)L-S链路状态算法 (11)2.主机的IP地址分配 (11)3.子网掩码: (11)第六章传输层 (13)1.拥塞控制 (13)2.TCP超时后的适应重发RTT (14)第七章应用层 (15)1.DNSDNS:DomainNameSystem域名系统 (15)2.E-mail系统的组成 (17)3.简单邮件传输协议SMTP (17)4.POP3 (17)第二章物理层1.最大传输速率R-MAX计算:无噪声信道:R-MAX=2Blog2VB带宽;V信号离散等级有噪声信道:香农公式:R-max=Blog21+s/n噪声=10log10S/N噪声为30dB;S/N=10002.比特率与波特率的计算:比特率=波特率*log2V注意单位:BByest字节=8bit比特1KB=1024B1Kbit=1000bit1MB=1024KB1Mbit=1000Kbit注意时间单位换算:1s=1000ms1ms=1000us1us=1000ns例题:1在一条无噪声的信道上;如果带宽是4MHz;信号分成32个等级;那么;信道的最大比特率即数据传输率为_____bps;对应波特率为_____波特;发送一个20KB的文件最短需要的时间是_____..作业一解:A无噪声;B=4MHZ;V=32R-MAX=2Blog2VB带宽;V信号离散等级=2*4*log232=2*4*5=40MbpsB比特率=波特率*log2V->波特率=比特率/log2V=40Mbps/log232=8MbrounC最短时间T=20KB/40Mbps=20*8Kbit/40*1000Kbps=0.004s=4ms这里注意时间换算2某信道的带宽为4MHz;假定无噪声并采用4电平的数字信号;试求该信道的最大数据传输率..要求列出简要计算式解:最大数据传输速率=2Blog2V=2*4*log24=2*4*2=16Mbps3采用相—幅调制PAM技术在带宽为32KHz的无噪声信道上传输数字信号;每个相位处都有两种不同幅度的电平..若要达到192Kbps的数据速率;至少要有多少种不同的相位解:无噪声;B=32KHZ;R-max=192Kbps;R-MAX=2Blog2VB带宽;V信号离散等级得Log2V=R-max/2B=192/2*32=3所以V=8;每个相位都有两种不同的幅度的电平;所以至少需要8/2=4种不同的相位..4一个TDM系统容量为480kbps;为10路语音线路共享;语音信号的带宽为3000Hz.请问模数转换的采样频率为多少每个样本/信元携带多少比特的信息假设该系统无噪声;并且采用二元信号进行传输;则信道的总带宽最小为多少Hz 如果采用曼切斯特编码;则信道的总带宽最小为多少Hz解:A采样频率为两倍信号带宽;即2*3000HZ=6KHZB先求出每路语音线路的数据传输速率为480Kbps/10=48kbps;再求每个样本携带信息为:48k/6k=8bitC假设该系统无噪声;并且采用二元信号进行传输;则信道的总带宽最小为:B=480kbps/2log2v=480ps/2=240KHZD如果采用曼切斯特编码;则信道的总带宽最小为:曼切斯特编码对信号的利用率为50%;根据结果3;信道最小总带宽:240KHZ/50%=480KHZ(5)如果主机A通过由32路TDM共享的2.048Mbps总线链路向主机B发送一个32Kb的文件;则传输时间为_____..解:先求出每路得传输速率=2.048/32=64Kbps在求时间T=32Kb/64Kbps=0.5s=500msA.500msB.1000msC.15.6msD.1000ms6在曼切斯特编码中;如果信号的到达速率即信号的波特率是10M;那么数据传输速率是_____..知识点:2-7A.5MbpsB.10MbpsC.20MbpsD.没有一个选项答案正确注:采用曼彻斯特编码的数字信道;数据传输速率是波特率1/2倍第三/四章数据链路层和MAC层1.带位填充首尾标志法即面向二进制帧格式:例:HDLC考点:把所需传输的而精致数据一字排开;并以特列的位模式01111110作为帧标志;如果内容中出现一个与帧标志相同的位串;即在第5个1后面插入1个0.例题:1采用位插入法的帧格式;若欲传输的信息是;则实际传输的比特串是_____..知识点:3-7A.解:在第5个1后面插入一个0即101111101011某8比特数据经“0比特插入”后在信道上用“曼彻斯特码”发送;信道上的信号波形如下图所示;试求原8比特数据..解:考了2个知识点:曼切斯特码低到高代表0;高到低代表1;面向2进制帧格式111110011111110112.奇偶校验:考点:在数据后加一个奇偶parity位;奇偶位设置标准是保证码字中“1”位的数目是偶数或奇数..例子:10110103.校验和CheckSum考点:将发送的数据看成是二进制整数序列;并划分成一段段规定的长度如8位、16位、32位等;累加他们的和;校验和是此和的补码..将校验和与数据一起发送..在接收端;所有数据与校验和之和=0例:1076C5FAA867E1A3B6654333C的32位校验和为__0BC152DF___..知识点:3-2解:1因为是32位故分成8个:如下:076C5FAA+867E1A3B+6654333C2依位相加;逢16进1位P S:如果是16位就把数分成4位;8位就分成2位相加..下面是16位的求法:4.循环冗余校验CRC考点:1除以多项式已经给定;如果能除尽说明无差错2CRC校验码是除以多项式的余数即原BIT+余数是最终发送的比特流例:1采用CRC校验码;生成多项式为x3+x+1;最后发送的数据为_____..解step1:通过多项式x3+x+1得到被除数为:1010;和需要在原比特后加多项式的最高次幂是3000Step2:原始比特+000后除以1010的余数即是CRC校验码相同为0;不同为1(2)已知生成多项式Gx=x4+x3+1;若接收端收到的位串为;问传输是否有错为什么列出说明理由的计算式解:1由Gx=x4+x3+1得到被除数:110012用收到的位串除以11001;如果出尽没有余数则代表无传输错误5.流量控制1一位滑动窗口协议协议4:WT=1;WR=1考点:S=next_frame_to_send;R=frame_expected接收帧时:seq与R比较;若相等则接收送网络层;且R++;否则拒绝..ack与S比较;若相等则从网络层取新包;S++;否则S无变化..发送帧时:seq=next_frame_to_send;ack=frame_expected-1;例:1采用一位滑动窗口协议即协议4;通信一方的next_frame_to_send=0;frame_expected=1;当收到一个seq=0;ack=0;data的帧后;next_frame_to_send=_____;frame_expected=_____;并将该帧的数据_____..知识点:3-5A.0;0;送网络层B.0;1;丢弃C.1;0;送网络层D.1;1;丢弃解析:seq=0与frame_expeced=1比较;不相等;frame_expeced=1;丢弃Ack=0与next_frame_to_send=0比较;相等;next_frame_to_send++=1答案是:1;1;丢弃2采用一位滑动窗口协议即协议4;通信一方的next_frame_to_send=0;frame_expected=1;当发送一帧时;帧的内容为seq=_____;ack=_____;data..知识点:3-6A.0;0B.0;1C.1;0D.1;1解:因发送帧时:seq=next_frame_to_send;ack=frame_expected-1;故:seq=0;ack=1-1=02后退n帧协议考点:发送端的等待时间至少是发送端到接收端传播时间的二倍例题:1如果主机A到主机B相距3000km;信道的传输速率为1Mbps;信号传播速率为200m/ms;发送的帧长为64字节..A 和B之间采用重发N帧协议协议5或选择性重发协议协议6进行差错控制和流量控制..如果主机A的数据链路层向主机B的数据链路层发送了0-6号帧;主机A收到了2号帧的确认;并且它的0号帧超时..请回答以下问题:10分1要使信道的利用率达到最高;如果采用协议5;帧序号应该为多少位2要使信道的利用率达到最高;如果采用协议6;帧序号应该是多少位3如果采用协议6;并且又收到了6号帧的NAK;主机A重发了哪些帧4如果采用协议5;并且又收到了3号帧的确认;4号帧定时器超时;主机A重发了哪些帧答:2分发送一个帧即收到确认所需要的时间为2*64*8/1M+3000km/200=2*0.512ms+15ms=2*15.512=31.024ms在31.024ms中可以发送的帧数为60.1..12分用协议5;序号为6位22分用协议6;序号为7位32分重发6号帧42分重发4、5、6号帧2试根据发送滑动窗口变化过程;在下图所示各发送窗口下标出“发送帧序号”或“接收确认帧序号”说明..参照第一窗口说明6.信道利用率:考点:信道的利用率为:发送时间/来回时间如果帧长1位;发送率为b位/秒;往返传输时间为R秒线路的利用率==1/1+bR例题:1在带宽为20Mbps、距离为5km的信道上用协议3传输数据帧;电信号在线路上的传播速度约为5s/km;确认帧长度忽略;当信道利用率为50%时;帧长为_____..解:设帧长为L;7.CSMA/CD最短帧长最短帧长和时隙长度为度考点:1发送最短帧的时间=帧长/网络速率=2τ=2×最长线路长度D/信号传播速率V2时隙的长度等于信号在介质上来回的传播时间例1一个CSMA/CD的网络;最大传输距离为5000米;信号传播速率为200m/μs;网络带宽为10M..最短帧长是_____..知识点:4-3时隙长度为_____..解:先求:一个时隙的长度=2T=2*D/V=2*5000/200m/us=10000/200m/us=50us根据发送最短帧的时间=帧长L/网络速率R得到最短帧长2若CSMA/CD局域网的节点最大距离为2km;网络的数据传输率为10Mbps;信号在介质中的传播速度为2×10^8m/s;求该网的最短帧长..要求写出计算过程解:最短帧的时间=2*2km/2*10^8m/s=20us最短帧长=20us*10Mbps=200bit3设信号在介质中的传播速度为200m/μs;若10Mbps的CSMA/CDLAN的最短帧长为200bit;试求该网站点的最大距离..解:先求最短帧的时间=最短帧长/网络速率=200bit/10Mbps=20us最大距离=20us*200m/us/2=2000m8.求环比特长度;求总时间例1某令牌环介质长度为20km;数据传输速率为2Mbps;环路上共有50个站点.每个站点的接口引入1位延迟;设信号在介质中的传播速度为200m/μs;试计算环的比特长度..要求写出计算过程解:环的比特长度=信号传播时延×数据传输速率+接口延迟位数=环路介质长度÷200m/μs×数据传输速率+接口延迟位数=20000÷200m/μs×2Mbps+50×1=250bit2.在100Mbps以太网中;两站点间的最大距离是200m;信号传播速度是200m/μs;求在该网上传输长度为1500bit的数据帧所需的总时间μs..要求列出简要计算步骤解:总时间=传输时延+信号传播时延传播时延=数据帧长度/数据传播速率信号传播时延=两个站之间的距离/信号传播速度总时间=数据帧长度/数据传播速率+两个站之间的距离/信号传播速度=1500bit/1ooMbit/s+200m/200m/μs=15μs+1μs=16μs9.二进制指数后退算法考点:1一般地;经i次冲突后;发送站点需等待的时隙数将从0~2^i-1中即即0;2^i-1或0;2^i随机选择随机数的最大值是1023即第10次冲突之后2对于两个站点的第j次竞争;发生在第i次冲突之后;j=i+1;站点会在0;2j-1或0;2i范围选择等待时隙..其发生冲突的概率=1/2^j-1=1/2^i;前j次竞争都冲突的概率=1×1/2×…×1/2^j-1=1/2^j-1×j/2=1/2^i×i+1/2例题:1在以太网中的某一时隙;有两个站点同时开始发送;则3次竞争内包括第3次将帧成功发送的概率是_____..或者说3次竞争总可以解决冲突的概率A.12.5%B.25%C.75%D.87.5%2在一个时隙的起始处;两个CSMA/CD站点同时发送一个帧..求前4次竞争都冲突的概率解:前四次竞争都冲突的概率为:1x0.5x0.25x0.125=0.015625=1/2^4×4-1/2第一次竞争冲突的概率为1=1/20;第二次竞争;即第一次冲突后;A、B都将在等待0个或1个时隙之间选择;选择的组合有:00、01、10、11;共4种;其中00和11将再次冲突;所以第二次竞争时;冲突的概率为0.5=1/21第三次竞争;即第二次冲突后:A、B都将在0、1、2、3之间选择;选择的组合有:00、01、02、03、10、11、12、13、20、21、22、23、30、31、32、33共16种;其中00、11、22、33将再次冲突;所以第三次竞争时;冲突的概率为0.25=1/2^2第四次竞争;即第三次冲突后:A、B都将在0、1、2、3、4、5、6、7之间选择;选择的组合共有64种;其中00、11、……、77将再次冲突;所以第四次竞争时;冲突的概率为0.125=1/2^3前四次竞争都冲突的概率为:1x0.5x0.25x0.125=0.015625=1/2^4×4-1/2=1/643)在以太网中;当两个站点碰撞即冲突5次后;选择的随机等待时隙数的范围是_____..用数学的区间符号表示;如a;b解:0;2^i-1或0;2^i————0;2^5-1=31或0;3210.碰撞问题:考点:C能收到RTS但收不到CTS;因此在A、B通信期间;C也可以和其他站点通信;而不会干扰B接收数据D收到CTS;因此D知道B将和A通信;在这段时间内;D不能发送数据E既能收到RTS又能收到CTS;因此在A、B通信期间;E不能和其他站点通信当B、C同时向A发RTS时;将会发生碰撞碰撞后将会采用二进制后退算法解决例题1IEEE802.11采用的MAC协议是CSMA/CA;在该协议中当某站点收到站点A发给站点B的RTS;没有收到任何CTS后;则该站点_____..知识点:4-6A.不能与任何站点通信B.可以与除A、B以外的站点通信C.可以与除B以外的站点通信D.可以与任何站点通信2下图WiFi网络中;D在t0时刻给C发送了RTS;C回答了CTS..D在收到CTS之后在t2时刻开始发送数据;同时A在t1时刻给B发送了RTS并在t3时刻到达B.1请简单阐述WiFi的分布式媒体访问控制方法..2如果A在t3时刻以后给B发送数据;B能正确接收吗这会干扰正在进行的C和D之间的通信吗3在t3时刻;B可以给A回答CTS吗为什么答:14分WiFi采用CSMA/CA的方法进行媒体访问控制..在发送数据前;源端首先侦听信道;如果信道空闲;则通过发送RTS/CTS短帧以防止冲突;然后再发送数据;如果信道忙;则通过二进制指数后退法等待一段时间以后再重新尝试..22分因为C在A的发射半径之外;所以A可以给B发送数据;不会干扰C接收数据32分B不可以给A发送CTS;因为B收到了C发出CTS;知道C要接收数据..而B发送的数据会干扰C接收数据第五章网络层1.IP地址分类2.路由算法最短路径算法Dijkstra:通过用边的权值作为距离的度量来计算最短路径扩散法flooding不计算路径;有路就走在数据包头设一计数器;每经过一个节点自动加1;达到规定值时;丢弃数据包在每个节点上建立登记表;则数据包再次经过时丢弃距离矢量算法是动态、分布式算法;RIP协议中使用本算法;较小系统中常使用RIP;距离矢量法定期与邻居交换自己的距离矢量..根据邻居的距离矢量及自己到邻居的距离计算到其他节点的最近距离例1下图所示的子网使用了距离矢量路由算法;如下的矢量刚刚到达路由器C:来自B的矢量为6;0;9;13;7;3;来自D 的矢量为17;13;7;0;10;11;来自E的矢量为8;7;4;10;0;5..经测量C到B;D;E的延迟分别为6;3;5..请给出C的新路由表列出使用的输出线路及新估计的从C出发的延迟..例2一个有5个节点的网络中;如果节点5的邻居有1、3、4;各邻居节点传来的距离矢量如下表所示:知识点:5-12、135到邻居1、3、4的距离分别为7、4、11..试用距离矢量法计算节点5的路由表;在表中剩余的部分填写选项..TO12345延时=A.8B.9C.10D.11线路=A.结点1B.结点2C.结点3D.结点4L-S链路状态算法链路状态法收集邻居信息;组装成一个路由分组;广播给网上的所有节点..每个节点根据收集到的路由分组总结出整个网络的拓扑结构;用单源最短路径的算法;适合较大型的网络..OSPF用LS2.主机的IP地址分配3.子网掩码:子网掩码的网络地址部分和子网地址部分全为1;它的主机部分全为0一个缺省C类IP地址的掩码为:掩码中1的个数包含子网地址的网络号=IP地址∧掩码例1子网可容纳的主机数为_____个..知识点:5-5掩码为_____可容纳主机数是32-28=4;2^4-2=16-2=14对某C类子网进行子网划分;子网号长度3位..其中子网中110二进制数子网主机号为6十进制数的节点的IP地址的最后一个字节的值为_____..3本题目包括3空某路由器中的路由表如下表所示:知识点:5-9、10、11按下表所示;当该路由器收到所指定目的地址的数据包时;填写应转发的下一跳..解:包含子网地址的网络号=IP地址∧掩码4下图所表示的网络中;子网A~D最多有30台主机..现有一个C类地址1为子网A~E分配子网号和子网掩码;并为子网E中的两台路由器的接口分别分配其IP地址..2路由器R1向外广播的子网号和子网掩码分别是多少3如果子网A中的主机要给子网D中的主机发送分组;他们需要知道R1连接在子网E中的MAC地址吗请解释原因..4如果路由器R2替换成交换机S2.请指出各自的冲突域和广播域..5如果路由器R2替换成交换机S2;子网A中的主机要给子网D中的主机发送分组;他们需要知道R1连接在子网E中的MAC 地址吗如果需要;他们如何得到其MAC地址网络;子网B为2号网络;子网C为3号网络;子网D为4号网络;子网E为5号网络;则R2的33分如果子网A中的主机要给子网D中的主机发送分组;他们不需要知道R1连接在子网E中的MAC地址;只需要知道R2连接子网A的端口的MAC地址..43分如果路由器R2替换成交换机S2.则A、B、E各形成一个冲突域..A、B、E一起形成一个广播域..52分如果路由器R2替换成交换机S2;子网A中的主机要给子网D中的主机发送分组;他们需要知道R1连接在子网E中的MAC地址..该地址可通过ARP协议获得..第六章传输层1.拥塞控制考点:1拥塞窗口初始化:连接建立时;发送方将拥塞窗口的初始大小设置为最大的数据段长度;并随后发一个最大长度的数据段;如该数据段在定时器超时前得到了确认;发送方在原来的拥塞窗口的基础上再增加一倍长度;发送两个数据段;如两个数据段都得到了确认;则再增加一倍长度;直到数据传输超时或到达接收方的窗口大小为止当拥塞窗口的大小为n个数据段时;如果发送的n个数据段都得到了确认;那么此时拥塞窗口的大小即为n个数据段对应的字节数2)拥塞窗口的大小修正:除接收窗口和拥塞窗口外;拥塞控制时还需指定一个临界值threshold;临界值的初始值为64K;如果发生数据传输超时;将临界值设为当前拥塞窗口的1/2;并使拥塞窗口恢复到最大的数据段长度;成功的传输使拥塞窗口按指数增加成倍;直到到达临界值;以后按线性增加按最大的数据段长度这种算法称为慢启动算法slowstart例题:1.数据报的最大长度为2K;当拥塞窗口为40K时发生拥塞;经过三次成功传输后;拥塞窗口大小为______..A.2KBB.8KBC.16KBD.4KB2.上题的阈值临界值大小为______..A.40KBB.20KBC.24KBD.26KB3.上题中经过五次成功传输后;拥塞窗口大小为_______..A.16KBB.20KBC.32KBD.34KB4.上题的阈值临界值大小为______..A.40KBB.50KBC.20KBD.30KB5.上题中第7次传输发生超时即发生拥塞;则拥塞窗口大小为_______..A.24KBB.128KBC.64KBD.2K6.上题的阈值临界值大小为______..A.40KBB.20KBC.10KBD.11KB2.TCP超时后的适应重发RTT考点:自适应的重发时间;将尽可能避免因延时较大而进行的错误重发;并尽可能提高系统的吞吐率;同时;对处于不同网络距离近程或远程的两台计算机的重发时间作动态的调整例1如@=7/8=0.875;RTT=10ms时;发出的3个数据报的往返时间为;12.7;13.4、15.1ms;求发出这3个数据包后最后的RTT..2设α=7/8;在RTT=5.0ms时发出的三个数据报的实际往返时间分别为5.5;6.2;7.5;则发出3个数据报后最后的RTT=______四舍五入精确到小数点后1位..解:RTT1=0.875*5+1-0.875*5.5=5.0625RTT2=0.875*5.0625+1-0.875*6.2=5.2046785RTT3=0.875*5.2+1-0.875*7.5=5.493假设主机A需要通过TCP将一个很大的文件发送给主机B..A和B之间由一台路由器相联;相距5000km;信号的传播速率为200m/ms;数据传输率为10Mbps;TCP的数据报长度为1KB..1求A和B之间发送一个数据报的往返延迟RTT..路由器的排队及转发延迟为1ms、忽略主机的处理延迟以及数据包和ACK包的传输延迟..2TCP使用慢启动来进行端对端的拥塞控制..初始临界值取8KB..请问6次成功发送之后;A和B之间的平均吞吐量是多少线路的效率是多少答:1RTT=2*1+5000km/200=2*1+25=52ms2TCP的数据报长度为1KB;初始临界值取8KB成功的传输使拥塞窗口按指数增加成倍;直到到达临界值;以后按线性增加按最大的数据段长度6次一共发送的数据量为1+2+4+8+9+10=34kB=34*8=272kb花费的时间为52*6=312ms平均吞吐量为272kb/312ms=871.795kbps线路效率是871.795k/10M=0.087第七章应用层1.DNSDNS:DomainNameSystem域名系统考点:用途:将域名映射为IP地址域名:包括了主机名、电子邮件目标地址等形式..特点:分级的、基于域的命名机制;采用分布式的数据库系统来实现此系统..DNS的请求和应答以UDP分组传输DNS是一个分布式数据库系统;由域名空间、域名服务器和_地址转换请求程序_________三部分组成..例1一台机器是否允许有多个IP地址;是否允许有多个域名在什么情况下将出现此类情况答:一台机器允许有多个IP地址;如路由器..一台机器也允许有多个域名;例如;一台机器既是web服务器又是ftp服务器例2在图a的网络结构图中;主机A要发送一个数据包给主机B;已知主机B的域名为的内容如图b所示..IP包格式和以太网的帧格式如图c所示..12分1主机A如何获得主机B的IP地址2主机A所在的网络是A、B、C类中的哪一类网络3主机A的缺省网关的IP地址是多少4主机A的MAC地址是多少5缺省网关的MAC地址是多少6主机B的IP地址是多少用点分十进制表示答:1主机A通过DNS服务获得主机B的IP地址..DNS与IP地址是映射的关系2主机A所在的网络是C类网络4主机A的MAC地址是0015c5c15e285缺省网关的MAC地址是0021272151ee6主机B的IP地址是40aa622.E-mail系统的组成用户代理消息格式消息传送最终递交3.简单邮件传输协议SMTP邮件传输程序与远程服务器通信时;将构造一个TCP连接端口号为25并通过该连接进行通信;传输电子邮件信息SMTP是两个报文传输代理MTA之间的通信协议..它有14条命令和21条应答信息..每条命令用四个字母组成;一般情况下一条命令只有一行;由三位数字的代码开始;后面附上简单的文字说明4.例1有一个简单的以太网LAN;假定简单邮件传输协议SMTP主机A站通过get命令读取被管主机B设备信息时;则A向B发送的帧内容为:2MTA用于收发电子邮件的协议是..A.FTPB.SNMPC.SMTPD.HTTP4.POP3允许用户传输代理与传输代理联系;将E-mail从ISP复制到用户端的协议应用层协议传输协议DNS UDPSMTP TCPTCPPOP3 TCPHTTP TCPSNMP UDPFTP TCPtracert过程是通过ICMP数据报超时报文来得到一张途经路由器列表的源主机向目的主机发一个IP报文;并置hop为1;到达第一个路由器时;hop减1;为0;则该路由器回发一个ICMP数据报超时报文;源主机取出路由器的IP地址即为途经的第一个路由端口地址接着源主机再向目的主机发第二个IP报文;并置hop为2;然后再发第三个、第四个IP数据报;……直至到达目的主机得到路径中最小的MTU:源主机发送一系列的探测IP数据报;并置DF=1;即不允许分段;如途径某个网络的MTU较小;则路由器将丢弃该数据报并发回一个ICMP数据报参数错;要求分段;源主机则逐步减小数据报长度;并仍置DF=1;直至某个探测报文成功到达目的主机;即得到路径中的最小MTU一个ARP请求消息是一个数据帧;其中包含发送站本身的硬件地址和协议地址;以及目的地址的IP地址;并把此数据帧在本物理网络内广播一个ARP应答消息是一个数据帧;其中包含应答站的硬件地址和协议地址;以及原发送地址的IP地址;并把此数据帧发送给原发送站。
50道C++编程练习题及解答-c编程例题
50道C++编程练习题及解答-c编程例题C++作为一种广泛应用的编程语言,通过大量的练习可以帮助我们更好地掌握其编程技巧和逻辑思维。
以下是为您精心准备的 50 道 C++编程练习题及详细解答,希望能对您的学习有所帮助。
练习题 1:计算两个整数之和题目描述:编写一个 C++程序,输入两个整数,计算它们的和并输出。
```cppinclude <iostream>using namespace std;int main(){int num1, num2, sum;cout <<"请输入第一个整数:";cin >> num1;cout <<"请输入第二个整数:";cin >> num2;sum = num1 + num2;cout <<"这两个整数的和为:"<< sum << endl;return 0;}```练习题 2:判断一个数是否为偶数题目描述:编写一个 C++程序,输入一个整数,判断它是否为偶数。
```cppinclude <iostream>using namespace std;int main(){int num;cout <<"请输入一个整数:";cin >> num;if (num % 2 == 0) {cout << num <<"是偶数" << endl;} else {cout << num <<"不是偶数" << endl;}return 0;}```练习题 3:打印 1 到 100 之间的所有奇数题目描述:编写一个C++程序,打印出1 到100 之间的所有奇数。
```cppinclude <iostream>using namespace std;int main(){for (int i = 1; i <= 100; i++){if (i % 2!= 0) {cout << i <<"";}}cout << endl;return 0;}```练习题 4:计算一个整数的阶乘题目描述:编写一个 C++程序,输入一个整数,计算它的阶乘。
python 编程题目50道
python编程题目50道1.编写一个程序,将用户输入的字符串中的所有字母转换为大写。
2.编写一个程序,将用户输入的字符串中的所有单词的首字母转换为大写。
3.编写一个程序,判断一个数字是否为质数。
4.编写一个程序,找出1到100之间所有的质数。
5.编写一个程序,找出两个列表中相同的元素。
6.编写一个程序,找出两个列表中不同的元素。
7.编写一个程序,实现冒泡排序算法。
8.编写一个程序,实现快速排序算法。
9.编写一个程序,将用户输入的字符串进行反转。
10.编写一个程序,计算一个数字的阶乘。
11.编写一个程序,实现斐波那契数列的递归算法。
12.编写一个程序,实现斐波那契数列的迭代算法。
13.编写一个程序,计算一个数字的平方根。
14.编写一个程序,将用户输入的数字列表中的每个数字进行平方。
15.编写一个程序,实现简单的计算器功能,可以进行加、减、乘、除运算。
16.编写一个程序,将用户输入的字符串按照行拆分成单词列表。
17.编写一个程序,将用户输入的字符串中的所有单词进行排序。
18.编写一个程序,实现二分查找算法。
19.编写一个程序,实现插入排序算法。
20.编写一个程序,实现选择排序算法。
21.编写一个程序,找出两个列表中重复的元素。
22.编写一个程序,将用户输入的字符串中的所有单词按照字母顺序排序。
23.编写一个程序,实现归并排序算法。
24.编写一个程序,将用户输入的数字列表中的数字按照从大到小排序。
25.编写一个程序,找出列表中最大的数字并返回。
26.编写一个程序,找出列表中最小的数字并返回。
27.编写一个程序,将用户输入的数字列表中的奇数数字删除。
28.编写一个程序,实现中位数算法(找到数字列表中的中位数)。
29.编写一个程序,将用户输入的字符串中的所有字母转换为小写。
30.编写一个程序,判断一个数字是否为偶数。
31.编写一个程序,实现括号匹配检查器(检查字符串中的括号是否匹配)。
32.编写一个程序,将用户输入的字符串中的所有单词长度求和。
电控编程基础知识题库单选题100道及答案解析
电控编程基础知识题库单选题100道及答案解析1. 在电控编程中,以下哪种语言常用于工业自动化控制?()A. PythonB. C++C. Ladder LogicD. Java答案:C解析:Ladder Logic(梯形图)常用于工业自动化控制领域的电控编程。
2. 以下哪个不是电控编程中的常见数据类型?()A. IntegerB. StringC. ObjectD. Boolean答案:C解析:Object 不是电控编程中的常见基本数据类型,Integer(整数)、String(字符串)、Boolean(布尔值)是常见的。
3. 以下哪种结构常用于循环执行一段代码?()A. If-ElseB. ForC. SwitchD. While答案:B解析:For 循环结构常用于循环执行一段代码。
4. 变量在使用前必须进行()A. 初始化B. 赋值C. 声明D. 以上都是答案:D解析:变量在使用前通常需要进行声明、赋值和初始化。
5. 在电控编程中,用于中断程序执行的语句是()A. BreakB. ContinueC. ExitD. Return答案:A解析:Break 语句用于中断循环或switch 语句的执行。
6. 以下哪个是函数的正确定义方式?()A. Function myFunction()B. def myFunction():C. void myFunction()D. int myFunction() 答案:B解析:在Python 等语言中,函数的定义通常使用def 关键字,如def myFunction(): 。
7. 以下哪个不是面向对象编程的特性?()A. 封装B. 继承C. 多态D. 过程化答案:D解析:过程化不是面向对象编程的特性,封装、继承、多态是面向对象编程的重要特性。
8. 数组的下标从()开始。
A. 0B. 1C. -1D. 任意整数答案:A解析:在大多数编程语言中,数组的下标通常从0 开始。
360 l卷 美食算法题
360 l卷美食算法题以360度烹饪为主题的美食算法题,可能涉及到优化食材搭配、烹饪时间控制、味道调配等方面。
以下是一道可能的美食算法题例子:题目:甜品餐厅点单系统甜品餐厅有多种甜品供顾客点单,每个甜品都可以指定甜度程度(0-10的整数)、口感程度(0-10的整数)和价格(正整数)。
请编写一个函数,根据给定的预算(正整数)和要求,推荐一份点单,使得甜度程度和口感程度的总和尽量接近预算,并且价格不超过预算。
函数签名:def recommend_order(budget: int, desserts:List[Tuple[str, int, int, int]]) -> Tuple[str, int, int, int]示例输入1:budget = 50desserts = [("巧克力蛋糕", 8, 9, 30), ("草莓冰淇淋", 5, 7, 20), ("瑞士卷", 6, 6, 25), ("抹茶奶酪", 9, 8, 40)]示例输出1:("草莓冰淇淋", 5, 7, 20)解释:根据预算50,最接近的甜度程度和口感程度总和为12(5+7),因此推荐选择甜度程度为5,口感程度为7,价格为20的草莓冰淇淋。
示例输入2:budget = 70desserts = [("红丝绒蛋糕", 8, 9, 40), ("提拉米苏", 7, 8, 50), ("芒果布丁", 6, 7, 30), ("抹茶绿茶蛋糕", 6, 6, 45)]示例输出2:("红丝绒蛋糕", 8, 9, 40)解释:根据预算70,最接近的甜度程度和口感程度总和为17(8+9),因此推荐选择甜度程度为8,口感程度为9,价格为40的红丝绒蛋糕。
DES加密算法中试题
DES加密算法中,函数f的输出是(1)位。
DES算法是分组密码,数据分组长度是(2)位。
用软件方法实现DES一般至少比RSA快100倍。
DES通过(3)方法产生密文。
1.A.8 B.16 C.32 D.642.A.8 B.16 C.32 D.643.A.累加 B.迭代 C.逻辑与 D.异或提醒:复习中DES、IDES、MD5、SHA的输入数据长度、输出长度等数据考前应记住。
使用什么方法(算法)或利用什么原理实现加密。
•RSA属于(4)加密方法。
RSA的一个知名应用是用在(5)。
4.A.非对称 B.对称 C.流密码 D.密钥5.A.公钥加密 B.SSL C.私钥加密 D.对称加密提醒:传统密码的特点、公开钥密码系统的特点希望考生自己看一看。
•为了防范主动攻击,数据发送方在发送端将可变长的报文经过报文摘要算法运算后产生固定长度的报文摘要,然后对报文摘要进行加密,把加密后的报文摘要和报文一起发送;接收方先对报文摘要解密,再对接收的报文进行运算,产生报文摘要,然后把接收的报文摘要和新产生的报文摘要进行比较,以验证接收的报文是否被篡改。
使用报文摘要的优点是仅对短的定长报文摘要进行加密,这样比对整个报文加密简单,但是对于报文鉴别(认证)来说效果是一样的。
•报文摘要用于(6)。
6.A.报文鉴别 B.报文加密 C.报文解密 D.邮件传送•数字签名一般用(7)算法实现。
数字签名用(8)对数字签名进行加密。
7.A.对称 B.非对称 C.DES D.IDES8.A.DES B.IDES C.私钥 D.公钥提醒:数字证书用什么算法实现?用公钥加密,用私钥解密。
•数字证书由CA发放,用(9)来识别证书。
9.A.私钥 B.公钥 C.SRA D.序列号•实时通信中密钥分发多采用(10)分发。
PKI适用(11)。
10.A.动态 B.静态 C.批量 D.点对点11.A.开放业务,不适应封闭的专用业务和保密业务。
B.开放业务,封闭的专用业务和保密业务。
算法-在字符串中删除特定的字符或字符串
算法-在字符串中删除特定的字符或字符串⾯试中经常会考到算法,下⾯分别讲如何删除⼀个字符串⾥的特定字符或特定字符串⼀、题⽬:输⼊两个字符串,从第⼀字符串中删除第⼆个字符串中所有的字符。
例如,输⼊”i want to be a excellent programmers”和”aem”,则删除之后的第⼀个字符串变成”i wnt to b xcllnt progrrs"分析:要编程完成这道题要求的功能可能并不难。
毕竟,这道题的基本思路就是在第⼀个字符串中拿到⼀个字符,在第⼆个字符串中查找⼀下,看它是不是在第⼆个字符串中。
如果在的话,就从第⼀个字符串中删除。
但如何能够把效率优化到让⼈满意的程度,却也不是⼀件容易的事情。
也就是说,如何在第⼀个字符串中删除⼀个字符,以及如何在第⼆字符串中查找⼀个字符,都是需要⼀些⼩技巧的。
⾸先我们考虑如何在字符串中删除⼀个字符。
由于字符串的内存分配⽅式是连续分配的。
我们从字符串当中删除⼀个字符,需要把后⾯所有的字符往前移动⼀个字节的位置。
但如果每次删除都需要移动字符串后⾯的字符的话,对于⼀个长度为 n 的字符串⽽⾔,删除⼀个字符的时间复杂度为 O(n)。
⽽对于本题⽽⾔,有可能要删除的字符的个数是 n,因此该⽅法就删除⽽⾔的时间复杂度为 O(n2)。
事实上,我们并不需要在每次删除⼀个字符的时候都去移动后⾯所有的字符。
我们可以设想,当⼀个字符需要被删除的时候,我们把它所占的位置让它后⾯的字符来填补,也就相当于这个字符被删除了。
在具体实现中,我们可以定义两个指针(psou和 pkey),初始的时候都指向第⼀字符的起始位置。
当 psou 指向的字符是需要删除的字符,则 psou 直接跳过,指向下⼀个字符。
如果 psou 指向的字符是不需要删除的字符,那么把 psou 指向的字符赋值给 pkey 指向的字符,并且 psou 和 pkey同时向后移动指向下⼀个字符。
这样,前⾯被psou 跳过的字符相当于被删除了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
50道JAVA基础编程练习题【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....public class Prog1{public static void main(String[] args){int n = 10;System.out.println("第"+n+"个月兔子总数为"+fun(n));}private static int fun(int n){if(n==1 || n==2)return 1;elsereturn fun(n-1)+fun(n-2);}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class Prog2{public static void main(String[] args){int m = 1;int n = 1000;int count = 0;//统计素数个数for(int i=m;i<n;i++){if(isPrime(i)){count++;System.out.print(i+" ");if(count%10==0){System.out.println();}}}System.out.println();System.out.println("在"+m+"和"+n+"之间共有"+count+"个素数");}//判断素数private static boolean isPrime(int n){ boolean flag = true;if(n==1)flag = false;else{for(int i=2;i<=Math.sqrt(n);i++){if((n%i)==0 || n==1){flag = false;break;}elseflag = true;}}return flag;}}【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
public class Prog3{public static void main(String[] args){for(int i=100;i<1000;i++){if(isLotus(i))System.out.print(i+" ");}System.out.println();}//判断水仙花数private static boolean isLotus(int lotus){int m = 0;int n = lotus;int sum = 0;m = n/100;n -= m*100;sum = m*m*m;m = n/10;n -= m*10;sum += m*m*m + n*n*n;if(sum==lotus)return true;elsereturn false;}}【程序4】题目:将一个正整数分解质因数。
例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
public class Prog4{public static void main(String[] args){ int n = 13;decompose(n);}private static void decompose(int n){ System.out.print(n+"=");for(int i=2;i<n+1;i++){while(n%i==0 && n!=i){n/=i;System.out.print(i+"*");}if(n==i){System.out.println(i);break;}}}}【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
程序分析:(a>b)?a:b这是条件运算符的基本例子。
public class Prog5{public static void main(String[] args){int n = -1;try{n = Integer.parseInt(args[0]);}catch(ArrayIndexOutOfBoundsException e){System.out.println("请输入成绩");return;}grade(n);}//成绩等级计算private static void grade(int n){if(n>100 || n<0)System.out.println("输入无效");else{String str = (n>=90)?"分,属于A等":((n>60)?"分,属于B等":"分,属于C等");System.out.println(n+str);}}}【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用辗除法。
public class Prog6{public static void main(String[] args){int m,n;try{m = Integer.parseInt(args[0]);n = Integer.parseInt(args[1]);}catch(ArrayIndexOutOfBoundsException e){ System.out.println("输入有误");return;}max_min(m,n);}//求最大公约数和最小公倍数private static void max_min(int m, int n){int temp = 1;int yshu = 1;int bshu = m*n;if(n<m){temp = n;n = m;m = temp;}while(m!=0){temp = n%m;n = m;m = temp;}yshu = n;bshu /= n;System.out.println(m+"和"+n+"的最大公约数为"+yshu);System.out.println(m+"和"+n+"的最小公倍数为"+bshu);}}【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用while语句,条件为输入的字符不为'\n'.import java.util.Scanner;public class Prog7_1{public static void main(String[] args){System.out.print("请输入一串字符:");Scanner scan = new Scanner(System.in);String str = scan.nextLine();//将一行字符转化为字符串scan.close();count(str);}//统计输入的字符数private static void count(String str){String E1 = "[\u4e00-\u9fa5]";//汉字String E2 = "[a-zA-Z]";String E3 = "[0-9]";String E4 = "\\s";//空格int countChinese = 0;int countLetter = 0;int countNumber = 0;int countSpace = 0;int countOther = 0;char[] array_Char = str.toCharArray();//将字符串转化为字符数组String[] array_String = new String[array_Char.length];//汉字只能作为字符串处理for(int i=0;i<array_Char.length;i++)array_String[i] = String.valueOf(array_Char[i]);//遍历字符串数组中的元素for(String s:array_String){if(s.matches(E1))countChinese++;else if(s.matches(E2))countLetter++;else if(s.matches(E3))countNumber++;else if(s.matches(E4))countSpace++;elsecountOther++;}System.out.println("输入的汉字个数:"+countChinese);System.out.println("输入的字母个数:"+countLetter);System.out.println("输入的数字个数:"+countNumber);System.out.println("输入的空格个数:"+countSpace);System.out.println("输入的其它字符个数:"+countSpace);}}import java.util.*;public class Prog7_2{public static void main(String[] args){System.out.println("请输入一行字符:");Scanner scan = new Scanner(System.in);String str = scan.nextLine();scan.close();count(str);}//统计输入的字符private static void count(String str){List<String> list = new ArrayList<String>();char[] array_Char = str.toCharArray();for(char c:array_Char)list.add(String.valueOf(c));//将字符作为字符串添加到list表中Collections.sort(list);//排序for(String s:list){int begin = list.indexOf(s);int end = stIndexOf(s);//索引结束统计字符数if(list.get(end)==s)System.out.println("字符‘"+s+"’有"+(end-begin+1)+"个");}}}【程序8】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。