2024年5月21日发(作者:)
Java基础编程题(含答案)
50道JAVA基础编程练习题
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生
一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21、、、、
public class Prog1{
}
【程序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 } System、out、println(); System、out、println("在"+m+"与"+n+"之间共有"+count+"个素数"); if(isPrime(i)){ } count++; System、out、print(i+" "); if(count%10==0){ } System、out、println(); public static void main(String[] args){ } private static int fun(int n){ } if(n==1 || n==2) return 1; else return fun(n-1)+fun(n-2); int n = 10; System、out、println("第"+n+"个月兔子总数为"+fun(n)); Java基础编程题(含答案) } 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"就是指一个三位数,其各位数字立方与等于该数本身。例 如:153就是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 public class Prog3{ public static void main(String[] args){ } //判断水仙花数 private static boolean isLotus(int lotus){ int m = 0; int n = lotus; int sum = 0; for(int i=100;i<1000;i++){ } System、out、println(); if(isLotus(i)) System、out、print(i+" "); } //判断素数 private static boolean isPrime(int n){ } boolean flag = true; if(n==1) flag = false; else{ } } return flag; for(int i=2;i<=Math、sqrt(n);i++){ if((n%i)==0 || n==1){ } else flag = true; flag = false; break; Java基础编程题(含答案) } 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 public class Prog4{ public static void main(String[] args){ } private static void decompose(int n){ } System、out、print(n+"="); for(int i=2;i } while(n%i==0 && n!=i){ } if(n==i){ } System、out、println(i); break; n/=i; System、out、print(i+"*"); int n = 13; decompose(n); 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; Java基础编程题(含答案) } 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分 以下的用C表示。 程序分析:(a>b)?a:b这就是条件运算符的基本例子。 public class Prog5{ } 【程序6】 题目:输入两个正整数m与n,求其最大公约数与最小公倍数。 程序分析:利用辗除法。 public class Prog6{ public static void main(String[] args){ int m,n; try{ m = Integer、parseInt(args[0]); n = Integer、parseInt(args[1]); public static void main(String[] args){ } //成绩等级计算 private static void grade(int n){ } if(n>100 || n<0) System、out、println("输入无效"); else{ String str = (n>=90)?"分,属于A等":((n>60)?"分,属于B等":"分,属于C等"); System、out、println(n+str); } int n = -1; try{ } grade(n); n = Integer、parseInt(args[0]); System、out、println("请输入成绩"); return; }catch(ArrayIndexOutOfBoundsException e){ }catch(ArrayIndexOutOfBoundsException e){ } max_min(m,n); System、out、println("输入有误"); return; Java基础编程题(含答案) } 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字与其它字符的个数。 程序分析:利用while语句,条件为输入的字符不为'n'、 import java、util、Scanner; public class Prog7_1{ public static void main(String[] args){ } //统计输入的字符数 private static void count(String str){ System、out、print("请输入一串字符:"); Scanner scan = new Scanner(System、in); String str = scan、nextLine();//将一行字符转化为字符串 scan、close(); count(str); } //求最大公约数与最小公倍数 private static void max_min(int m, int n){ } int temp = 1; int yshu = 1; int bshu = m*n; if(n } while(m!=0){ } yshu = n; bshu /= n; System、out、println(m+"与"+n+"的最大公约数为"+yshu); System、out、println(m+"与"+n+"的最小公倍数为"+bshu); temp = n%m; n = m; m = temp; temp = n; n = m; m = temp; Java基础编程题(含答案) } import java、util、*; public class Prog7_2{ public static void main(String[] args){ } String 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 String[array_Char、length];//汉字只能作为字符串处理 for(int i=0;i array_String[i] = String、valueOf(array_Char[i]); //遍历字符串数组中的元素 for(String s:array_String){ } System、out、println("输入的汉字个数:"+countChinese); System、out、println("输入的字母个数:"+countLetter); System、out、println("输入的数字个数:"+countNumber); System、out、println("输入的空格个数:"+countSpace); System、out、println("输入的其它字符个数:"+countSpace); 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++; Java基础编程题(含答案) } 【程序8】 题目:求s=a+aa+aaa+aaaa+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 = scan、nextInt(); int n = scan、nextInt(); scan、close();//关闭扫描器 System、out、println(expressed(2,5)+add(2,5)); System、out、println("请输入一行字符:"); Scanner scan = new Scanner(System、in); String str = scan、nextLine(); scan、close(); count(str); } //统计输入的字符 private static void count(String str){ } List char[] array_Char = 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)+"个"); Java基础编程题(含答案) } 【程序9】 题目:一个数如果恰好等于它的因子之与,这个数就称为"完数"。例如6=1+2+3、编程找出1000以内的所 有完数。 public class Prog9{ public static void main(String[] args){ } //求完数 private static void compNumber(int n){ int count = 0; System、out、println(n+"以内的完数:"); int n = 10000; compNumber(n); //求与表达式 private static String expressed(int a,int n){ } //求与 private static long add(int a,int n){ } long sum = 0; long subSUM = 0; for(int i=1;i } return sum; subSUM = subSUM*10+a; sum = sum+subSUM; StringBuffer sb = new StringBuffer(); StringBuffer subSB = new StringBuffer(); for(int i=1;i subSB = subSB、append(a); sb = sb、append(subSB); if(i sb = sb、append("+"); } sb、append("="); return sb、toString(); Java基础编程题(含答案) } 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过 多少米?第10次反弹多高? import java、util、Scanner; public class Prog10{ public static void main(String[] args){ } //小球从h高度落下,经n次反弹后经过的距离与反弹的高度 private static void distance(int h,int n){ double length = 0; for(int i=0;i } System、out、println("经过第"+n+"次反弹后,小球共经过"+length+"米,"+"第"+n+"次反弹高 length += h; h /=2、0 ; System、out、print("请输入小球落地时的高度与求解的次数:"); Scanner scan = new Scanner(System、in)、useDelimiter("s"); int h = scan、nextInt(); int n = scan、nextInt(); scan、close(); distance(h,n); } for(int i=1;i } int sum = 0; for(int j=1;j if((i%j)==0){ sum += j; if(sum==i){ System、out、print(i+" "); if((count++)%5==0) System、out、println(); } } } Java基础编程题(含答案) 度为"+h+"米"); } 【程序11】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都就是多少? 程序分析:可填在百位、十位、个位的数字都就是1、2、3、4。组成所有的排列后再去 掉不满足条件的排 列。 public class Prog11{ } 【程序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,求应 发放奖金总数? 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 public static void main(String[] args){ } int count = 0; int n = 0; for(int i=1;i<5;i++){ } System、out、println(); System、out、println("符合条件的数共:"+count+"个"); for(int j=1;j<5;j++){ } if(j==i) continue; for(int k=1;k<5;k++){ } if(k!=i && k!=j){ n = i*100+j*10+k; } System、out、print(n+" "); if((++count)%5==0) System、out、println(); } Java基础编程题(含答案) import java、io、*; public class Prog12{ public static void main(String[] args){ } //接受从键盘输入的内容 private static String key_Input(){ } //计算奖金 private static long bonus(long profit){ long prize = 0; long profit_sub = profit; if(profit>1000000){ } if(profit>600000){ } if(profit>400000){ } if(profit>200000){ profit = profit_sub-400000; profit_sub = 400000; prize += profit*0、03; profit = profit_sub-600000; profit_sub = 600000; prize += profit*0、015; profit = profit_sub-1000000; profit_sub = 1000000; prize += profit*0、01; String str = null; BufferedReader bufIn = new BufferedReader(new InputStreamReader(System、in)); try{ } return str; str = bufIn、readLine(); e、printStackTrace(); try{ } bufIn、close(); e、printStackTrace(); }catch(IOException e){ }catch(IOException e){ }finally{ System、out、print("请输入当前利润:"); long profit = Long、parseLong(key_Input()); System、out、println("应发奖金:"+bonus(profit)); Java基础编程题(含答案) } 【程序13】 题目:一个整数,它加上100后就是一个完全平方数,再加上168又就是一个完全平方数,请问该数就是多 少? 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满 足如下条件,即就是结果。 public class Prog13{ public static void main(String[] args){ } //判断完全平方数 private static boolean isCompSqrt(int n){ boolean isComp = false; for(int i=1;i
发布者:admin,转转请注明出处:http://www.yc00.com/news/1716288248a2727117.html
评论列表(0条)