竞赛java编程题50题(有答案).pdf
《竞赛java编程题50题(有答案).pdf》由会员分享,可在线阅读,更多相关《竞赛java编程题50题(有答案).pdf(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【程序 1】题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?/这是一个菲波拉契数列问题public class lianxi01 public static void main(String args)System.out.println(第 1 个月的兔子对数:1);System.out.println(第 2 个月的兔子对数:1);int f1=1,f2=1,f,M=24;for(int i=3;i=M;i+)f=f2;f2=f1+f2;f1=f;System.out.println(第
2、+i+个月的兔子对数:+f2);packagepackage akjava;publicpublic classclass tuzi/*paramparam args*/publicpublic staticstatic voidvoid main(String args)intint f1=1,f2=1,f;System.out.println(第1个月的兔子对数:1System.out.println(第2个月的兔子对数:1forfor(intint i=3;i23;i+)f=f1+f2;););f1=f2;f2=f;System.out.println(第+i+月是:t+f+只兔子!);
3、【程序 2】题目:判断 101-200 之间有多少个素数,并输出所有素数。程序分析:判断素数的方法:用一个数分别去除2 到 sqrt(这个数),如果能被整除,此数不是素数,反之是素数。则表明public class lianxi02 public static void main(String args)int count=0;for(int i=101;i200;i+=2)boolean b=false;for(int j=2;j=Math.sqrt(i);j+)if(i%j=0)b=false;break;else b=true;if(b=true)count+;System.out.pr
4、intln(i);System.out.println(素数个数是:+count);packagepackage akjava;publicpublic classclass Sushu/*paramparam args*/publicpublic staticstatic voidvoid main(String args)intint j,num=0;System.out.println(101 200的素数是:);forfor(intint i=101;i200;i+)forfor(j=2;ji;j+)ifif(i%j=0)breakbreak;if(i=j)System.out.pri
5、nt(+i);num+;System.out.print(n素数的个数是:+num);【程序 3】题目:打印出所有的 水仙花数,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个 水仙花数,因为 153=1 的三次方5 的三次方3 的三次方。public class lianxi03 public static void main(String args)int b1,b2,b3;for(int m=101;m1000;m+)b3=m/100;b2=m%100/10;b1=m%10;if(b3*b3*b3+b2*b2*b2+b1*b1*b1)=m)System.
6、out.println(m+是一个水仙花数);packagepackage akjava;publicpublic classclass ShuiXianHua/*paramparam args*/publicpublic staticstatic voidvoid main(String args)System.out.println(符合水仙花数的三位数是:);intint a=0,b=0,c=0;forfor(intint i=100;i0;)a=j%10;j=j/10;b=j%10;j=j/10;c=j%10;j=j/10;ifif(i=Math.pow(a,3)+Math.pow(b
7、,3)+Math.pow(c,3)System.out.print(+i);【程序 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 的值,重复执行第一步。import java.util.*;publicclasslianxi
8、04public static void main(String args)Scanner s=new Scanner(System.in);System.out.print(请键入一个正整数:);intn=s.nextInt();int k=2;System.out.print(n+=);while(k 1;)/if(n=k)System.out.println(n+=+n+*1);break;/elseifif(n%k=0)System.out.print(k);n=n/k;ifif(n!=1)System.out.print(*);k+;elsek+;【程序 5】题目:利用条件运算符的嵌
9、套来完成此题:学习成绩=90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。import java.util.*;public class lianxi05 public static void main(String args)int x;char grade;Scanner s=new Scanner(System.in);System.out.print(请输入一个成绩:);x=s.nextInt();grade=x=90?A:x=60?B:C;System.out.println(等级为:+grade);packagepackage akjava;
10、importimport java.io.BufferedReader;importimport java.io.IOException;importimport java.io.InputStreamReader;importimport java.util.Arrays;/import java.nio.Buffer;importimport java.util.Scanner;publicpublic classclass denji/*paramparam args*throwsthrows IOException*/publicpublic staticstatic voidvoid
11、 main(String args)throwsthrowsIOException BufferedReader s=newnew BufferedReader(newnewInputStreamReader(System.in);String art=s.readLine();System.out.println(art);Scanner scan=newnew Scanner(System.in);System.out.println(请输入你的数据:);intint n=scan.nextInt();charchar grade=(n=90?A:(n=60?B:C);System.out
12、.println(grade=+grade);【程序 6】题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。/*在循环中,只要除数不等于 0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。*/import java.util.*;publicclasslianxi06public static void main(String args)inta,b,m;Scanner s=new Scanner(System.in);System.ou
13、t.print(键入一个整数:);a=s.nextInt();System.out.print(再键入一个整数:);b=s.nextInt();deff cd=new deff();m=cd.deff(a,b);int n=a*b/m;System.out.println(最大公约数:+m);System.out.println(最小公倍数:+n);class deffpublic int deff(int x,int y)int t;if(x y)t=x;x=y;y=t;while(y!=0)if(x=y)return x;else int k=x%y;x=y;y=k;return x;pa
14、ckagepackage akjava;importimport java.util.Scanner;publicpublic classclass 公约数公倍数/*paramparam args*/privateprivate staticstatic intint deff(intint x,intint y)ifif(x=y)returnreturn x;ifif(y=0)returnreturn x;returnreturn deff(y,x%y);publicpublic staticstatic voidvoid main(String args)System.out.printl
15、n(请输入你的两个数:);Scanner scan=newnew Scanner(System.in);intint x=scan.nextInt();intint y=scan.nextInt();intint gongyueshu=deff(x,y);intint gongbeishu=x*y/gongyueshu;System.out.println(公约数=+gongyueshu+公倍数=+gongbeishu);【程序 7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。import java.util.*;public class lianxi07 publ
16、ic static void main(String args)int digital=0;int character=0;int other=0;int blank=0;char ch=null;Scanner sc=new Scanner(System.in);String s=sc.nextLine();ch=s.toCharArray();for(int i=0;i=0&ch=a&ch A&ch=Z)character+;else if(ch=)blank+;else other+;System.out.println(数字个数:+digital);System.out.println
17、(英文字母个数:+character);System.out.println(空格个数:+blank);System.out.println(其他字符个数:+other);packagepackage akjava;importimport java.io.BufferedReader;importimport java.io.IOException;importimport java.io.InputStreamReader;importimport java.util.Arrays;publicpublic classclass calzifu/*paramparam args*throw
18、sthrows IOException*/privateprivate staticstatic voidvoid cal(String art)charchar a=newnew charchar;intint x=0,y=0,z=0,q=0;forfor(intint i=0;iart.length();i+)/将字符串赋值给字符数组a=Arrays.copyOf(a,a.length+1);ai=art.charAt(i);forfor(intint j=0;ja.length;j+)ifif(aj=a|aj=A)x+;/字母elseelse ifif(aj=0)y+;/数字elseel
19、se ifif(aj=)z+;/空格elseelse q+;/其他System.out.println(字母=+x+数字=+y+空格=+z+其他=+q);publicpublic staticstatic voidvoid main(String args)throwsthrowsIOException BufferedReader str=newnew BufferedReader(newnewInputStreamReader(System.in);System.out.println(请输入字符串:);String art=str.readLine();cal(art);【程序 8】题目
20、:求 s=a+aa+aaa+aaaa+aa.a的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有 5 个数相加),几个数相加有键盘控制。import java.util.*;public class lianxi08 public static void main(String args)long a,b=0,sum=0;Scanner s=new Scanner(System.in);System.out.print(输入数字 a 的值:);a=s.nextInt();System.out.print(输入相加的项数:);int n=s.nextInt();i
21、nt i=0;while(i n)b=b+a;sum=sum+b;a=a*10;+i;System.out.println(sum);【程序 9】题目:一个数如果恰好等于它的因子之和,这个数就称为完数。例如 6=123.编程找出 1000 以内的所有完数。public class lianxi09 public static void main(String args)System.out.println(1到 1000 的完数有:);for(int i=1;i1000;i+)int t=0;for(int j=1;j=i/2;j+)if(i%j=0)t=t+j;if(t=i)System.o
22、ut.print(i+);【程序 10】题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10 次落地时,共经过多少米?第10 次反弹多高?public class lianxi10 public static void main(String args)double h=100,s=100;for(int i=1;i10;i+)s=s+h;h=h/2;System.out.println(经过路程:+s);System.out.println(反弹高度:+h/2);【程序 11】题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都
23、是多少?public class lianxi11 public static void main(String args)int count=0;for(int x=1;x5;x+)for(int y=1;y5;y+)for(int z=1;z 0&x 10&x 20&x 40&x 60&x 100)y=20*0.175+40*0.08+40*0.015+(x-100)*0.01;System.out.println(应该提取的奖金是 +y+万);【程序 13】题目:一个整数,它加上100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?public class li
24、anxi13 public static void main(String args)for(int x=1;x100000;x+)if(Math.sqrt(x+100)%1=0)if(Math.sqrt(x+168)%1=0)System.out.println(x+加 100 是一个完全平方数,再加168 又是一个完全平方数);/*按题意循环应该从-100 开始(整数包括正整数、负整数、零),这样会多一个满足条件的数-99。但是我看到大部分人解这道题目时都把题中的“整数”理解成正整数,我也就随大流了。*/【程序 14】题目:输入某年某月某日,判断这一天是这一年的第几天?import jav
25、a.util.*;public class lianxi14 public static void main(String args)int year,month,day;int days=0;int d=0;int e;input fymd=new input();do e=0;System.out.print(输入年:);year=fymd.input();System.out.print(输入月:);month=fymd.input();System.out.print(输入天:);day=fymd.input();if(year 0|month 12|day 31)System.out
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 竞赛 java 编程 50 答案
限制150内