java经典算法40例_计算机软件及应用_IT计算机_专业资料.docx
《java经典算法40例_计算机软件及应用_IT计算机_专业资料.docx》由会员分享,可在线阅读,更多相关《java经典算法40例_计算机软件及应用_IT计算机_专业资料.docx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、L程序分析:兔子的规律为数列1, 1, 2, 3, 5, 8,13, 21. public class exp2 public static void main(String args) int i=0; for (i=l; i=20; i+)System, out. printin(f (i);public static int f(int x) if(x=l I I x=2) return 1; else return f (xT)+f (x-2);)或public class exp2 public static void main(String args) int i=0;math m
2、ymath = new math(); for (i=l;i=20;i+) System, out. printin (mymath. f (i);)class math public int f(int x) if(x=l I I x=2) return 1; elsereturn f (xT)+f (x-2);【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。1 .程序分析:判断素数的方法:用个数分别去除2到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。public class exp2 public static void main(String
3、args) int i=0;math mymath = new math(); for(i=2;i=200;i+)if(mymath. iszhishu(i)=true) System, out. println(i);)class math public int f(int x) if(x=l I I x=2) return 1; else return f (xT)+f (x-2);public boolean iszhishu(int x) for(int i=2;i=x/2;i+) if (x % 2=0 ) return false; return true;【程序3】题目:打印出所
4、有的“水仙花数所谓“水仙花数”是指个三位数, 其各位数字立方和等于该数本身。例如:153是一个”水仙花数因为153=1的三次方+5的三次方+3的三次方。L程序分析:利用for循环控制100-999个数,每个数分解 出个位,十位,百位。public class exp2public static void main(String args) int i=0;math mymath = new math(); for(i=100;i=999;i+)if(mymath. shuixianhua(i)=true)System, out. println(i);)class math public in
5、t f(int x) if(x=l I I x=2) return 1; elsereturn f (xT)+f (x-2);public boolean iszhishu(int x) for(int i=2;i b)?a:b这是条件运算符的基本例子。import javax. swing.*; public class ex5 public static void main(String args) String str=;str=J0pt ionPane. showInputDialog (请输入 N 的值(输入 exit 退出):”);int N;Nt=rOy;N=Integer. p
6、arselnt(str);catch(NumberFormatException e)e. printStackTrace ();str=(N90?A:(N60?B:C);System, out. println(str);【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1 .程序分析:利用辗除法。最大公约数:public class CommonDivisor public static void main(String args) commonDi v i sor (24,32);static int commonDivisor(int M, int N) if(N0|M
7、0)Sryesttuermn. out. print In (Z/ERROR!,z) ; -1;if(N=0)(rSeytsutrenm. out. println(z,the biggest common divisor is :+M); M;return commonDivisor(N, M%N);)最小公倍数和最大公约数:import java. util. Scanner; public class CandC 下面的方法是求出最大公约数 public static int gcd(int m, int n) while (true)if (m = m % n) = 0) return
8、 n; if (n = n % m) = 0) return m;)public static void main (String args) throws Exception取得输入值/Scanner chin = new Scanner(System, in);/i/ntint a = chin, nextlnt (), b = chin, nextlnt () ; a=23;int b=32; int c = gcd(a, b);System, out. printin(最小公倍数: + a*b/c + n 最大公约数: + c);)【程序7】题目:输入一行字符,分别统计出其中英文字母、
9、空格、数字和其它字符 的个数。L程序分析:利用while语句,条件为输入的字符不为n . import java. util. Scanner; public class ex7 public static void main(String args) (System. out. printin(请输入字符串:); Scanner scan=new Scanner(System, in); String str=scan. next ();String El=u4e00-u9fa5;bintrting E2= a-zA-Z; countH=0; int countE=0; char arrCh
10、ar=str. toCharArray ();String arrStr=new StringarrChar. length; for (int i=0;iarrChar. length ;i+ ) arrStri=String. valueOf(arrChari);for (String i: arrStr ) if (i. matches(El) ( countH+;if (i. matches(E2)countE+;System, out. printin (汉字的个数+countH);System, out. printin (字母的个数+countE);【程序8】题目:求s=a+aa
11、+aaa+aaaa+aa.a的值,其中a是个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。L程序分析:关键是计算出每项的值。import java, io.*; public class Sumloop public static void main(String args) throws lOException int s=0;String output=;BufferedReader stadin = new BufferedReader(new InputStreamReader(System, in);System, out. print
12、in (请输入 a 的值);Sfotrring input =stadin. readLineO ; (int i=1;i=Integer. parselnt(input);i+)(ionuttput+=input; a=Integer. parselnt(output);s+=a;)System, out. printin (s);)另解:import java. io. *; public class Sumloop public static void main(String args) throws lOException int s=0; int n; int t=0;Buffere
13、dReader stadin = new BufferedReader(new InputStreamReader(System, in);String input = stadin. readLineO ;fno=rlnteger. parselnt (input); (int i=l;i=n;i+) t=t*10+n;s=s+t;System, out. println(t);)System, out. println(s);【程序9】题目:个数如果恰好等于它的因子之和,这个数就称为”完数%例如 6=1+2+3.编程找出1000以内的所有完数。public class Wanshu pub
14、lic static void main(String args) int s; for(int i=l;i=1000;i+)(fs=o0r; (int j=l;ji;j+) if(i % j=0)if s=s+j; (s=i)System, out. print (i+);System, out. printlnO ;【程序10】题目:球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹 多高?public class ExlO public static void main(StringL args) double s=0; do
15、uble t=100; for(int i=l;i=10;i+)(s+=t;t=t/2;)System, out. printin(s);System, out. printin(t);【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三 位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、 4组成所有的排列后再去掉不满足条件的排列。public class Wanshu public static void main(String args) int i=0; int j=0; int k=0; int t=0; for (i=l; i=4;
16、i+) for(j=l;j=4;j+) for(k=l;k=4;k+) if(i!=j & j!=k & i !=k)t+=l;System, out. printin(i*100+j*10+k);System, out. printin (t);【程序12】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖 金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到40万之间时, 高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的
17、部分,可提 成1.5%,高于100万元时,超过100万元的部分按1%提成,从 键盘输入当月利润I,求应发放奖金总数?L程序分析:请利用数轴来分界,定位。注意定义时需把奖 金定义成长整型。import java . util. *; public class test public static void main (Stringargs) double sum;声明要储存的变量应发的奖金Scanner input =new Scanner (System, in) ;/导入扌描若System, out. print (输入当月利润);double lirun二input . nextDoubl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 经典 算法 40 计算机软件 应用 _IT 计算机 专业 资料
限制150内