java经典100例算法题
JAVA经典算法50题(3)【面试+工作】
![JAVA经典算法50题(3)【面试+工作】](https://img.taocdn.com/s3/m/0c56952beef9aef8941ea76e58fafab069dc44df.png)
JAVA经典算法50题(3)【面试+工作】JAVA经典算法50题(3)【面试+工作】【程序21】题目:求1+2!+3!+...+20!的和。
1.程序分析:此程序只是把累加变成了累乘。
public class Demo21 {public static void main(String[] args) {long sum = 0;long fac = 1;for (int i = 1; i <= 20; i++) {fac = fac * i;sum += fac;}System.out.println(sum);}}【程序22】题目:利用递归方法求5!。
1.程序分析:递归公式:f(n)=f(n-1)*4!import java.util.Scanner;public class Demo22 {public static long fac(int n) {long value = 0;if (n == 1 || n == 0) {value = 1;} else if (n > 1) {value = n * fac(n - 1);}return value;}public static void main(String[] args) {System.out.println("请输入一个数:");Scanner in = new Scanner(System.in);int n = in.nextInt();System.out.println(n + "的阶乘为:" + fac(n));}}【程序23】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。
问第4个人岁数,他说比第3个人大2岁。
问第三个人,又说比第2人大两岁。
问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。
请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。
【名师精品】JAVA编程题全集(100题及答案).doc
![【名师精品】JAVA编程题全集(100题及答案).doc](https://img.taocdn.com/s3/m/fa11afe369dc5022abea003b.png)
Java程序设计总复习题1、编写一个Java程序在屏幕上输出“你好!”。
(p13,例1-1)写一个Java程序,用if-else语句判断某年份是否为闰年。
1)编写一个圆类CiYcle,该类拥有:①一个成员变量Yadius(私有,浮点型);用FileInputStYeam类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上。
(被读取的文件路径为:E:/myjava/)oStYing();(time,100,100);tYy{(1000);}catch(InteYYuptedEGceptione){}Yepaint();}}<html><head><title>JavaAppletDemo</title></head><body><appletcode=””width=300height=200></applet></body></html>Java<min)min=st[i].sJava;if(st[i].sJava>maG)maG=st[i].sJava;sum=sum+st[i].sJava;"学生编号:"+st[i].getNO()+",姓名:"+st[i].getName()+",性别:"+st[i].getSeG()+",年龄:"+st[i].getAge()+",Java课学分:"+st[i].getJava());}"共有学生:"++",平均成绩:"+sum/;"最小学分:"+min+",最大学分:"+maG);}}【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少.a的值,其中a是一个数字。
java循环试题及答案
![java循环试题及答案](https://img.taocdn.com/s3/m/bc62f6560a4c2e3f5727a5e9856a561252d3218c.png)
java循环试题及答案# Java循环试题及答案1. 题目:编写一个Java程序,使用for循环计算1到100之间所有整数的和。
答案:```javapublic class SumOfNumbers {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}System.out.println("Sum of numbers from 1 to 100 is: " + sum);}}```2. 题目:使用while循环实现一个Java程序,要求打印出从1开始的前10个奇数。
答案:```javapublic class OddNumbers {public static void main(String[] args) {int count = 1;int number = 1;while (count <= 10) {System.out.println(number);number += 2;count++;}}}```3. 题目:编写一个Java程序,使用do-while循环计算1到100之间所有整数的乘积。
答案:```javapublic class ProductOfNumbers {public static void main(String[] args) {long product = 1;int i = 1;do {product *= i;i++;} while (i <= 100);System.out.println("Product of numbers from 1 to 100 is: " + product);}}```4. 题目:使用for循环编写一个Java程序,打印出2的幂次方直到结果超过1000。
java中有趣的算法题
![java中有趣的算法题](https://img.taocdn.com/s3/m/504d12d06aec0975f46527d3240c844769eaa004.png)
java中有趣的算法题Java中有许多有趣的算法题,以下是其中一些例子:1. FizzBuzz问题,编写一个程序,打印从1到100的数字。
但是对于3的倍数,打印"Fizz"代替数字;对于5的倍数,打印"Buzz"代替数字;对于既是3的倍数又是5的倍数的数字,打印"FizzBuzz"。
2. 反转字符串,编写一个程序,将给定的字符串进行反转。
例如,输入"Hello, World!",输出"!dlroW ,olleH"。
3. 斐波那契数列,编写一个程序,计算斐波那契数列的第n个数字。
斐波那契数列是一个数列,每个数字是前两个数字的和。
例如,前几个数字是0、1、1、2、3、5、8、13、21等。
4. 最大公约数,编写一个程序,计算两个整数的最大公约数。
最大公约数是能同时整除两个数的最大正整数。
可以使用欧几里得算法来解决这个问题。
5. 排序算法,实现不同的排序算法,如冒泡排序、选择排序、插入排序、快速排序等。
这些算法可以对一个数组或列表进行排序,使其按照升序或降序排列。
6. 查找算法,实现不同的查找算法,如线性查找、二分查找等。
这些算法可以在一个有序或无序的数组或列表中查找指定的元素,并返回其位置或索引。
7. 字符串匹配算法,实现不同的字符串匹配算法,如暴力匹配、KMP算法等。
这些算法可以在一个字符串中查找指定的子串,并返回其位置或索引。
8. 图算法,实现不同的图算法,如深度优先搜索、广度优先搜索、最短路径算法等。
这些算法可以在一个图中进行遍历或寻找最短路径等操作。
以上只是一些例子,Java中还有许多其他有趣的算法题。
通过解决这些问题,可以提高自己的编程能力和算法思维。
JAVA经典算法面试40题及答案
![JAVA经典算法面试40题及答案](https://img.taocdn.com/s3/m/4c0c9a7d03768e9951e79b89680203d8ce2f6a41.png)
JAVA经典算法⾯试40题及答案现在是3⽉份,也是每年开年企业公司招聘的⾼峰期,同时有许多的朋友也出来找⼯作。
现在的招聘他们有时会给你出⼀套⾯试题或者智⼒测试题,也有的直接让你上机操作,写⼀段程序。
算法的计算不乏出现,基于这个原因我⾃⼰搜集了⼀些算法上的题型。
希望对于⼤家有所帮助。
【程序1】题⽬:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第四个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?1.程序分析:兔⼦的规律为数列1,1,2,3,5,8,13,21….public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}public static int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}或public class exp2{public static void main(String args[]){int i=0;math mymath = new math();for(i=1;i<=20;i++)System.out.println(mymath.f(i));}}class math{public int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}【程序2】题⽬:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class exp2{public static void main(String 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==1 || x==2)return 1;elsereturn f(x-1)+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】题⽬:打印出所有的 “⽔仙花数 “,所谓 “⽔仙花数 “是指⼀个三位数,其各位数字⽴⽅和等于该数本⾝。
JAVA编程题全集(100题及答案)
![JAVA编程题全集(100题及答案)](https://img.taocdn.com/s3/m/746481455f0e7cd1842536cd.png)
Java程序设计总复习题1、编写一个Java程序在屏幕上输出“你好!”。
(p13,例1-1)编写一个Java程序,用if-else语句判断某年份是否为闰年。
(1)编写一个圆类Circle,该类拥有:①一个成员变量Radius(私有,浮点型);;public class Strinput{public static void main(String args[]) {String s1,s2,ss,si,sf;int i1,i2;float f1,f2;BufferedReader strin=new BufferedReader(new InputStreamReader); try{ ("输入第一个字符串:" );s1= ();("输入第二个字符串:" );s2= ();}catch(Exception e){ i1 = (s1);i2 = (s2);f1 = (s1);f2 = (s2);ss = strAdd(s1,s2);si = strAdd(i1,i2);sf = strAdd(f1,f2);("输入的二个字符串相加结果为:"+ss );("输入字符串转换为整数相加结果为:"+si );("输入字符串转换为浮点数相加结果为:"+sf );}String strAdd(String str1,String str2) {return str1+str2;}String strAdd(int int1,int int2) {return (int1+int2);}String strAdd(float flt1,float flt2) {return (flt1+flt2);}}6. 应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上。
java算法面试经典100题
![java算法面试经典100题](https://img.taocdn.com/s3/m/4d895bc1fbb069dc5022aaea998fcc22bdd14373.png)
java算法面试经典100题在Java开发领域中,算法是非常重要的一环。
一个优秀的Java开发者需要拥有扎实的算法基础,并能够在面试中熟练回答各种算法题。
本文将介绍Java算法面试经典100题,通过一步步的思考,详细描述每一个问题的解答思路及实现方法。
题目:两数之和描述:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
假设每个输入只有唯一一个解,并且同一个元素不能重复利用。
1. 定义一个Map,用于存储数组元素的值和对应的索引。
2. 遍历数组,对于每个元素,计算目标值与当前元素的差值(即另一个需要的数值)。
3. 判断差值是否在Map中存在,如果存在,则返回索引即可。
4. 如果差值不在Map中,则将当前元素的值和索引存入Map中。
实现代码如下:```javapublic int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {int complement = target - nums[i];if (map.containsKey(complement)) {return new int[] { map.get(complement), i };map.put(nums[i], i);throw new IllegalArgumentException("No two sum solution");题目:最长公共前缀描述:编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,则返回空字符串。
1. 按照题目要求,首先判断数组是否为空,为空则返回空字符串。
2. 对于数组中的所有字符串,以第一个字符串作为基准进行遍历比较。
3. 假设最长公共前缀的长度为0,从每个字符串的第一个字符开始逐位比较。
JAVA编程题全集100题及答案
![JAVA编程题全集100题及答案](https://img.taocdn.com/s3/m/35a80f49fd0a79563d1e725b.png)
Java 程序设计总复习题1、写一个Java 程序在屏幕上出“你好!”。
(p13,例1-1)//programme name Helloworld.javapublic class Helloworld {public static void main(String args[]) {System.out.print (" 你好! " );}}2.写一个 Java 程序,用 if-else 句判断某年份能否年。
//Programme Name LeapYear.javapublic class LeapYear{public static void main(String args[]){int year=2010;if(args.length!=0)year=Integer.parseInt(args[0]);if((year%4==0 && year%100!=0)||(year%400==0))System.out.println(year+" 年是年。
");elseSystem.out.println(year+" 年不是年。
");}}//if-else 句3、写一个Java 程序在屏幕上出1! +2! +3! +⋯⋯ +10 !的和。
( p64,例 2-2)//programme name ForTest.javapublic class ForTest {public static void main( String args[] ){ int i,j,mul,sum=0; for(i=1;i<=10;i++){mul=1;for(j=1,j<=i;j++) {mul=mul*j;}sum=sum+mul;}System.out.println( “1! +2! +3! +⋯⋯ +10 != ”+sum); }}4.( 1)写一个 Circle ,有:①一个成量Radius (私有,浮点型);// 寄存的半径;②两个结构方法Circle( )Circle(double r )// 将半径// 建 Circle象将半径初始化r③ 三个成方法double getArea( )//取的面double getPerimeter( )// 取的周void show( )//将的半径、周、面出到屏幕(2)写一个柱体 Cylinder ,它承于上边的 Circle 。
JAVA算法100例_全源码
![JAVA算法100例_全源码](https://img.taocdn.com/s3/m/0a64dc11650e52ea55189836.png)
JA V A经典算法40题【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}public static int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}或public class exp2{public static void main(String args[]){int i=0;math mymath = new math();for(i=1;i<=20;i++)System.out.println(mymath.f(i));}}class math{public int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class exp2{public static void main(String 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==1 || x==2)return 1;elsereturn f(x-1)+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】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
JAVA编程题全集(100题及答案)(word文档良心出品)
![JAVA编程题全集(100题及答案)(word文档良心出品)](https://img.taocdn.com/s3/m/d88a51b9e518964bce847c59.png)
Java 程序设计总复习题1、编写一个Java 程序在屏幕上输出“你好!”。
(p13,例1-1)//programme name Helloworld.javapublic class Helloworld {public static void main(String args[]) {System.out.print (" 你好! " );}}2.编写一个 Java 程序,用 if-else 语句判断某年份是否为闰年。
//Programme Name LeapYear.javapublic class LeapYear{public static void main(Stringargs[]){ int year=2010;if(args.length!=0)year=Integer.parseInt(args[0]); if((year%4==0&& year%100!=0)||(year%400==0))System.out.println(year+" 年是闰年。
");elseSystem.out.println(year+" 年不是闰年。
");}}//if-else 语句3、编写一个Java 程序在屏幕上输出1! +2! +3! +⋯⋯ +10!的和。
( p64,例 2-2)//programme name ForTest.javapublic class ForTest {public static void main( String args[] ){ int i,j,mul,sum=0; for(i=1;i<=10;i++){mul=1;for(j=1,j<=i;j++) {mul=mul*j;}sum=sum+mul;}System.out.println( “1! +2! +3! +⋯⋯ +10 != ”+sum); }}4.( 1)编写一个圆类 Circle,该类拥有:①一个成员变量Radius(私有,浮点型);// 存放圆的半径;②两个构造方法Circle( )Circle(double r ) // 将半径设为// 创建 Circle对象时将半径初始化为r③ 三个成员方法double getArea( ) //获取圆的面积double getPerimeter( ) // 获取圆的周长void show( ) //将圆的半径、周长、面积输出到屏幕(2)编写一个圆柱体类 Cylinder ,它继承于上面的 Circle 类。
java贪心算法几个经典例子
![java贪心算法几个经典例子](https://img.taocdn.com/s3/m/4c377fdf988fcc22bcd126fff705cc1755275f1b.png)
java贪心算法几个经典例子
1. 零钱兑换问题
给定面额为1、5、10、25的硬币,以及一个需要兑换的金额,问最少需要多少硬币才能兑换成功。
解法:每次选择面额最大的硬币兑换,直到兑换完毕为止。
2. 分糖果问题
有m个糖果,要分给n个孩子,每个孩子至少分到一个糖果,且每个孩子分到的糖果数应尽量相近,求最小的糖果差。
解法:将m个糖果按照大小排序,依次将糖果分给n个孩子,每次将糖果分给最少的孩子。
3. 区间覆盖问题
给定多个区间,问最少需要选多少个区间才能覆盖全集。
解法:每次选择与当前未被覆盖的部分交集最大的区间添加到答案中,直到所有部分被覆盖完毕为止。
4. 任务调度问题
有n个任务需要完成,每个任务需要占用不同的时间,同时每个任务都有一个
最后期限,问如何调度任务才能最大程度地避免超时。
解法:将所有任务按照最后期限排序,依次将任务安排到最后期限之前的最近空闲时间点,尽量将任务时间安排得紧凑。
JAVA经典算法40题
![JAVA经典算法40题](https://img.taocdn.com/s3/m/e039a98e8762caaedd33d4bf.png)
JA V A经典算法40题有一组字符串比如北京,北京,上海,上海,上海,武汉-------->要得到北京,上海,武汉怎么去掉里面重复的字符串?function DelRepetStr(String str){var result;var list = str.split(",");for(var i=0; i<list.length; i++){if(result.indexOf(list(i)) == -1 ) result = result + list(i) + ",";}return result;}一个ArrayList里放的是字符串,数字型的,如"111","122","111","233"...如何把重复的去掉:参考:/t/20061122/01/5175479.html#public class testStr {/*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stub ArrayList tmp = new ArrayList(); tmp.add("111");tmp.add("112");tmp.add("111");tmp.add("111");tmp.add("114");String t1, t2;/** ********方法一start*********** */ // for (int i = 0; i < tmp.size(); i++) {// t1 = (String) tmp.get(i);// for (int j = i + 1; j < tmp.size(); j++) { // t2 = (String) tmp.get(j);// if (t1.equals(t2)) {// tmp.remove(j);// j--;// }// }// }/** ********方法一end*********××** *//** ********方法二start*********** */// for (int i = 0; i < tmp.size(); i++) {// t1 = (String) tmp.get(i);// for (int j = tmp.size() - 1; j > i; j--) {// t2 = (String) tmp.get(j);// if (t1.equals(t2)) {// tmp.remove(j);// }// }// }/** ********方法二end************* *//** ********方法三start*********** */// tmp = (ArrayList) removeDuplicateObj(tmp); /** ********方法三end************* *//** ********方法四start*********** */ TreeSet set=new TreeSet(tmp);Iterator it=set.iterator();int[] arr=new int[set.size()];int i=0;while(it.hasNext()){arr[i]=Integer.parseInt(it.next().toString());i++;}Arrays.sort(arr);for (int j = 0; j < arr.length; j++) {System.out.println(arr[j]);}/** ********方法四end************* */ System.out.println("tmp--"+tmp.size());}/*** @param list*/private static List removeDuplicateObj(List list) { // ................Set someSet = new HashSet(list);// 将Set中的集合,放到一个临时的链表中(tempList)Iterator iterator = someSet.iterator();List tempList = new ArrayList();int i = 0;while (iterator.hasNext()) {tempList.add(iterator.next().toString());i++;}return tempList;}}【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}public static int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}或public class exp2{public static void main(String args[]){int i=0;math mymath = new math();for(i=1;i<=20;i++)System.out.println(mymath.f(i));}}class math{public int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
java笔试算法题及答案
![java笔试算法题及答案](https://img.taocdn.com/s3/m/0519cc75f242336c1eb95e32.png)
1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序我的评论:本题的splitStringByComma(String )方法纯属多余,可以用String的split方法一句话代替,且可读性也更强,下面的一段话源自JDK1.6API,StringTokenizer类已不再提倡使用,保留仅为旧代码。
StringTokenizer是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。
建议所有寻求此功能的人使用String的split方法或java.util.regex 包。
import java.util.*;public class bycomma{public static String[] splitStringByComma(String source){if(source==null||source.trim().equals(""))return null;StringTokenizer commaToker = new StringTokenizer(source,",");String[] result = new String[commaToker.countTokens()];int i=0;while(commaToker.hasMoreTokens()){result[i] = commaToker.nextToken();i++;}return result;}public static void main(String args[]){String[] s = splitStringByComma("5,8,7,4,3,9,1");int[] ii = new int[s.length];for(int i = 0; i<ii.length;i++){ii[i] =Integer.parseInt(s[i]);}Arrays.sort(ii);//ascfor(int i=0;i<ii.length;i++ ){System.out.println(ii[i]);}//descfor(int i=(s.length-1);i>=0;i--){System.out.println(ii[i]);}}}2.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
JAVA编程题目(含解答)
![JAVA编程题目(含解答)](https://img.taocdn.com/s3/m/de97210e6c85ec3a87c2c5af.png)
【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....import java.util.Scanner;public class RabbitsQuit {/*** 【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一* 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....*/public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);RabbitsQuit rq = new RabbitsQuit();System.out.println("请输入一个整数:");int n = sc.nextInt();for (int i = 0; i < n; i++) {System.out.println("第"+ (i + 1) + "个月:"+ rq.calc(i + 1));}}private int calc(int x) {if (x == 1 || x == 2)return 1;elsereturn calc(x - 2) + calc(x - 1);}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
import java.util.Scanner;public class RabbitsQuit {/*** 【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一* 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....*/public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);RabbitsQuit rq = new RabbitsQuit();System.out.println("请输入一个整数:");int n = sc.nextInt();for (int i = 0; i < n; i++) {System.out.println("第"+ (i + 1) + "个月:"+ rq.calc(i + 1));}}private int calc(int x) {if (x == 1 || x == 2)return 1;elsereturn calc(x - 2) + calc(x - 1);}}法二:import java.util.Vector;public class PrimeNumber2 {/*** 【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
非常经典的JAVA编程题全集(50题及答案)
![非常经典的JAVA编程题全集(50题及答案)](https://img.taocdn.com/s3/m/ae4a87cba45177232e60a201.png)
【程序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】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言经典100例【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main()long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开的结果满足如下条件,即是结果。
请看具体分析:2.程序源代码:#include "math.h"main(){long int i,x,y,z;for (i=1;i<100000;i++){ x=sqrt(i+100); /*x为加上100后开方后的结果*/y=sqrt(i+268); /*y为再加上168后开方后的结果*/if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/printf("\n%ld\n",i);}}==============================================================【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:main(){int day,month,year,sum,leap;printf("\nplease input year,month,day\n");scanf("%d,%d,%d",&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/{case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day; /*再加上某天的天数*/if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/leap=1;elseleap=0;if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/sum++;printf("It is the %dth day.",sum);}==============================================================【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;}/*交换x,z的值*/if(y>z){t=y;y=z;z=t;}/*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);}============================================================== 【程序6】题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
2.程序源代码:#include "stdio.h"main(){printf("Hello C-world!\n");printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");}==============================================================【程序7】题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.程序分析:字符共有256个。
不同字符,图形不一样。
2.程序源代码:#include "stdio.h"main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",a,a,b,a,a);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",b,a,a,a,b);}============================================================== 【程序8】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:#include "stdio.h"main(){int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/}printf("\n");/*每一行后换行*/}}==============================================================【程序9】题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}}【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:#include "stdio.h"main(){int i,j;printf("\1\1\n");/*输出两个笑脸*/for(i=1;i<11;i++){for(j=1;j<=i;j++)printf("%c%c",219,219);printf("\n");}}【程序11】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}==============================================================【程序12】题目:判断101-200之间有多少个素数,并输出所有素数。