JAVA经典算法40题
JAVA经典算法50题(3)【面试+工作】
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算法题及答案
经典的JAVA算法题及答案1.使用Java语言编写代码,将一个正整数分解质因数,例如:输入90,打印输出90=2*3*3*5。
答案:public class Math{public static void main(String[] args){int n,i;System.out.println("\nplease input a number:\n");Scanner input=new Scanner(System.in);n=input.nextInt();System.out.println(n);for(i=2;i<=n;i++){while(n!=i){if(n%i==0){System.out.println(i);n=n/i;}else{break;}}}System.out.println(n);}}2.题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
static int[] bits = new int[] { 1, 2, 3, 4, 5 };/*** @param args*/public static void main(String[] args) {sort("", bits);}private static void sort(String prefix, int[] a) {if (a.length == 1) {System.out.println(prefix + a[0]);}for (int i = 0; i < a.length; i++) {sort(prefix + a, copy(a, i));}}private static int[] copy(int[] a,int index){int[] b = new int[a.length-1];System.arraycopy(a, 0, b, 0, index);System.arraycopy(a, index+1, b, index, a.length-index-1);return b;}3.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
java常见算法题整理
java常见算法题整理
以下是一些常见的 Java 算法题:
1. 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
2. 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
3. 合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。
新链表是通过拼接给定的两个链表的所有节点组成的。
4. 反转链表
反转一个链表。
你可以使用迭代或递归的方法来解决这个问题。
5. 合并两个有序数组
将两个升序有序数组 A 和 B 合并为一个新的升序有序数组 C。
6. 二分查找
在排序数组中查找元素的近似最右位置。
通过比较数组中间元素和目标值的大小关系,如果目标值大于中间元素,则在右半部分继续查找;否则在左半部分查找。
重复此过程直到找到目标值或确定目标值不存在于数组中。
7. 二分查找 II
给定一个排序的整数数组 nums 和一个目标值 target,如果 nums 中包含目标值,则返回目标值的索引,否则返回 -1。
JAVA经典算法练习题
【程序12】
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
【程序31】
题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
1.程序分析:请抓住分子与分母的变化规律。
【程序21】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
ห้องสมุดไป่ตู้
【程序22】
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:(a> b)?a:b这是条件运算符的基本例子。
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
java经典40题
猴子吃桃
【程序18】 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
【程序16】 题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
【程序17】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
【程序19】 题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
java面试题经典算法
java面试题经典算法经典算法在Java面试中经常被问及,因为它们可以展示面试者对基本数据结构和算法的理解程度。
以下是一些经典算法,我会逐个介绍它们。
1. 冒泡排序(Bubble Sort),这是一种简单的排序算法,它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。
时间复杂度为O(n^2)。
2. 快速排序(Quick Sort),快速排序使用分治法策略来把一个序列分为两个子序列。
它是一种分而治之的算法,时间复杂度为O(nlogn)。
3. 二分查找(Binary Search),二分查找是一种在有序数组中查找某一特定元素的搜索算法。
时间复杂度为O(logn)。
4. 递归算法(Recursion),递归是指在函数的定义中使用函数自身的方法。
递归算法通常用于解决可以被分解为相同问题的子问题的情况。
5. 动态规划(Dynamic Programming),动态规划是一种在数学、计算机科学和经济学中使用的一种方法。
它将问题分解为相互重叠的子问题,通过解决子问题的方式来解决原始问题。
6. 深度优先搜索(Depth-First Search)和广度优先搜索(Breadth-First Search),这两种搜索算法通常用于图的遍历和搜索。
深度优先搜索使用栈来实现,而广度优先搜索则使用队列来实现。
以上是一些常见的经典算法,当然还有很多其他的算法,如贪心算法、Dijkstra算法、KMP算法等等。
在面试中,除了了解这些算法的原理和实现方式之外,还需要能够分析算法的时间复杂度、空间复杂度以及适用场景等方面的知识。
希望这些信息能够帮助你在Java面试中更好地准备算法相关的问题。
java经典算法50题答案
1package work;public class Fib {public static void main(String[] args){int[] fib = new int[23];fib[0] = 1;fib[1] = 1;for(int i = 2; i < fib.length; i++){fib[i] = fib[i - 1] + fib[i - 2];}for(int i = 0; i < fib.length; i++){System.out.print(fib[i]+" ");}}}2package work;import java.math.*;import java.util.ArrayList;public class Sushu {public static void main(String[] args){ArrayList list = new ArrayList();for(int i = 101; i < 200; i++){if(isPrime(i)){list.add(i);}}System.out.println(list + "共有" +list.size());}public static boolean isPrime(int i){boolean flag = true;for(int j = 2; j < Math.sqrt(i); j++){if(i % j == 0){flag = false;}}return flag;}}3package work;public class Flower {public static void main(String[] args){for(int i = 100; i <999; i++){if(flower(i)){System.out.print(i +" ");}}}public static boolean flower(int number){boolean flag = false;int i = number / 100; //int j = (number - i*100) / 10;int k = number % 10;if((i*i*i + j*j*j + k*k*k) == number){flag = true;}return flag;}}4package work;import java.util.Scanner;import java.io.*;public class Decomposition {private static int k = 2;public static void main(String[] args)throws IOException{ Scanner scanner = new Scanner(System.in);System.out.println("请输入一个整数");int number = scanner.nextInt();System.out.print(number + "=");fenJie(number);}public static void fenJie(int number){if(k == number){System.out.print(k);return;}else if(number % k == 0){System.out.print(k + "*");fenJie(number / k);}else{k++;fenJie(number);}}}5package work;import java.util.Scanner;import java.io.*;public class TiaoJian{public static void main(String[] args) throws IOException{ Scanner scanner = new Scanner(System.in);System.out.println("请输入成绩");int score = scanner.nextInt();char s = ((score >= 90) ? 'A' : ((score < 60) ? 'C' : 'B'));System.out.println(s);}}6package work;import java.util.Scanner;public class Beiyue{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入m n");int m = scanner.nextInt();int n = scanner.nextInt();int a = yueshu(m,n);System.out.println("最大公约数为;" + a);System.out.println("最小公倍数为:" +m * n / a);}public static int yueshu(int m, int n){if(n == 0){return m;}else if(n != 0){return yueshu(n,m%n);}return 0;}}7package work;import java.util.Scanner;public class Fenlei{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一串字符:");String s = scanner.nextLine();char[] ch = s.toCharArray();int number = 0;int space = 0;int letter = 0;int other = 0;for(int i = 0; i < ch.length; i++){if(((ch[i] > 'a') && (ch[i] < 'z')) || ((ch[i] > 'A') && (ch[i] < 'Z'))){ //Character.isLetter(ch[i])letter++;}else if((ch[i] > '0') &&(ch[i] < '9')){ //Character.isDigit(ch[i])number++;}else if(ch[i] == ' '){ //Character.isSpaceChar(ch[i]) space++;}else{other++;}}System.out.println("letter = " + letter);System.out.println("number = " + number);System.out.println("space = " + space);System.out.println("other = " + other);}}8package work;import java.util.Scanner;public class Sum{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入数字a");int a = scanner.nextInt();System.out.println("请输入加数个数");int n = scanner.nextInt();sum(a, n);}public static void sum(int a, int n){int sum = 0;int t = 0; //每一项的值System.out.println("sum = ");for(int i = 0; i < n; i++){t = 0; //初始化为0for(int j = 0; j <= i; j++){ //计算每一项的值t = t + (int)(Math.pow(10, j)) * a;}if(i < n - 1){System.out.print(t + "+");}sum = sum + t;}System.out.print(t);System.out.print("=" + sum);}}9package work;import java.io.*;public class Wanshu{private static int k = 2;private static int sum = 1;public static void main(String[] args){for(int number = 4; number < 1000; number++){ k = 2;sum =1;wanshu(number);}}public static int fenJie(int number){if(k == number){//System.out.print(k);sum = sum + k;}else if(number % k == 0){//System.out.print(k + " * ");sum = sum + k;fenJie(number / k);}else if(number % k != 0){k++;fenJie(number);}return sum;}public static void wanshu(int number){//System.out.print(number + "= 1 * ");int s = fenJie(number);//System.out.println();//System.out.println("因子之和为:" + s);if(s == number){System.out.print(number + " ");}}}10package work;public class Fantan{public static void main(String[] args){double length = 100;double height = 100;for(int i = 0; i < 10; i++){length = length + height;height = height / 2.0;}System.out.println(length);System.out.println(height);}}11package work;public class Pailie{public static void main(String[] args){int sum = 0;int num = 0;for(int i = 1; i <= 4; i++){for(int j = 1; j <= 4; j++){for(int k = 1; k <= 4; k++){if((k != j) && (k !=i) && (i != j)){num = 100 * i + 10 * j + k;System.out.print(num + " ");sum++;}}}}System.out.println("sum = " + sum);}}12package work;import java.util.Scanner;public class Pay{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入工资:");int salary = scanner.nextInt();int n = salary / 10;double sum;switch(n){case 0 :sum = salary * 0.1; break;case 1 :sum = 1 + (salary - 10) * 0.075; break;case 2 :case 3 :sum = 1.75 + (salary - 20) * 0.05; break;case 4 :case 5 :sum = 2.75 + (salary - 40) * 0.03; break;case 6 :case 7 :case 8 :case 9 :sum = 3.35 + (salary - 60) * 0.015; break;default :sum = 3.95 + (salary - 100) * 0.1; break;}System.out.println("奖金为:" + sum);}}13package work;public class Pow{public static void main(String[] args){int number = 0;for(int i = 0; i < 320; i++){for(int j = 0; j < 320; j++){if((i * i -100) == (j * j -268)){number = i * i -100;if(number > 0){System.out.println(number + " ");}}}}}}14package work;import java.util.Scanner;public class Day{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入年");int year = scanner.nextInt();System.out.println("请输入月");int month = scanner.nextInt();System.out.println("请输入日");int day = scanner.nextInt();boolean flag = false;if((((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0)){ flag = true;}int sum = 0;switch(month){case 1 :sum = day; break;case 2 :sum = 28 + day; break;case 3 :sum = 59 + day; break;case 4 :sum = 90 + day; break;case 5 :sum = 120 + day; break;case 6 :sum = 151 + day; break;case 7 :sum = 181 + day; break;case 8 :sum = 212 + day; break;case 9 :sum = 243 + day; break;case 10 :sum = 273 + day; break;case 11 :sum = 304 + day; break;case 12 :sum = 335 + day; break;default :System.out.println("输入有误");}if(flag && (month > 1)){sum++;}System.out.println("这是一年中的第" + sum + "天");}}15package work;import java.util.Scanner;public class Min{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入三个整数");int x = scanner.nextInt();int y = scanner.nextInt();int z = scanner.nextInt();if(x < y && x < z){System.out.print(x + " ");if(y < z){System.out.print(y + " " + z);}else if(y > z){System.out.print(z + " " + y);}}else if(y < x && y < z){System.out.print(y + " ");if(x < z){System.out.print(x + " " + z);}else if(x > z){System.out.print(z + " " + x);}}else if(z < y && z < x){System.out.print(z + " ");if(y < x){System.out.print(y + " " + x);}else if(y > x){System.out.print(x + " " + y);}}}}16package work;public class Nine{public static void main(String[] args){for(int i = 1; i <= 9; i++){for(int j = 1; j <= i; j++){System.out.print(j + " * "+ i + " = " + (j * i) + " ");}System.out.println();}}}17package work;public class Eat{public static void main(String[] args){System.out.println(eat(10,1));}public static int eat(int day, int sum){if(day == 1){return sum;}else if(day != 1){return eat(day - 1,(sum + 1) * 2);}return sum;}}18package work;public class Contest{public static void main(String[] args){char i, j, k;//a b c 的对手for(i = 'x'; i <= 'z'; i++){for(j = 'x'; j <= 'z'; j++){for(k = 'x'; k <= 'z'; k++){if(i != j && i != k && j != k){if(i != 'x' && k != 'x' && k!= 'z'){System.out.println(i + " " + j + " " + k);}}}}}}}19package work;public class Print{public static void main(String[] args){ for(int i = 0; i <= 4; i++){for(int j = 0; j < 4 - i; j++){System.out.print(" ");}for(int j = 0; j < 2 * i - 1; j++){System.out.print("*");}System.out.println();}for(int i = 3; i > 0; i--){for(int j = 0; j <= 3 - i; j++){System.out.print(" ");}for(int j = 0; j < 2 * i - 1; j++){System.out.print("*");}System.out.println();}}}20package work;public class Sum{public static void main(String[] args){ double[] a = new double[22];a[0] = 1.0;a[1] = 2.0;double sum = 0;for(int i = 2; i < 21; i++){a[i] = a[i - 1] + a[i - 2];}for(int i = 1; i < 21; i++){sum = sum + a[i] / a[i - 1];}System.out.println("sum = " + sum);}}21package work;public class Jiech{public static void main(String[] args){int sum = 0;for(int i = 1; i < 21; i++){sum = sum + jiech(i);}System.out.println("阶乘之和为:" + sum);}public static int jiech(int n){if(n == 1){return 1;}else if(n != 1){return jiech(n - 1) * n;}return 0;}}22package work;public class Jiecheng{public static void main(String[] args){System.out.println(jiech(5));}public static int jiech(int n){if(n == 1){return 1;}else if(n != 1){return jiech(n - 1) * n;}return 0;}}23package work;public class Age{public static void main(String[] args){System.out.println(age(5));}public static int age(int n){if(n == 1){return 10;}else if(n != 1){return age(n - 1) + 2;}return 0;}}24package work;import java.util.Scanner;public class Number{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个不多于五位的正整数:");String num = scanner.next();int len = num.length();System.out.println("这是一个" + len + "位数");for(int i = len; i > 0; i--){System.out.println("第" + i + "位数是" + num.charAt(i - 1));}}}25package work;import java.util.Scanner;public class Huiwen{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个五位数:");String number = scanner.next();if(number.charAt(0) == number.charAt(4) && number.charAt(1) == number.charAt(3)){System.out.println(number + "是回文数");}else{System.out.println(number + "不是回文数");}}}26package work;import java.util.Scanner;public class Week{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入第1个字母:");String str = scanner.next();switch(str.charAt(0)){case 'm' :System.out.println("Monday"); break;case 't' :System.out.println("请输入第2个字母:");str = scanner.next();if(str.charAt(0) == 'u'){System.out.println("Tuesday");}else{System.out.println("Thursday");}break;case 'w' :System.out.println("Wednesday");break;case 'f' :System.out.println("Friday"); break;case 's' :System.out.println("请输入第2个字母:");str = scanner.next();if(str.charAt(0) == 'a'){System.out.println("Satday");}else{System.out.println("Sunday");}break;default :System.out.println("输入有误");}}}27package work;public class Prime{public static void main(String[] args){for(int i = 2; i < 100; i++){if(prime(i)){System.out.print(i + " ");}}}public static boolean prime(int number){boolean flag = true;for(int i = 2; i <= Math.sqrt(number); i++){if(number % i == 0){flag = false;}}return flag;}}28package work;public class Sort{public static void main(String[] args){int[] a = {2,4,3,6,7,8,1,89,56,23};sort(a);for(int array : a){System.out.print(array + " ");}}public static void sort(int[] a){int index;for(int i = 0; i < 9; i++){index = i;for(int j = i + 1; j < 10; j++){if(a[j] < a[index]){index = j;}}int t;if(index != i){t = a[i];a[i] = a[index];a[index] = t;}}}}29package work;import java.util.Scanner;public class Sum{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int[][] a = new int[3][3];int sum = 0;System.out.println("请输入数据:");int i;for(i = 0; i < 3; i++){for(int j = 0; j < 3; j++){a[i][j] = scanner.nextInt();}sum = sum + a[i][i];}System.out.println("sum = " + sum);}}30package work;import java.util.Scanner;public class Sort{public static void main(String[] args){int[] a = new int[4];a[0] = 1;a[1] = 2;a[2] = 4;Scanner scanner = new Scanner(System.in);System.out.println("请输入一个整数:");int number = scanner.nextInt();if(number > a[a.length - 2]){a[a.length - 1] = number;}else{int k = 0;for(int i = a.length - 3; i > 0; i--){if(number > a[i]){k = i;}}for(int j = a.length - 1; j > k ; j--){a[j] = a[j - 1];}a[k + 1] = number;}for(int array : a){System.out.print(array + " ");}}}31package work;public class Array {public static void main(String[] args){int[] a = {1,2,3,4};int t;for(int i = 0; i < a.length / 2; i++){t = a[i];a[i] = a[a.length - i - 1];a[a.length - i -1] = t;}for(int array : a){System.out.print(array);}}}32package work;import java.util.Scanner;public class Move{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个整数");String str = scanner.next();int len = str.length();System.out.println(str.charAt(len -4) + " " + str.charAt(len -5) + " " + str.charAt(len -6) + " " + str.charAt(len -7));}}33package work;public class Yanghui{public static void main(String[] args){int n = 6;int a[][] = new int[n][n];a[1][1] = 1;int i;for(i = 2; i < n; i++){a[i][1] = 1;a[i][i] = 1;for(int j = 2; j <= i; j++){a[i][j] = a[i - 1][j - 1] + a[i - 1][j];}}for(i = 1; i < n; i++){for(int j = 0; j < 5 - i; j++){System.out.print(" ");}for(int j = 1; j <= i; j++){System.out.print(a[i][j] + " ");}System.out.println();}}}34package work;import java.util.Scanner;public class Max {public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入a,b,c");int x = scanner.nextInt();int y = scanner.nextInt();int z = scanner.nextInt();if(x < y && x < z){System.out.print(x + " ");if(y < z){System.out.print(y + " " + z);}else if(y > z){System.out.print(z + " " + y);}}else if(y < x && y < z){System.out.print(y + " ");if(x < z){System.out.print(x + " " + z);}else if(x > z){System.out.print(z + " " + x);}}else if(z < y && z < x){System.out.print(z + " ");if(y < x){System.out.print(y + " " + x);}else if(y > x){System.out.print(x + " " + y);}}}}35package work;import java.util.Scanner;public class Maxmin {public static void main(String[] args){Scanner scanner = new Scanner(System.in);int[] a = new int[5];System.out.println("请输入数组值");int max = 0, min = 0, m = 0, n = 0, t = 0;for(int i = 0; i < a.length; i++){a[i] = scanner.nextInt();if(max < a[i]){max = a[i];m = i;}if(min > a[i]){min = a[i];n = i;}}t = a[0];a[0] = max;a[m] = t;t = a[4];a[4] = min;a[n] = t;for(int j = 0; j < a.length; j++){System.out.print(a[j] + " ");}}}36package work;import java.util.Scanner;public class Move{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入5个数");int[] a = new int[5];int[] b = new int[5];for(int i = 0; i < 5; i++){a[i] = scanner.nextInt();}System.out.println("请输入移动的位数n");int n = scanner.nextInt();for(int j = 0; j < 5; j++){b[j] = a[(j + n) % 5];}for(int arr : b){System.out.print(arr + " ");}}}37package work;import java.util.Scanner;public class Stay{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入人数n");int n = scanner.nextInt();boolean[] a = new boolean[n];for(int i = 0; i < a.length; i++){a[i] = true;}int rest = n;int count = 0;int i = 0;while(rest > 1){if(a[i] == true){count++;}if(count == 3){a[i] = false;rest--;count = 0;}i++;i = i % n;}for(i = 0; i < n; i++){if(a[i] == true){System.out.println(i);}}}}38package work;import java.util.Scanner;public class Length{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入字符串");String str = scanner.next();System.out.println("长度为" + getLength(str));}public static int getLength(String s){return s.length();}}39package work;import java.util.Scanner;public class Sum{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个数n");int n = scanner.nextInt();System.out.print("和为" + sum(n));}public static double sum(int n){double sum = 0;int k;if(n % 2 == 0){k = 2;}else{k = 1;}for(double i = k; i <= n; i = i + 2){sum = sum + 1.0 / i;}return sum;}}40package work;import java.util.Scanner;import java.util.Arrays;public class Sort{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = scanner.next();char[] ch = str.toCharArray();Arrays.sort(ch);for(char c : ch){System.out.print(c);}}}41package work;public class Peach{public static void main(String[] args){System.out.println("共有桃子数目为:" + peach(5, 6));}public static int peach(int monkey, int sum){if(monkey == 1){return sum;}else if(monkey != 1){return peach(monkey - 1, sum * 5 + 1);}return 0;}}42package work;public class Number{public static void main(String[] args){for(int i = 10; i < 100; i++){if(809 * i == 800 * i + 9 * i + 1){System.out.println(i);}}}}43package work;public class Count{public static void main(String[] args){int n= 8;int one = n / 2;int two = (n - 1) * n / 2;int three = (n - 1) * n * n / 2;int four = (n - 1) * n * n * n / 2;int five = (n - 1) * n * n * n / 2;int six = (n - 1) * n * n * n * n / 2;int seven = (n - 1) * n * n * n * n * n / 2;int sum = one + two + three + four + five + six + seven;System.out.println(sum);}}44package work;import java.util.Scanner;public class Primer{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个偶数");int n = scanner.nextInt();for(int i = 2; i <= n / 2; i++){if(primer(i) && primer(n - i)){System.out.println(n + " = " + i + " + " + (n - i));}}}public static boolean primer(int n){int i;for(i = 2; i <= n; i++){if(n % i == 0){break;}}if(i == n){return true;}else{return false;}}}45package work;//判断一个非素数能被几个9整除import java.util.Scanner;public class Nine{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个合数");int number = scanner.nextInt();int count = 0;while(number % 9 == 0){number = number / 9;count++;}System.out.println("能被" + count + "个9整除");}}46package work;import java.util.Scanner;public class Connect{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入两个字符串");String str1 = scanner.next();String str2 = scanner.next();String str3 = str1 + str2;System.out.println("连接后的字符串为" + str3);}}47package work;import java.util.Scanner;public class Print{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入1--50之内的7个数");int[] a = new int[7];for(int i = 0; i < 7; i++){a[i] = scanner.nextInt();}for(int i = 0; i < 7; i++){System.out.println(a[i]);for(int j = 0; j < a[i]; j++){System.out.print("*");}System.out.println();}}}48package work;import java.util.Scanner;public class Secret{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入四位整数:");int a = scanner.nextInt();int b = scanner.nextInt();int c = scanner.nextInt();int d = scanner.nextInt();System.out.println("加密后为" + jiaMi(d) + jiaMi(c) + jiaMi(b) + jiaMi(a));}public static int jiaMi(int num){num = (num + 5) % 10;return num;}}49package work;import java.util.Scanner;public class Str{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("输入一个字符串");String text = scanner.next();System.out.println("请输入一个子字符串");String str = scanner.next();String[] s = text.split(str);System.out.println((s.length - 1) + "次");}}50package work;import java.util.*;import java.io.*;public class Student {private String[] name = new String[5];private String[] number = new String[5];private int score[][] = new int[5][3];private int aver[] = new int[5];public static void main(String[] args)throws IOException{ Scanner scanner = new Scanner(System.in);Student student = new Student();File file = new File("d:\\stud.txt");FileWriter fw = new FileWriter("d:\\stud.txt");BufferedWriter bw = new BufferedWriter(fw);for(int i = 0; i < 5; i++){System.out.println("请输入姓名");[i] = scanner.next();bw.write(" "+[i]);System.out.println("请输入学号");student.number[i] = scanner.next();bw.write(" "+student.number[i]);int sum = 0;for(int j = 0; j < 3; j++){System.out.println("请输入成绩");student.score[i][j] = scanner.nextInt();bw.write( " "+student.score[i][j]);sum = sum + student.score[i][j];}student.aver[i] = sum / 3;bw.write(student.aver[i]);bw.newLine();}bw.close();}}。
JAVA经典算法40题之欧阳理创编
JAVA经典算法40题【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... publicclass exp2{publicstaticvoid main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}publicstaticint f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}或publicclass exp2{publicstaticvoid main(String args[]){int i=0;math mymath = new math();for(i=1;i<=20;i++)System.out.println(mymath.f(i));}}class math{publicint f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
publicclass exp2{publicstaticvoid 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{publicint f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}publicboolean iszhishu(int x){for(int i=2;i<=x/2;i++)if (x % 2==0 )returnfalse;returntrue;}}【程序3】题目:打印出所有的 "水仙花数 ",所谓"水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
JAVA超级算法(50题及答案)
【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少;public class lianxi04{public static void main(String[] args) {Scanner s = new Scanner;"请键入一个正整数: ");int n = ();int k=2;+ "=" );while(k <= n) {if(k == n) {else if( n % k == 0) { + "*");n = n / k; }else k++;}}}【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
import .*;public class lianxi05 {public static void main(String[] args) {int x;char grade;Scanner s = new Scanner;"请输入一个成绩: ");x = ();grade = x >= 90 'A': x >= 60 'B':'C';"等级为:"+grade);}}【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。
* / import .*;public class lianxi06 {public static void main(String[] args) {int a ,b,m;Scanner s = new Scanner;"键入一个整数: ");a = ();"再键入一个整数: ");b = ();deff cd = new deff();m = (a,b);int n = a * b / m;"最大公约数: " + m);"最小公倍数: " + n);}}class deff{public 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;}}【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
JAVA经典算法题
【程序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;exp2 mymath = new exp2();for(i=101;i <=200;i += 2)if(mymath.iszhishu(i)==true)System.out.println(i);}public boolean iszhishu(int x){for(int i=2;i <=x/2;i++)if (x % i==0 )return false;return true;}}【程序3】题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
java经典算法40(初学必做基础)
java经典算法40题(21-40)【程序21】题目:求1+2!+3!+...+20!的和1.程序分析:此程序只是把累加变成了累乘。
public class Ex21 {static long sum = 0;static long fac = 0;public static void main(String[] args) { long sum = 0;long fac = 1;for(int i=1; i<=10; i++) {fac = fac * i;sum += fac;}System.out.println(sum);}}【程序22】题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4! import java.util.Scanner;public class Ex22 {public static void main(String[] args) { Scanner s = new Scanner(System.in);int n = s.nextInt();Ex22 tfr = new Ex22();System.out.println(tfr.recursion(n));}public long recursion(int n) {long value = 0 ;if(n ==1 || n == 0) {value = 1;} else if(n > 1) {value = n * recursion(n-1);}return value;}}【程序23】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。
问第4个人岁数,他说比第3个人大2岁。
问第三个人,又说比第2人大两岁。
问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。
请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。
要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
朗致 java 算法题
朗致 java 算法题一、入门级算法题1. 编写一个Java程序,实现两个数的交换。
```javapublic class SwapNumbers {public static void main(String[] args) {int a = 5;int b = 10;int temp = a;a = b;b = temp;System.out.println("交换后的结果为:" + "a = " + a + ", b = " + b);}}```2. 编写一个Java程序,实现斐波那契数列的前N项。
```javapublic class Fibonacci {public static void main(String[] args) {int n = 10; // 可以修改为需要计算的斐波那契数列的项数int[] fibonacci = new int[n];fibonacci[0] = 0;fibonacci[1] = 1;for (int i = 2; i < n; i++) {fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];}System.out.println("斐波那契数列前" + n + "项为:" + fibonacci);}}```二、进阶级算法题1. 编写一个Java程序,实现一个函数,输入一个字符串,返回字符串中所有单词的首字母大写后的新字符串。
```javapublic class CapitalizeWords {public static void main(String[] args) {String str = "this is a sample string";String result = capitalizeWords(str);System.out.println("结果为:" + result);}public static String capitalizeWords(String str) {StringBuilder sb = new StringBuilder();for (int i = 0; i < str.length(); i++) {String word = str.substring(i, i+1); // 获取单词的首字母字符sb.append(Character.toUpperCase(word)); // 将单词的首字母转为大写并添加到结果中}return sb.toString(); // 返回结果字符串}}```2. 编写一个Java程序,实现一个函数,输入一个二维数组,返回该数组中所有正负号交替出现的小方阵(行数等于列数)。
java 算法训练题
java 算法训练题算法训练题是一种重要的练习方式,可以提高编程能力和解决问题的能力。
下面是一些常见的Java算法训练题以及解答参考。
1. 反转字符串:给定一个字符串,将其倒序输出。
可以使用StringBuilder或StringBuffer中的reverse()方法,或者通过遍历字符串来实现。
```javapublic class ReverseString {public static void main(String[] args) {String str = "Hello, World!";StringBuilder sb = new StringBuilder(str);sb.reverse();System.out.println(sb.toString());}}```2. 计算阶乘:给定一个正整数n,计算其阶乘。
可以使用递归或循环来实现。
```javapublic class Factorial {public static void main(String[] args) {int n = 5;System.out.println(factorial(n));}public static int factorial(int n) {if (n == 0 || n == 1) {return 1;}int result = 1;for (int i = 2; i <= n; i++) {result *= i;}return result;}}```3. 查找最大值和最小值:给定一个整数数组,查找其中的最大值和最小值。
可以使用循环遍历数组,并用两个变量来保存当前的最大值和最小值。
```javapublic class MaxMinValue {public static void main(String[] args) {int[] nums = {2, 4, 1, 6, 8, 3};int max = Integer.MIN_VALUE;int min = Integer.MAX_VALUE;for (int num : nums) {if (num > max) {max = num;}if (num < min) {min = num;}}System.out.println("Max value: " + max);System.out.println("Min value: " + min);}}```4. 判断素数:给定一个正整数n,判断其是否为素数(只能被1和自身整除)。
java算法面试经典100题
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题
很抱歉,我不能提供整个的Java算法面试经典100题,但是我可以提供一些常见的算法题目,供你参考:
1. 两数之和:给定一个整数数组nums和一个目标值target,在数组中找到和为目标值的两个整数,并返回它们的索引。
2. 无重复字符的最长子串:给定一个字符串,请找出其中不含有重复字符的最长子串的长度。
3. 盛最多水的容器:给定n个非负整数a1,a2,...,an,其中每个点的坐标表示(i,ai),在坐标系中画n条垂直线,找出两条线,使得它们与x轴一起构成的容器可以容纳最多的水。
4. 三数之和:给定一个包含n个整数的数组nums,判断nums 中是否存在三个元素a,b,c使得a + b + c = 0.找出所有满足条件且不重复的三元组。
5. 最长回文子串:给定一个字符串s,找到s中最长的回文子串。
假设s的最大长度为1000。
6. Z字形变换:将字符串s按照Z字形排列,并返回排列后的字符串。
假设n行。
7. 两两交换链表中的节点:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
8. 合并两个有序链表:给定两个有序链表,将它们合并为一个新的有序链表并返回。
9. 删除链表的倒数第N个节点:给定一个链表,删除链表的倒数第N个节点,并返回链表的头节点。
10. 字符串转换整数(atoi):实现函数atoi,将字符串转换为整数。
这些题目只是作为参考,你可以根据自己的需求和面试的具体要求进行更换或增加。
在准备面试时,最好根据自己的能力和时间安排一个合理的计划,重点练习一些自认为难度适中且常见的问题。
最经典的JAVA算法题及答案
1.使用Java语言编写代码,将一个正整数分解质因数,例如:输入90,打印输出90=2*3*3*5。
答案:public class Math{public static void main(String[] args){int n,i;System.out.println("\nplease input a number:\n");Scanner input=new Scanner(System.in);n=input.nextInt();System.out.println(n);for(i=2;i<=n;i++){while(n!=i){if(n%i==0){System.out.println(i);n=n/i;}else{break;}}}System.out.println(n);}}2.题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
static int[] bits = new int[] { 1, 2, 3, 4, 5 };/*** @param args*/public static void main(String[] args) {sort("", bits);}private static void sort(String prefix, int[] a) {if (a.length == 1) {System.out.println(prefix + a[0]);}for (int i = 0; i < a.length; i++) {sort(prefix + a, copy(a, i));}}private static int[] copy(int[] a,int index){int[] b = new int[a.length-1];System.arraycopy(a, 0, b, 0, index);System.arraycopy(a, index+1, b, index, a.length-index-1);return b;}3.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
java贪心算法几个经典例子
java贪心算法几个经典例子
1. 零钱兑换问题
给定面额为1、5、10、25的硬币,以及一个需要兑换的金额,问最少需要多少硬币才能兑换成功。
解法:每次选择面额最大的硬币兑换,直到兑换完毕为止。
2. 分糖果问题
有m个糖果,要分给n个孩子,每个孩子至少分到一个糖果,且每个孩子分到的糖果数应尽量相近,求最小的糖果差。
解法:将m个糖果按照大小排序,依次将糖果分给n个孩子,每次将糖果分给最少的孩子。
3. 区间覆盖问题
给定多个区间,问最少需要选多少个区间才能覆盖全集。
解法:每次选择与当前未被覆盖的部分交集最大的区间添加到答案中,直到所有部分被覆盖完毕为止。
4. 任务调度问题
有n个任务需要完成,每个任务需要占用不同的时间,同时每个任务都有一个
最后期限,问如何调度任务才能最大程度地避免超时。
解法:将所有任务按照最后期限排序,依次将任务安排到最后期限之前的最近空闲时间点,尽量将任务时间安排得紧凑。
长沙java培训-25道经典Java算法题(含代码)
25道经典Java算法题(含代码)【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题public class test01 {public static void main(String[] args) {int f1=1,f2=1,f;int M=30;System.out.println(1);System.out.println(2);for(int i=3;i<M;i++) {f=f2;f2=f1+f2;f1=f;System.out.println(f2);}}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class test02 {public static void main(String[] args) {int count=0;for(int i=101;i<200;i+=2) {boolean flag=true;for(int j=2;j<=Math.sqrt(i);j++) {if(i%j==0) {flag=false;break;}}if(flag==true) {count++;System.out.println(i);}}System.out.println(count);}}【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
public class test03 {public static void main(String[] args) {int a,b,c;for(int i=101;i<1000;i++) {a=i%10;b=i/10%10;c=i/100;if(a*a*a+b*b*b+c*c*c==i)System.out.println(i);}}}【程序4】题目:将一个正整数分解质因数。
JAVA经典算法40题之欧阳数创编
JAVA经典算法40题【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... publicclass exp2{publicstaticvoid main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}publicstaticint f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}或publicclass exp2{publicstaticvoid main(String args[]){int i=0;math mymath = new math();for(i=1;i<=20;i++)System.out.println(mymath.f(i));}}class math{publicint f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
publicclass exp2{publicstaticvoid 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{publicint f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}publicboolean iszhishu(int x){for(int i=2;i<=x/2;i++)if (x % 2==0 )returnfalse;returntrue;}}【程序3】题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA经典算法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】题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
public class exp2{public 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 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;}public boolean shuixianhua(int x){int i=0,j=0,k=0;i=x / 100;j=(x % 100) /10;k=x % 10;if(x==i*i*i+j*j*j+k*k*k)return true;elsereturn false;}}【程序4】题目:将一个正整数分解质因数。
例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
public class exp2{public exp2(){}public void fengjie(int n){for(int i=2;i<=n/2;i++){if(n%i==0){System.out.print(i+"*");fengjie(n/i);}}System.out.print(n);System.exit(0);///不能少这句,否则结果会出错}public static void main(String[] args){String str="";exp2 c=new exp2();str=javax.swing.JOptionPane.showInputDialog("请输入N的值(输入exit退出):");int N;N=0;try{N=Integer.parseInt(str);}catch(NumberFormatException e){e.printStackTrace();}System.out.print(N+"分解质因数:"+N+"=");c.fengjie(N);}}【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a> b)?a:b这是条件运算符的基本例子。
import javax.swing.*;public class ex5 {public static void main(String[] args){String str="";str=JOptionPane.showInputDialog("请输入N的值(输入exit退出):");int N;N=0;try{N=Integer.parseInt(str);}catch(NumberFormatException e){e.printStackTrace();}str=(N>90?"A":(N>60?"B":"C"));System.out.println(str);}}【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
最大公约数:public class CommonDivisor{public static void main(String args[]){commonDivisor(24,32);}static int commonDivisor(int M, int N){if(N<0||M<0){System.out.println("ERROR!");return -1;}if(N==0){System.out.println("the biggest common divisor is :"+M);return 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 n;if ((n = n % m) == 0)return m;}}public static void main(String args[]) throws Exception{//取得输入值//Scanner chin = new Scanner(System.in);//int a = chin.nextInt(), b = chin.nextInt();int a=23; int b=32;int c = gcd(a, b);System.out.println("最小公倍数:" + a * b / c + "\n最大公约数:" + c);}}【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为 '\n '.import java.util.Scanner;public class ex7 {public static void main(String args[]){System.out.println("请输入字符串:");Scanner scan=new Scanner(System.in);String str=scan.next();String E1="[\u4e00-\u9fa5]";String E2="[a-zA-Z]";int countH=0;int countE=0;char[] arrChar=str.toCharArray();String[] arrStr=new String[arrChar.length];for (int i=0;i<arrChar.length ;i++ ){arrStr[i]=String.valueOf(arrChar[i]);}for (String i: arrStr ){if (i.matches(E1)){countH++;}if (i.matches(E2)){countE++;}}System.out.println("汉字的个数"+countH);System.out.println("字母的个数"+countE);}}【程序8】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。