2022年Java基础编程题.pdf

上传人:Che****ry 文档编号:12837750 上传时间:2022-04-26 格式:PDF 页数:40 大小:567.40KB
返回 下载 相关 举报
2022年Java基础编程题.pdf_第1页
第1页 / 共40页
2022年Java基础编程题.pdf_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《2022年Java基础编程题.pdf》由会员分享,可在线阅读,更多相关《2022年Java基础编程题.pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java 基础编程题 ( 含答案 ) 50 道 JAVA 基础编程练习题【程序 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)

2、if(n=1 | n=2) return 1; else return 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;in;i+) if(isPrime(i)

3、count+; System、out 、print(i+ ); if(count%10=0) System、out 、println(); System、out 、println(); System、out 、println(在+m+与+n+ 之间共有 +count+ 个素数 ); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) / 判断素数private static boolean isPrime(in

4、t 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; else flag = true; return flag; 【程序 3】题目 : 打印出所有的 水仙花数 , 所谓 水仙花数 就是指一个三位数, 其各位数字立方与等于该数本身。例如:153 就是一个 水仙花数 , 因为 153=1 的三次方 5 的三次方 3 的三次方。程序分析 : 利用 for循环控制 100-999 个数, 每个数分解出个位, 十位

5、 , 百位。public class Prog3 public static void main(String args) for(int i=100;i1000;i+) if(isLotus(i) System、out 、print(i+ ); System、out 、println(); / 判断水仙花数private static boolean isLotus(int lotus) int m = 0; int n = lotus; int sum = 0; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - -

6、- -第 2 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) m = n/100; n -= m*100; sum = m*m*m; m = n/10; n -= m*10; sum += m*m*m + n*n*n; if(sum=lotus) return true; else return false; 【程序 4】题目 : 将一个正整数分解质因数。例如: 输入 90, 打印出 90=2*3*3*5 。程序分析 : 对 n 进行分解质因数 , 应先找到一个最小的质数k, 然后按下述步骤完成: (1) 如果这个质数恰等于n, 则说明分解质因数

7、的过程已经结束, 打印出即可。(2) 如果 nk, 但 n 能被 k 整除 , 则应打印出k 的值, 并用 n 除以 k 的商 , 作为新的正整数n, 重复执行第一步。(3) 如果 n 不能被 k 整除, 则用 k+1 作为 k 的值 , 重复执行第一步。public class Prog4 public static void main(String args) int n = 13; decompose(n); private static void decompose(int n) System、out 、print(n+=); for(int i=2;i=90分的同学用A表示,60-8

8、9 分之间的用B表示 ,60 分以下的用 C表示。程序分析 :(ab)?a:b这就是条件运算符的基本例子。public class Prog5 public static void main(String args) int n = -1; try n = Integer、parseInt(args0); catch(ArrayIndexOutOfBoundsException e) System、out、println( 请输入成绩 ); return; grade(n); /成绩等级计算private static void grade(int n) if(n100 | n=90)? 分,

9、属于 A 等:(n60)? 分 ,属于 B 等: 分,属于 C 等); System、out、println(n+str); 【程序 6】题目 : 输入两个正整数m与 n, 求其最大公约数与最小公倍数。程序分析 : 利用辗除法。public class Prog6 public static void main(String args) int m,n; try m = Integer、parseInt(args0); n = Integer、parseInt(args1); catch(ArrayIndexOutOfBoundsException e) System、out 、println

10、(输入有误 ); return; max_min(m,n); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) / 求最大公约数与最小公倍数private static void max_min(int m, int n) int temp = 1; int yshu = 1; int bshu = m*n; if(nm) temp = n; n = m; m = temp; while(m!=0) temp

11、 = n%m; n = m; m = temp; yshu = n; bshu /= n; System、out 、println(m+与+n+ 的最大公约数为+yshu); System、out 、println(m+与+n+ 的最小公倍数为+bshu); 【程序 7】题目 : 输入一行字符 , 分别统计出其中英文字母、空格、数字与其它字符的个数。程序分析 : 利用 while 语句 , 条件为输入的字符不为n、import java、util、Scanner; public class Prog7_1 public static void main(String args) System、

12、out 、print(请输入一串字符 :); Scanner scan = new Scanner(System、in); String str = scan、nextLine();/将一行字符转化为字符串scan、close(); count(str); / 统计输入的字符数private static void count(String str) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) Stri

