网站安全建设方案需求分析,静态网站注入,网站建设需具备的条件,页面设计常用的字体颜色有Java基础编程练习50题
本人萌新一枚#xff0c;通过自己对网上流传较广的已有的经典50道Java编程题分析理解整理#xff08;不少题型的考察点相识#xff0c;换汤不换药#xff09;#xff0c;对每道题分析并敲写了代码#xff08;基本实现了题干要求#xff09;#…Java基础编程练习50题
本人萌新一枚通过自己对网上流传较广的已有的经典50道Java编程题分析理解整理不少题型的考察点相识换汤不换药对每道题分析并敲写了代码基本实现了题干要求有的自认为解题思路还算巧妙有的也许虽然实现了需求但是可能较为“死板“^ - ^,欢迎大家参阅批评指正
【程序1】 题目 古典问题有一对兔子从出生后第3个月起每个月都生一对兔子小兔子长到第三个月后每个月又生一对兔子假如兔子都不死问每个月的兔子对数为多少
分析利用递归解决斐波那契数列。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 古典问题有一对兔子从出生后第3个月起每个月都生一对兔子* 小兔子长到第三个月后每个月又生一对兔子假如兔子都不死问每个月的兔子对数为多少*/
public class Demo01_Fibonacci {public static void main(String[] args) {Scanner scanner new Scanner(System.in);//Scanner类从键盘获取月份System.out.println(请输入月份);int month scanner.nextInt(); // 第几月System.out.println(该月的兔子的对数 fun(month));//方法调用}public static int fun(int a) {if (a 1 || a 2) {return 1;} else {return (fun(a - 1) fun(a - 2));}}}
【程序2】 问题:判断101-200之间有多少个素数并输出所有素数。
分析for循环Flag。
package com.offcn.csdn;/*** author mahanyuan 判断101-200之间有多少个素数并输出所有素数*/
public class Demo02_PrimeNumberBetween101And200 {public static void main(String[] args) {for (int i 101; i 201; i) {boolean flag true;for (int j 2; j i / 2; j) {if (i % j 0) {flag false;break;}}if (flag) {System.out.println(i);}}}}
【程序3】 题目打印出所有的”水仙花数”所谓”水仙花数”是指一个三位数 其各位数字立方和等于该数本身。 例如153是一个”水仙花数”因为1531的三次方5的三次方3的三次方。
分析利用‘%’‘/’拿到百十个位。
package com.offcn.csdn;/*** author mahanyuan 题目打印出所有的”水仙花数”所谓”水仙花数”是指一个三位数 其各位数字立方和等于该数本身。* 例如153是一个”水仙花数”因为1531的三次方5的三次方3的三次方。*/
public class Demo03_daffodilNumber {public static void main(String[] args) {for (int i 101; i 1000; i) {int b i / 100; // 百位int s i / 10 % 10; // 十位int g i % 10; // 个位if (i (b * b * b) (s * s * s) (g * g * g)) {System.out.println(i);}}}}
【程序4】 题目 将一个正整数分解质因数。例如输入90,打印出90233*5。
分析代码未考虑123这三个正整数。
package com.offcn.csdn;/*** author mahanyuan 将一个正整数分解质因数。例如输入90,打印出902*3*3*5。*/
public class Demo04_FactorizationPrimeFactor {public static void main(String[] args) {int num 90;int temp num; // 防止最后一位质因数不出现System.out.print(num );for (int i 2; i temp / 2; i) {if (num i) {System.out.print(num);// 输出最后一位质因数break;}if (num % i 0) { // num 90,(i3)15num num / i; // num 45, 5i--; // i1;System.out.print((i 1) *);}}}}
【程序5】 题目利用条件运算符的嵌套来完成此题 学习成绩90分的同学用A表示60-89分之间的用B表示60分以下的用C表示。
分析if语句的运用。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 题目 利用条件运算符的嵌套来完成此题* 学习成绩90分的同学用A表示60-89分之间的用B表示60分以下的用C表示。*/
public class Demo05 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入一个成绩);int score s.nextInt();if (score 90) {System.out.println(A);} else if (score 60 score 90) {System.out.println(B);} else if (score 60) {System.out.println(C);}}}
【程序6】 题目输入两个正整数m和n求其最大公约数和最小公倍数。
分析可写两个方法分别解决小贴士:最大公约数从大的开始往下找。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 输入两个正整数m和n求其最大公约数和最小公倍数。*/
public class Demo06_CommonDivisor {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入两个正整数);int m s.nextInt();int n s.nextInt();fun1(m, n);fun2(m, n);}// 最大公约数public static void fun1(int a, int b) {for (int i a b ? b : a; i 1; i--) {if (a % i 0 b % i 0) { // 遇到第一个能同时被两数整除的System.out.println(最大公约数 i);break;}}}// 最小公倍数public static void fun2(int a, int b) {for (int j a b ? a : b;; j) {if (j % a 0 j % b 0) {System.out.println(最小公倍数 j);break;}}}}
【程序7】 题目输入一行字符分别统计出其英文字母、空格、数字和其它字符的个数。
分析利用ASKII码。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 输入一行字符分别统计出其英文字母、空格、数字和其它字符的个数。 ASKII:65 - 90 : A - Z 97 -* 122a - z 32 : 空格 48 - 57 数字 33 - 127 其他字符* */
public class Demo07_String {public static void main(String[] args) {int count1 0; // 统计大写字母int count3 0; // 统计空格int count4 0; // 统计数字int count5 0; // 统计其他字符Scanner s new Scanner(System.in);System.out.println(请输入内容);String str s.nextLine();// String str 马汉渊 mahanyuan 123 #$ ;// 初始化字符串char[] arr new char[str.length()]; // 定义一个新的字符数组for (int i 0; i str.length(); i) {// 将字符串中的字符放入char a str.charAt(i); // 字符数组中// System.out.println((int)a); // 输出字符对应的ASKII码// arr[i] a;// 利用ASKII码找大小写英文字母以下同理if ((int) a 65 (int) a 90 || (int) a 97 (int) a 122) {count1;} else if ((int) a 32) {count3;} else if ((int) a 48 (int) a 57) {count4;} else {count5;}}System.out.println(英文字母有 count1 个);System.out.println(空格有 count3 个);System.out.println(数字有 count4 个);System.out.println(其他字符 count5 个);}
}
【程序8】 题目求saaaaaaaaaaaa…a的值其中a是一个数字。 例如222222222222222(此时共有5个数相加) 几个数相加有键盘控制。
分析for循环控制累加变量等。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 题目求saaaaaaaaaaaa…a的值其中a是一个数字。* 例如222222222222222(此时共有5个数相加) 几个数相加有键盘控制。输出结果的形式如222222246*/
public class Demo08_ {public static void main(String[] args) {Scanner sc new Scanner(System.in);System.out.println(请输入数字an:);int num sc.nextInt();int b sc.nextInt(); // 想加个数int s 1;int sum 0; // 每项值int sum2 0;// 将每项值累加如 222222...for (int i 1; i b; i) {sum sum num * s;s * 10;sum2 sum;}System.out.println(sum2);}}
【程序9】 题目一个数如果恰好等于它的因子之和 这个数就称为”完数”。例如6123.编程找出1000以内的所有完数。
分析没啥特别好分析的注意类名尽量不要学我用拼音取名吧23333。
package com.offcn.csdn;/*** author mahanyuan 题目一个数如果恰好等于它的因子之和 这个数就称为”完数”。例如6123.编程找出1000以内的所有完数。*/
public class Demo09_WanShu {public static void main(String[] args) {int sum 0;for (int j 2; j 1000; j) {for (int i 1; i j; i) {if (j % i 0) {sum i;}}if (j sum) {System.out.println(j);}sum 0; // 置0留着下轮继续使用}}
}
【程序10】 题目一球从h米高度自由落下每次落地后反跳回原高度的一半 再落下求它在 第n次落地时共经过多少米第n次反弹多高
分析画个草图应该就能分析出来本题为方便检验将高度h定位100米。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 一球从h米高度自由落下每次落地后反跳回原高度的一半*再落下求它在 第n次落地时共经过多少米第n次反弹多高*/
public class Demo10 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请输入n);int n scanner.nextInt();int sum 100;// 本题将高度定位100int x 100;int i;for (i 1; i n; i) { // 3表示第三次落地x / 2;sum sum x;}if (i 1) {System.out.println(第 n 次落地反弹高度 x / 2);System.out.println(第 n 次落地经过距离 sum);} else {System.out.println(第 n 次落地反弹高度 x); // 反弹高度System.out.println(第 n 次落地经过距离 sum);} // 经过距离}}
【程序11】 题目有1、2、3、4个数字能组成多少个互不相同且无重复数字的三位数都是多少
分析别想的太复杂利用for循环嵌套。
package com.offcn.csdn;import java.util.Arrays;
import java.util.Random;/*** author mahanyuan 题目有1、2、3、4个数字能组成多少个互不相同且无重复数字的三位数都是多少*/
public class Demo11 {public static void main(String[] args) {int count 0;//用来统计最终结果的个数for (int i 1; i 5; i) {for (int j 1; j 5; j) {for (int k 1; k 5; k) {if (i ! j i ! k j ! k) {System.out.println(i j k);count;}}}}System.out.println(count);}}
【程序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求应发放奖金总数
分析算是数学应用题23333。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 企业发放的奖金根据利润提成。利润(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求应发放奖金总数*/
public class Demo12 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入月利润(万));int I s.nextInt(); // 键盘输入利润Iif (I 10) {System.out.println(I * 0.1 万);}if (I 10 I 20) {System.out.println(1 (I - 10) * 0.075 万);}if (I 20 I 40) {System.out.println(1.75 (I - 20) * 0.05 万);}if (I 40 I 60) {System.out.println(2.75 (I - 40) * 0.03 万);}if (I 60 I 100) {System.out.println(3.35 (I - 60) * 0.015 万);}if (I 100) {System.out.println(3.95 (I - 100) * 0.01 万);}}
}
【程序13】 题目一个整数它加上100后是一个完全平方数再加上168又是一个完全平方数请问该数是多少完全平方数一个数另一个数的平方如12111^11。
分析下面写的是在1-1000内找到符合题干要求的for循环嵌套。
package com.offcn.csdn;/*** author mahanyuan 题目一个整数它加上100后是一个完全平方数再加上168又是一个完全平方数请问该数是多少*/
public class Demo13 {public static void main(String[] args) {int i 0;for (i 1; i 1000; i) {for (int k 1; k 100; k) {if (i 100 k * k) {// System.out.println(i k);for (int j 1; j 100; j) {if (i 268 j * j) {System.out.println(i);}}}}}}
}
【程序14】 题目输入某年某月某日判断这一天是这一年的第几天
分析注意平年和闰年。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 输入某年某月某日判断这一天是这一年的第几天*/
public class Demo14 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入年);int year s.nextInt();System.out.println(请输入月);int month s.nextInt();System.out.println(请输入日);int day s.nextInt();int sum 0;int[] arr { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };for (int i 0; i month - 1; i) {sum arr[i];}if (year % 4 0 year % 100 ! 0 || year % 400 0 month 3) {System.out.println(sum day 1);} else {System.out.println(sum day);}}}
【程序15】 题目输入三个整数x,y,z请把这三个数由小到大输出。
分析程序里取巧利用了Arrays的一个现成方法直接进行从小到大排序算是偷懒了。。。
package com.offcn.csdn;import java.util.Arrays;
import java.util.Scanner;/*** author mahanyuan 题目输入三个整数x,y,z请把这三个数由小到大输出。*/
public class Demo15 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(請輸入整數x);int x s.nextInt();System.out.println(請輸入整數y);int y s.nextInt();System.out.println(請輸入整數z);int z s.nextInt();int[] arr new int[3];arr[0] x;arr[1] y;arr[2] z;Arrays.sort(arr); // 利用sort方法。。。。for (int i 0; i 2; i) {System.out.print(arr[i] );}}
}
【程序16】 题目输出打印9*9口诀表。
分析for循环嵌套可利用\t制表符使得输出好看些。
package com.offcn.csdn;/*** author mahanyuan 输出9*9口诀*/
public class Demo16 {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)\t);}System.out.println();}}
}
【程序17】 题目猴子吃桃问题猴子第一天摘下若干个桃子当即吃了一半还不过瘾 又多吃了一个第二天早上又将剩下的桃子吃掉一半又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时见只剩下一个桃子了。 求第一天共摘了多少。
分析利用递归。
package com.offcn.csdn;/*** author mahanyuan 题目猴子吃桃问题猴子第一天摘下若干个桃子当即吃了一半还不过瘾* 又多吃了一个第二天早上又将剩下的桃子吃掉一半又多吃了一个。* 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时见只剩下一个桃子了。 求第一天共摘了多少。*/
public abstract class Demo17 {public static void main(String[] args) {System.out.println(第一天摘了 fun(10, 1));}public static int fun(int day, int num) {if (day - 1 0) {return num;} else {System.out.println(第 (day - 1) 天未吃前早上一看还有 ((num 1) * 2));return fun(day - 1, (num 1) * 2);}}
}
【程序18】 题目两个乒乓球队进行比赛甲队派出abc乙队派出xyz三人已抽签决定比赛名单打听到a说他不和x比c说他不和xz比请编程找出三队赛手的名单。
分析①c说他不和xz比说明他只和y比 ②a说他不和x比但是y和c比了所以他肯定是和z比 ③那剩下的x就是和b比了
package com.offcn.csdn;public class Demo18 {public static void main(String[] args) {String a null, b null, c null;// 甲队成员String[] racer { x, y, z };// 乙队成员for (int i 0; i 3; i) {for (int j 0; j 3; j) {for (int k 0; k 3; k) {if (i ! j i ! k j ! k) {a racer[i];b racer[j];c racer[k];if (!a.equals(x) !c.equals(z) !c.equals(x)) {if (a.equals(racer[i]) b.equals(racer[j]) c.equals(racer[k])) {System.out.println(a的对手是 racer[i] \nb的对手是 racer[j] \nc的对手是 racer[k]);}}}}}}}
}
【程序19】 题目打印菱形。
分析程序以”*“为例打印找空格和星号之间的规律联系。
package com.offcn.csdn;/*** author mahanyuan 题目打印出如下图案菱形* 3个空格1个**** 2个空格3个****** 1个空格5个*
******* 0个空格7个* 中间最长必为奇数***** 1个空格5个**** 2个空格3个** 3个空格1个**/
public class Demo19 {public static void main(String[] args) {String str ;int k 7 / 2; // 控制上半部分空格时有用int q 1; // 控制下半部分空格时有用for (int i 1; i 7; i) { // 控制上部分for (int m k; m 1; m--) { // 控制空格System.out.print( );}k--;for (int j i; j 1; j--) {// 控制打印*的个数str *;}System.out.println(str);str ; // 防止不断累积*i;}for (int i 5; i 1; i--) { // 控制下部分for (int n 1; n q; n) { // 空格System.out.print( );if (q 4) {break;}}q;for (int j i; j 1; j--) { // 控制打印*的个数str *;}System.out.println(str);str ;i--;}}}
【程序20】 题目有一分数序列2/13/25/38/513/821/13… 求出这个数列的前20项之和。
分析抓住分子与分母的变化规律后累加即可下面参考代码中还用了递归处理。
package com.offcn.csdn;/*** author mahanyuan 题目有一分数序列2/13/25/38/513/821/13… 求出这个数列的前20项之和。* * 程序分析请抓住分子与分母的变化规律。分数fraction*/
public class Demo20 {public static void main(String[] args) {double sum 0;for (double i 1; i 20; i) {sum (fun1(i) / fun2(i));}System.out.println(sum);}public static double fun1(double a) { // 递归处理分子if (a 1) {return 2;}if (a 2) {return 3;} else {return fun1(a - 2) fun1(a - 1);}}public static double fun2(double a) { // 递归处理分母if (a 1) {return 1;}if (a 2) {return 2;} else {return fun2(a - 2) fun2(a - 1);}}}
【程序21】 题目求12!3!…20!的和。
分析累乘后累加阶乘处理。
package com.offcn.csdn;/*** author mahanyuan 题目求12!3!…20!的和* * 程序分析累乘。*/
public class Demo21 {public static void main(String[] args) {long sum 0;for (int i 1; i 20; i) {sum fun(i);}System.out.println(12!3!…20!的和: sum);}public static int fun(int a) {int s 1;for (int i a; a 1; a--) {s * a;}return s;}}
【程序22】 题目利用递归方法求5
分析还是递归理解了递归的奥妙就好处理了。
package com.offcn.csdn;/*** author mahanyuan 题目利用递归方法求5!。*/
public class Demo22 {public static void main(String[] args) {int sum 1;sum * fun(5);System.out.println(sum);}public static int fun(int a) {if (a ! 1) {return a * fun(a - 1);} else {return 1;}}
}
【程序23】 题目有5个人坐在一起问第五个人多少岁他说比第4个人大2岁。 问第4个人岁数他说比第3个人大2岁。问第三个人又说比第2人大两岁 。问第2个人说比第一个人大两岁。最后问第一个人他说是10岁。请问第五个人多大
分析还是对递归的理解和使用。
package com.offcn.csdn;/*** author mahanyuan 题目有5个人坐在一起问第五个人多少岁他说比第4个人大2岁。* 问第4个人岁数他说比第3个人大2岁。问第三个人又说比第2人大两岁* 。问第2个人说比第一个人大两岁。最后问第一个人他说是10岁。请问第五个人多大*/
public class Demo23 {public static void main(String[] args) {System.out.println(第五个人的岁数 GetAge(5, 2));}// 递归方法求第五个人的岁数private static int GetAge(int num, int ageMore) {if (num 1) {// 第一个人岁数为10return 10;}return GetAge(num - 1, ageMore) ageMore;// 每上一个人岁数加2}
}
【程序24】 题目给一个不多于5位的正整数要求一、求它是几位数二、逆序打印出各位数字。
分析参考程序使用.charAt方法。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 给一个不多于5位的正整数要求一、求它是几位数二、逆序打印出各位数字。*/
public class Demo24 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入一个不多于5的正整数);String str s.nextLine();int num str.length();System.out.println(该数是 num 位数);String newstr ;for (int i str.length() - 1; i 0; i--) {newstr str.charAt(i);}System.out.println(逆序打印 newstr);}
}
【程序25】 题目输入一个数判断是否为回文数 如123321 12321等。
分析两头开始互相比较。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 输入一个数判断是否为回文数 123321 12321*/
public class Demo25 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入一个数);String str s.nextLine();boolean flag false;for (int i 0, j str.length() - 1; i str.length() / 2; i, j--) {char a str.charAt(i);char b str.charAt(j);if (a b) {flag true;} else {flag false;break;}}System.out.println(flag);}}
【程序26】 题目请输入星期几的第一个字母来判断一下是星期几 如果第一个字母一样则继续判断第二个字母。
分析switch case 语句参考代码以小写字母为例。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 题目请输入星期几的第一个字母来判断一下是星期几 如果第一个字母一样则继续判断第二个字母。*/
public class Demo26 {public static void main(String[] args) {System.out.println(请输入第一个英文字母);Scanner scanner new Scanner(System.in);String input scanner.next();String input2 ;switch (input) {case m:System.out.println(Monday);break;case t:System.out.println(请输入第二个字母);input2 scanner.next();if (input2.equals(u)) {System.out.println(Tuesday);} else if (input2.equals(h)) {System.out.println(Thursday);} else {System.out.println(你输入的字母有误);}break;case w:System.out.println(Wednesday);break;case f:System.out.println(Friday);break;case s:System.out.println(请输入第二个字母);input2 scanner.next();if (input2.equals(u)) {System.out.println(Sunday);} else if (input2.equals(a)) {System.out.println(Saturday);} else {System.out.println(你输入的字母有误);}break;default:System.out.println(你输入的字母不正确);break;}scanner.close();}}
【程序27】 题目求100以内的素数。
分析素数老生常谈了。
package com.offcn.csdn;/*** author mahanyuan* 题目求100之内的素数*/
public class Demo27 {public static void main(String[] args) {for (int i 2; i 100; i) { // 被除数boolean flag true;for (int j 2; j i; j) { // 除数if (i % j 0) {flag false;break;}}if (flag true) {System.out.println(素数有 i);}}}
}
【程序28】 题目对10个数进行排序。
分析for循环比较交换。
package com.offcn.csdn;import java.util.Arrays;/*** author mahanyuan 题目对10个数进行排序*/
public class Demo28 {public static void main(String[] args) {int[] arr { 7, 2, 3, 1, 9, 4, 6, 5, 8, 10 }; // 给十个数for (int j 0; j arr.length - 1; j) {int max arr[0];int temp 0;for (int i 1; i arr.length; i) {if (max arr[i]) {temp arr[i - 1];arr[i - 1] arr[i];arr[i] temp;} else {max arr[i];}}}for (int i 0; i arr.length; i) {System.out.println(arr[i]);}}
}
【程序29】 题目求一个3*3矩阵对角线元素之和。 1 2 3 4 5 6 7 8 9
分析考察二维数组。
package com.offcn.csdn;/*** author mahanyuan*题目求一个3*3矩阵对角线元素之和* 1 2 3 * 4 5 6 * 7 8 9*/
public class Demo29 {public static void main(String[] args) {int sum 0;int[][] arr { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };for (int i 0; i arr.length; i) {for (int j 0; j arr[i].length; j) {if(i j || i j 2) { // 中间元素只加一遍sum arr[i][j];}}}System.out.println(sum);}
}
【程序30】 题目有一个已经排好序的数组。现输入一个数要求按原来的规律将它插入数组中。
分析考察数组元素交换参考程序原数组排序规律为从大到小。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 有一个已经排好序的数组。现输入一个数要求按原来的规律将它插入数组中。*/
public class Demo30 {static int[] arr { 9, 7, 6, 2, 1 };static int[] arr2 new int[arr.length 1];public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入一个数);int num s.nextInt(); // 从键盘接一个数// 放入新数组arr2[0] num;for (int i 1, j 0; i arr.length; i, j) {arr2[i] arr[j];}if (arr[0] arr[1]) { // 正序fun();} else { // 倒序fun2();}}// 正序排序操作public static void fun() {for (int j 0; j arr2.length - 1; j) {int max arr2[0];int temp 0;for (int i 1; i arr2.length; i) {if (max arr2[i]) {temp arr2[i - 1];arr2[i - 1] arr2[i];arr2[i] temp;} else {max arr2[i];}}}// 对加入新数字后的数组按原先规律操作完后输出查看for (int i 0; i arr.length 1; i) {System.out.print(arr2[i] );}}// 倒序操作public static void fun2() {for (int j 0; j arr2.length - 1; j) {int min arr2[0];int temp 0;for (int i 1; i arr2.length; i) {if (min arr2[i]) {temp arr2[i - 1];arr2[i - 1] arr2[i];arr2[i] temp;} else {min arr2[i];}}}// 对加入新数字后的数组按原先规律操作完后输出查看for (int i 0; i arr.length 1; i) {System.out.print(arr2[i] );}}
}
【程序31】 题目将一个数组逆序输出。
分析还是考察数组元素交换。
package com.offcn.csdn;/*** author mahanyuan 将一个数组逆序输出*/
public class Demo31 {public static void main(String[] args) {int[] arr { 6, 2, 4, 5, 3 };int temp 0;for (int i 0, j arr.length - 1; i arr.length / 2; i, j--) {temp arr[i];arr[i] arr[j];arr[j] temp;}for (int i 0; i arr.length; i) {System.out.println(arr[i]);}}}
【程序32】 题目取一个整数a从右端开始的47位。
分析将原来的整数到个序转换后再求。
package com.offcn.csdn;/*** author mahanyuan 题目取一个整数a从右端开始的47位*/
public class Demo32 {public static void main(String[] args) {int a 12345;String str ;String str2 ;str a;for (int i 0; i str.length(); i) {str2 str.charAt(i) str2; // 将原数倒个序}System.out.println(str2);for (int j 3; j 6; j) {System.out.println(第 (j 1) 位為 str2.charAt(j));// 当}}
}
【程序33】 题目打印出杨辉三角形要求打印出10行如下图 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1
分析寻找规律下面参考程序利用的规律为某行的数字值为上一行的同一列的数字值和右边一位的累加和第一列和斜边可直接赋值为1。
package com.offcn.csdn;/*** author mahanyuan*题目打印出杨辉三角形要求打印出10行如下图*/
public class Demo33 {public static void main(String[] args) {int[][] arr new int[10][10]; // 定义一个二维数组for (int i 0; i 10; i) {for (int j 0; j i; j) {if (i 2 j 0) {arr[i][j] arr[i - 1][j] arr[i - 1][j - 1];}// 控制最左列和斜边为1arr[i][0] 1;if (i j) {arr[i][j] 1;}System.out.print(arr[i][j] );}System.out.println();}}
}
【程序34】 题目输入3个数a,b,c按大小顺序输出。
分析稍微繁琐一点的数值比较。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 题目输入3个数a,b,c按大小顺序输出。*/
public class Demo34 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请依次输入三个个数);int a s.nextInt();int b s.nextInt();int c s.nextInt();if (a b a c) {System.out.print(a );if (b c) {System.out.println(b c);} else {System.out.println(c b);}}if (b a b c) {System.out.print(b );if (a c) {System.out.println(a c);} else {System.out.println(c a);}}if (c b c a) {System.out.print(c );if (b a) {System.out.println(b a);} else {System.out.println(a b);}}}
}
【程序35】 题目输入数组最大的与第一个元素交换最小的与最后一个元素交换输出数组。
分析数组元素交换。
package com.offcn.csdn;/*** author mahanyuan 题目输入数组最大的与第一个元素交换最小的与最后一个元素交换输出数组。*/
public class Demo35 {public static void main(String[] args) {int[] arr { 5, 2, 6, 7, 3 }; // 初始化数组boolean flag false;int max arr[0], min arr[0];int temp 0;int i 0;for (i 1; i arr.length; i) { // maxif (max arr[i]) {continue;} else {max arr[i];}}for (i 1; i arr.length; i) { // minif (min arr[i]) {continue;} else {min arr[i];}}for (int j 0; j arr.length; j) { // change maxif (arr[j] max) {temp arr[0];arr[0] arr[j];arr[j] temp;}}for (int j 0; j arr.length; j) { // change minif (arr[j] min) {temp arr[arr.length - 1];arr[arr.length - 1] arr[j];arr[j] temp;}}System.out.println(max max min min);System.out.print(处理后的结果为);for (int k 0; k arr.length; k) {System.out.print(arr[k]);}}
}
【程序36】 题目有n个整数使其前面各数顺序向后移m个位置最后m个数变成最前面的m个数。
分析还是数组元素交换处理。
package com.offcn.csdn;/*** author mahanyuan 题目有n个整数使其前面各数顺序向后移m个位置最后m个数变成最前面的m个数*/
public class Demo36 {public static void main(String[] args) {int[] arr { 1, 2, 3, 4, 5 }; // n 5;int[] arr2 new int[5];// m 2;各数向后移2位for (int i 0; i arr.length; i) { // 移动操作if (i 2 4) {arr2[i 2 - 5] arr[i];} else {arr2[i 2] arr[i];}}for (int j 0; j arr2.length; j) { // 输出移动后的数组System.out.print(arr2[j] );}}}
【程序37】 题目有n个人围成一圈顺序排号。从第一个人开始报数从1到3报数凡报到3的人退出圈子问最后留下的是原来第几号的那位。
分析数组循环。
package com.offcn.csdn;import java.util.Arrays;/*** author mahanyuan 题目有n个人围成一圈顺序排号。从第一个人开始报数从1到3报数* 凡报到3的人退出圈子问最后留下的是原来第几号的那位。*/
public class Demo37 {// static String str2 ;public static void main(String[] args) {int[] arr { 1, 2, 3, 4, 5 }; // n 5int count 0;int sum 0;for (int i 0; i arr.length; i) {if (arr[i] ! 0) {count;}if (count % 3 0 arr[i] ! 0) {arr[i] 0;}if (i 4) {i -1;} // 4 arr.length -1if (count 12) { // count 3 *(n-1)break;}}for (int j 0; j arr.length; j) {System.out.print(arr[j] );}}
}
【程序38】 题目写一个函数求一个字符串的长度 在main函数中输入字符串并输出其长度。
分析算实考察方法调用吧。。。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 题目写一个函数求一个字符串的长度 在main函数中输入字符串并输出其长度。*/
public class Demo38 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入字符串);String str s.nextLine();System.out.println(字符串长度为 fun(str));}public static int fun(String str) {int length str.length();return length;}
}
【程序39】 题目编写一个函数输入n为偶数时调用函数求1/21/4…1/n, 当输入n为奇数时调用函数1/11/3…1/n(利用指针函数)。
分析注意int和double吧。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 题目编写一个函数输入n为偶数时调用函数求1/21/4…1/n,* 当输入n为奇数时调用函数1/11/3…1/n(利用指针函数)*/
public class Demo39 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入一个数);int num s.nextInt();System.out.println(fun(num));}public static double fun(int num) {double sum 0;if (num % 2 0) {for (int i 2; i num; i 2) {sum (double) 1 / i;}return sum;} else {for (int i 1; i num; i 2) {sum (double) 1 / i;}return sum;}}
}
【程序40】 题目:按字符串的长度和字母ASKII顺序排序。
分析compareTo方法的使用。
package com.offcn.csdn;/*** author mahanyuan 字符串排序。*/
public class Demo40 {
// public static void main(String[] args) {
// String tempstr;
// String[] str { bd, abc, m, fac, fab, ba };
// for (int j 0; j str.length; j) {
// int min str[j].charAt(0);
// for (int i j 1; i str.length; i) {
// if (str[i].charAt(0) min) {
// tempstr str[j];
// str[j] str[i];
// str[i] tempstr;
// min str[j].charAt(0);
// }
// }
// }
// for (int j 0; j str.length; j) {
// System.out.println(str[j]);
// }public static void main(String[] args) {String[] str { fb, abaac, abaa, fc, fa };for (int i str.length - 1; i 1; i--) {for (int j 0; j i - 1; j) {if (str[j].compareTo(str[j 1]) 0) {String temp str[j];str[j] str[j 1];str[j 1] temp;}}for (String subStr : str)System.out.print(subStr );System.out.println();}}
}
【程序41】 题目海滩上有一堆桃子五只猴子来分。第一只猴子把这堆桃子平均分为五份多了一个 这只猴子把多的一个扔入海中拿走了一份。第二只猴子把剩下的桃子又平均分成五份 又多了一个它同样把多的一个扔入海中拿走了一份第三、第四、第五只猴子都是这样做的问海滩上原来最少有多少个桃子
分析还是递归的理解和使用。
package com.offcn.csdn;/*** author mahanyuan 题目海滩上有一堆桃子五只猴子来分。第一只猴子把这堆桃子平均分为五份多了一个* 这只猴子把多的一个扔入海中拿走了一份。第二只猴子把剩下的桃子又平均分成五份 又多了一个它同样把多的一个扔入海中* 拿走了一份第三、第四、第五只猴子都是这样做的问海滩上原来最少有多少个桃子 分析第五个猴-16个桃子*/
public class Demo41 {public static void main(String[] args) {fun(5, 6);}public static void fun(int monkynum, int peachnum) {if (monkynum ! 0) {fun(monkynum - 1, peachnum * 5 1);System.out.println(monkynum peachnum);} else {System.out.println(monkynum peachnum);}}
}
【程序42】 题目809*??800*??9*??1 ??代表两位数8*??的结果为两位数9*??的结果为三位数。 求??代表的两位数及809*??后的结果。
分析算是数学题吧。
package com.offcn.csdn;/*** author mahanyuan 809*??800*??9*??1 ??代表两位数8*??的结果为两位数9*??的结果为三位数。* 求??代表的两位数及809*??后的结果*/
public class Demo42 {public static void main(String[] args) {// 求的值为int x;for (x 0;; x) {if (x 1.25 x 12.5 9 * x 100 9 * x 1000) {System.out.println(x);break;}}System.out.println(809 * x);}}
【程序43】 题目求0-7所能组成的奇数的个数。
分析下面参考程序为简单粗暴的for循环。
package com.offcn.csdn;/*** author mahanyuan 求0-7所能组成的奇数的个数*/
public class Demo43 {static int[] arr { 0, 1, 2, 3, 4, 5, 6, 7 };public static void main(String[] args) {long count 0;int I 10000000, J 1000000, K 100000, M 10000, N 1000, X 100, Y 10;for (int i 0; i arr.length; i) {for (int j 0; j arr.length; j) {for (int k 0; k arr.length; k) {for (int m 0; m arr.length; m) {for (int n 0; n arr.length; n) {for (int x 0; x arr.length; x) {for (int y 0; y arr.length; y) {for (int z 0; z arr.length; z) {long a arr[i] * I arr[j] * J arr[k] * K arr[m] * M arr[n] * N arr[x] * X arr[y] * Y arr[z];if (a % 2 1) {count;}}}}}}}}}System.out.println(count);}
}
【程序44】 题目一个偶数总能表示为两个素数之和。
分析基本还是算考察素数。
package com.offcn.csdn;/*** author mahanyuan 一个偶数总能表示为两个素数之和*/
public class Demo44 {public static void main(String[] args) {int num 20; // 一个偶数int[] arr new int[num];// 定义一个数组放找到的所有素数int k 0;// 控制数组下标// 求num以内的所有素数boolean flag true;for (int a 0; a num; a) {for (int i 2; i a; i) {if (a % i 0) {flag false;break;}}if (flag) {System.out.println(a);// 打印看看有哪些是素数arr[k] a;k;// 是素数放进数组} else {flag true;}}System.out.println(-----------------);// 遍历查看数组中的素数并寻找满足加和为偶数的两个素数for (int i 0; i arr.length; i) {for (int j 0; j arr.length; j) {if (arr[i] arr[j] 20 i j) {System.out.println(arr[i] arr[j]);}}}}
}
【程序45】 题目字符串连接。
分析字符串直接通过号连接。
package com.offcn.csdn;public class Demo45 {/*** param args 两个字符串连接程序*/public static void main(String[] args) {String str1 Hello;String str2 World!;String str3 str1 str2;System.out.println(str3);}
}
【程序46】 题目输入一个数1-50程序打印该数数量的*号。
分析方法调用for循环。
package com.offcn.csdn;import java.util.Scanner;/*** author mahanyuan 输入一个数1-50程序打印该数数量的*号方法调用解决*/
public class Demo46 {public static void main(String[] args) {Scanner s new Scanner(System.in);System.out.println(请输入一个1-50的数);int num s.nextInt();fun(num);}public static void fun(int num) {for (int i 1; i num; i) {System.out.println(*---- i);}}
}
【程序47】 题目计算字符串中子串出现的次数。
分析下面参考程序使用了charAt方法。
package com.offcn.csdn;/*** author mahanyuan 计算字符串中子串出现的次数*/
public class Demo47 {public static void main(String[] args) {int count 0;String str Hello World! How are you?;for (int i 0; i str.length(); i) {if (str.charAt(i) ) {count;}}System.out.println(count);}}
【程序48】 题目输入一个整数后打印(金字塔假如输入4打印如下 1 121 12321 1234321 分析找规律注意空格即可。
package com.offcn.csdn;import java.util.Scanner;public class Demo01 {public static void main(String[] args) {Scanner num new Scanner(System.in);System.out.println(请输入一个数);int n num.nextInt();for (int i 1; i n; i) { // 控制行数for (int j n - i; j 0; j--) { // 控制空格System.out.print( );}for (int k 1; k i; k) { // 控制正序System.out.print(k);}for (int q i - 1; q 1; q--) { // 控制倒序System.out.print(q);}System.out.println();}}}
【程序49】 题目输入一个整数打印假如输入4打印如下 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 分析找规律注意走S型。
package com.offcn.csdn;import java.util.Scanner;public class Demo02 {public static void main(String[] args) {Scanner num new Scanner(System.in);System.out.println(请输入一个数);int n num.nextInt(); // 获取行数int x 0, k;for (int i 1; i n; i) { // 控制行数if (i 1) { // 控制第一行for (int j 1; j n; j) {System.out.print(j \t);x j;}}if (i ! 1 i % 2 0) { //控制双数行for (k x n; k x 1; k--) {System.out.print(k \t);}x k n;}if (i ! 1 i % 2 1) { //控制单数行for (k x 1; k x n; k) {System.out.print(k \t);}x k - 1;}System.out.println();}}}
【程序50】 题目有五个学生每个学生有3门课的成绩从键盘输入以上数据包括学生号姓名三门课成绩计算出平均成绩将原有的数据和计算出的平均分数存放在磁盘文件”stud”中。
分析最后这题涉及文件存储输入输出流非本人方法。
package com.offcn.csdn;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;public class Demo50 {//定义学生模型String[] number new String[5];String[] name new String[5];float[][] grade new float[5][3];float[] sum new float[5];public static void main(String[] args) throws Exception{Demo50 stud new Demo50();stud.input();stud.output();}//输入学号、姓名、成绩void input() throws IOException{BufferedReader br new BufferedReader(new InputStreamReader(System.in));//录入状态标识boolean isRecord true;while(isRecord){try{for(int i0;i5;i){System.out.print(请输入学号);number[i] br.readLine();System.out.print(请输入姓名);name[i] br.readLine();for(int j0;j3;j){System.out.print(请输入第(j1)门课成绩);grade[i][j] Integer.parseInt(br.readLine());}System.out.println();sum[i] grade[i][0]grade[i][1]grade[i][2];}isRecord false;}catch(NumberFormatException e){System.out.println(请输入一个数字);}}}//输出文件void output() throws IOException{FileWriter fw new FileWriter(E://java50//stud.txt);BufferedWriter bw new BufferedWriter(fw); bw.write(No. Name grade1 grade2 grade3 average);bw.newLine();for(int i0;i5;i){bw.write(number[i]);bw.write( name[i]);for(int j0;j3;j)bw.write( grade[i][j]);bw.write( (sum[i]/5));bw.newLine();}bw.close();}
}