13、ng E1 = u4e00-u9fa5;/汉字String E2 = a-zA-Z; String E3 = 0-9; String E4 = s;/空格int countChinese = 0; int countLetter = 0; int countNumber = 0; int countSpace = 0; int countOther = 0; char array_Char = str、toCharArray();/将字符串转化为字符数组String array_String = new Stringarray_Char、length;/汉字只能作为字符串处理for(int i

14、=0;iarray_Char、length;i+) array_Stringi = String、valueOf(array_Chari); / 遍历字符串数组中的元素for(String s:array_String) if(s、matches(E1) countChinese+; else if(s、matches(E2) countLetter+; else if(s、matches(E3) countNumber+; else if(s、matches(E4) countSpace+; else countOther+; System、out 、println(输入的汉字个数:+cou

15、ntChinese); System、out 、println(输入的字母个数:+countLetter); System、out 、println(输入的数字个数:+countNumber); System、out 、println(输入的空格个数:+countSpace); System、out 、println(输入的其它字符个数:+countSpace); import java、util、*; public class Prog7_2 public static void main(String args) 精品资料 - - - 欢迎下载 - - - - - - - - - - -

16、欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) System 、out 、println(请输入一行字符:); Scanner scan = new Scanner(System、in); String str = scan、nextLine(); scan 、close(); count(str); / 统计输入的字符private static void count(String str) List list = new ArrayList(); char array_Char

17、 = str、toCharArray(); for(char c:array_Char) list、add(String、valueOf(c);/将字符作为字符串添加到list表中Collections、sort(list);/排序for(String s:list) int begin = list、indexOf(s); int end = list、lastIndexOf(s); / 索引结束统计字符数if(list、get(end)=s) System 、out 、println(字符 +s+ 有+(end-begin+1)+个); 【程序 8】题目 : 求 s=a+aa+aaa+aa

18、aa+aa、 a 的值 , 其中 a 就是一个数字。例如2+22+222+2222+22222(此时共有 5个数相加 ), 几个数相加有键盘控制。程序分析 : 关键就是计算出每一项的值。import java、util、Scanner; public class Prog8 public static void main(String args) System、out 、print(求 s=a+aa+aaa+aaaa+、的值 , 请输入 a 的值 :); Scanner scan = new Scanner(System、in) 、useDelimiter(s*);/以空格作为分隔符int a

19、 = scan、nextInt(); int n = scan、nextInt(); scan、close();/关闭扫描器System、out 、println(expressed(2,5)+add(2,5); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) / 求与表达式private static String expressed(int a,int n) StringBuffer sb = new

20、StringBuffer(); StringBuffer subSB = new StringBuffer(); for(int i=1;in+1;i+) subSB = subSB 、append(a); sb = sb、append(subSB); if(in) sb = sb、append(+); sb、append(=); return sb、toString(); / 求与private static long add(int a,int n) long sum = 0; long subSUM = 0; for(int i=1;in+1;i+) subSUM = subSUM*10

21、+a; sum = sum+subSUM; return sum; 【程序 9】题目 : 一个数如果恰好等于它的因子之与, 这个数就称为 完数 。例如 6=123、编程找出1000 以内的所有完数。public class Prog9 public static void main(String args) int n = 10000; compNumber(n); / 求完数private static void compNumber(int n) int count = 0; System、out 、println(n+以内的完数 :); 精品资料 - - - 欢迎下载 - - - - -

22、 - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) for(int i=1;in+1;i+) int sum = 0; for(int j=1;ji/2+1;j+) if(i%j)=0) sum += j; if(sum=i) System 、out 、print(i+ ); if(count+)%5=0) System、out 、println(); 【程序 10】题目 : 一球从 100 米高度自由落下 , 每次落地后反跳回原高度的一半; 再落下 , 求它

23、在第 10次落地时 , 共经过多少米?第 10 次反弹多高?import java、util、Scanner; public class Prog10 public static void main(String args) System、out 、print(请输入小球落地时的高度与求解的次数:); Scanner scan = new Scanner(System、in) 、useDelimiter(s); int h = scan、nextInt(); int n = scan、nextInt(); scan、close(); distance(h,n); / 小球从 h 高度落下 ,

24、经 n 次反弹后经过的距离与反弹的高度private static void distance(int h,int n) double length = 0; for(int i=0;in;i+) length += h; h /=2 、0 ; System、out 、println(经过第 +n+ 次反弹后 , 小球共经过 +length+米,+ 第+n+ 次反弹高精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答

25、案 ) 度为 +h+ 米); 【程序 11】题目 : 有 1、2、3、4 个数字 , 能组成多少个互不相同且无重复数字的三位数?都就是多少?程序分析 : 可填在百位、十位、个位的数字都就是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。public class Prog11 public static void main(String args) int count = 0; int n = 0; for(int i=1;i5;i+) for(int j=1;j5;j+) if(j=i) continue; for(int k=1;k1000000) profit = profit_s

26、ub-1000000; profit_sub = 1000000; prize += profit*0、01; if(profit600000) profit = profit_sub-600000; profit_sub = 600000; prize += profit*0、015; if(profit400000) profit = profit_sub-400000; profit_sub = 400000; prize += profit*0、03; if(profit200000) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 -

27、- - - - - - - - -第 11 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) profit = profit_sub-200000; profit_sub = 200000; prize += prize*0、05; if(profit100000) profit = profit_sub-100000; profit_sub = 100000; prize += profit*0、075; prize += profit_sub*0、1; return prize; 【程序 13】题目 : 一个整数 , 它加上 100 后就是一个

28、完全平方数,再加上 168 又就是一个完全平方数, 请问该数就是多少?程序分析 : 在 10 万以内判断 , 先将该数加上100后再开方 , 再将该数加上268后再开方 , 如果开方后的结果满足如下条件 , 即就是结果。public class Prog13 public static void main(String args) int n=0; for(int i=0;i100001;i+) if(isCompSqrt(i+100) & isCompSqrt(i+268) n = i; break; System、out 、println(所求的数就是 :+n); / 判断完全平方数pri

29、vate static boolean isCompSqrt(int n) boolean isComp = false; for(int i=1;iMath、sqrt(n)+1;i+) if(n=Math、pow(i,2) isComp = true; break; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) return isComp; 【程序 14】题目 : 输入某年某月某日, 判断这一天就是这

30、一年的第几天?程序分析 : 以 3 月 5日为例 , 应该先把前两个月的加起来, 然后再加上 5 天即本年的第几天,特殊情况 , 闰年且输入月份大于3 时需考虑多加一天。import java、util、Scanner; public class Prog14 public static void main(String args) Scanner scan = new Scanner(System、in) 、useDelimiter(D);/匹配非数字System、out 、print(请输入当前日期 ( 年- 月- 日):); int year = scan、nextInt(); int

31、month = scan、nextInt(); int date = scan、nextInt(); scan、close(); System、out 、println(今天就是 +year+ 年的第 +analysis(year,month,date)+天); / 判断天数private static int analysis(int year, int month, int date) int n = 0; int month_date = new int 0,31,28,31,30,31,30,31,31,30,31,30; if(year%400)=0 | (year%4)=0)&(y

32、ear%100)!=0) month_date2 = 29; for(int i=0;iy 则将 x 与 y 的值进行交换 , 然后再用 x 与 z 进行比较 , 如果 xz 则将 x 与 z 的值进行交换 , 这样能使 x 最小。import java、util、Scanner; public class Prog15 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) public static void

33、 main(String args) Scanner scan = new Scanner(System、in) 、useDelimiter(D); System、out 、print(请输入三个数 :); int x = scan、nextInt(); int y = scan、nextInt(); int z = scan、nextInt(); scan、close(); System、out 、println(排序结果 :+sort(x,y,z); / 比较两个数的大小private static String sort(int x,int y,int z) String s = nul

34、l; if(xy) int t = x; x = y; y = t; if(xz) int t = x; x = z; z = t; if(yz) int t = z; z = y; y = t; s = x+ +y+ +z; return s; 【程序 16】题目 : 输出 9*9 口诀。程序分析 : 分行与列考虑 , 共 9 行 9 列,i控制行 ,j控制列。public class Prog16 public static void main(String args) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - -

35、- - - -第 14 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) for(int i=1;i10;i+) for(int j=1;j0;i-) m = 2*m + 2; System 、out 、println(小猴子共摘了 +m+桃子 ); 【程序 18】题目 : 两个乒乓球队进行比赛, 各出三人。 甲队为 a,b,c三人 , 乙队为 x,y,z三人。 已抽签决定比赛名单。有人向队员打听比赛的名单。a 说她不与 x 比,c 说她不与 x,z 比, 请编程序找出三队赛手的名单。import java、util、ArrayList; publ

36、ic class Prog18 String a,b,c;/甲队成员public static void main(String args) String racer = x,y,z;/乙队成员ArrayList arrayList = new ArrayList(); for(int i=0;i3;i+) for(int j=0;j3;j+) for(int k=0;k3;k+) Prog18 prog18 = new Prog18(raceri,racerj,racerk); if(!prog18、a、equals(prog18、b) & !prog18 、a、equals(prog18、

37、c) & !prog18 、b、equals(prog18、c) & !prog18、a、equals(x) & !prog18 、c、equals(x) & !prog18 、c、equals(z) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) arrayList、add(prog18); for(Object obj:arrayList) System、out 、println(obj); / 构造

38、方法private Prog18(String a,String b,String c) this 、a = a; this 、b = b ; this 、c = c; public String toString() return a的对手就是 +a+ +b的对手就是 +b+ +c的对手就是 +c; 【程序 19】题目 : 打印出如下图案( 菱形 ) * * * * * * * 程序分析 : 先把图形分成两部分来瞧待, 前四行一个规律, 后三行一个规律 , 利用双重 for循环 , 第一层控制行, 第二层控制列。public class Prog19 public static void m

39、ain(String args) int n = 5; printStar(n); / 打印星星private static void printStar(int n) / 打印上半部分for(int i=0;in;i+) for(int j=0;j2*n;j+) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) if(j=n-i & j=n+i) System 、out 、print(*); System

40、 、out 、println(); / 打印下半部分for(int i=1;in;i+) System、out 、print( ); for(int j=0;j2*n-i;j+) if(j=i & j2*n-i-1) System 、out 、print(*); System、out 、println(); 【程序 20】题目 : 有一分数序列 :2/1,3/2,5/3,8/5,13/8,21/13、求出这个数列的前20 项之与。程序分析 : 请抓住分子与分母的变化规律。public class Prog20 public static void main(String args) doubl

41、e n1 = 1; double n2 = 1; double fraction = n1/n2; double Sn = 0; for(int i=0;i20;i+) double t1 = n1; double t2 = n2; n1 = t1+t2; n2 = t1; fraction = n1/n2; Sn += fraction; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) System、o

42、ut 、print(Sn); 【程序 21】题目 : 求 1+2!+3!+ 、 +20! 的与程序分析 : 此程序只就是把累加变成了累乘。public class Prog21 public static void main(String args) long sum = 0; for(int i=0;i20;i+) sum += factorial(i+1); System、out 、println(sum); / 阶乘private static long factorial(int n) int mult = 1; for(int i=1;in+1;i+) mult *= i; retu

43、rn mult; 【程序 22】题目 : 利用递归方法求5! 。程序分析 : 递归公式 :fn=fn_1*4! public class Prog22 public static void main(String args) System、out 、println(fact(10); / 递归求阶乘private static long fact(int n) if(n=1) return 1; else return fact(n-1)*n; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 18 页,共

44、 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) 【程序 23】题目 : 有 5 个人坐在一起 , 问第五个人多少岁?她说比第4 个人大 2 岁。 问第 4 个人岁数 , 她说比第 3 个人大2 岁。问第三个人 , 又说比第 2 人大两岁。 问第 2 个人 , 说比第一个人大两岁。最后问第一个人, 她说就是 10岁。请问第五个人多大?程序分析 : 利用递归的方法, 递归分为回推与递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推 , 推到第一人 (10 岁), 再往回推。public class Prog23 public static v

45、oid main(String args) System、out 、println(getAge(5,2); / 求第 m位同志的年龄private static int getAge(int m,int n) if(m=1) return 10; else return getAge(m-1,n)+n; 【程序 24】题目 : 给一个不多于5 位的正整数 , 要求 : 一、求它就是几位数, 二、逆序打印出各位数字。public class Prog24 public static void main(String args) int n = Integer、parseInt(args0);

46、int i = 0; int a = new int5; do ai = n%10; n /= 10; +i; while(n!=0); System、out 、print(这就是一个 +i+ 位数 , 从个位起 , 各位数字依次为 :); for(int j=0;ji;j+) System 、out 、print(aj+ ); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 19 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) 【程序 25】题目 : 一个

47、 5 位数 , 判断它就是不就是回文数。即12321 就是回文数 , 个位与万位相同 , 十位与千位相同。import java、io 、*; public class Prog25 public static void main(String args) int n = 0; System、out 、print(请输入一个 5 位数 :); BufferedReader bufin = new BufferedReader(new InputStreamReader(System、in); try n = Integer、parseInt(bufin、readLine(); catch(IO

48、Exception e) e、printStackTrace(); finally try bufin、close(); catch(IOException e) e、printStackTrace(); palin(n); private static void palin(int n) int m = n; int a = new int5; if(n99999) System、out 、println(输入的不就是5 位数! ); return; else for(int i=0;i5;i+) ai = n%10; n /= 10; if(a0=a4 & a1=a3) System、ou

49、t 、println(m+就是一个回文数 ); else System、out 、println(m+不就是回文数 ); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 20 页,共 40 页 - - - - - - - - - - Java 基础编程题 ( 含答案 ) 【程序 26】题目 : 请输入星期几的第一个字母来判断一下就是星期几, 如果第一个字母一样, 则继续判断第二个字母。程序分析 : 用情况语句比较好, 如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。import java、i

50、o 、*; public class Prog26 public static void main(String args) String str = new String(); BufferedReader bufIn = new BufferedReader(new InputStreamReader(System、in); System 、out 、print(请输入星期的英文单词前两至四个字母):); try str = bufIn、readLine(); catch(IOException e) e 、printStackTrace(); finally try bufIn、clos

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