Java50道基础编程题练习——仅供交流学习,考试复习使用
部分代码存在引用,此处进行归类汇总
【程序1】
題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
public class Fibonacci {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("请输入生长了几月");
int m = new Scanner(System.in).nextInt();
System.out.println("第"+m+"个月有"+fibonacci(m)+"只兔子");
}
public static int fibonacci(int n) {
if(n==1||n==2) {
return 1;
}else {
return fibonacci(n-1)+fibonacci(n-2);
}
}
}
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
素数又叫质数,指除了1和它本身之外,再也没有整数能被它整除的数,即素数只有两个因子。
public class PrimeNum2 {
public static void main(String args[]) {
int count = 0;
for(int i = 100;i<201;i++) {
boolean judge = true;
for(int k =2;k<i;k++) {
if(i%k == 0) {
judge = false;
break;
}
}
if(judge) {
++count;
System.out.println(i+"是素数");
}
}
System.out.println("101-200间共有"+count+"个素数");
}
}
【程序3】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
public class NarcissisticNum3 {
public static void main(String[] args) {
for(int i=100;i<999;i++) {
if(isNarcissisticNum(i)) {
System.out.println("水仙花数为"+i);
}
}
}
public static boolean isNarcissisticNum(int j) {
int a = 0;
int b = 0;
int c = 0;
a = j/100;
b = j%100/10;
c = j%10;
if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==j) {
return true;
}else {
return false;
}
}
}
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
public class Factorization4 {
public static void main(String[] args) {
@SuppressWarnings("resource")
int a =new Scanner(System.in).nextInt();
decompose(a);
System.out.println();
}
public static int decompose(int num) {
int tmp = num/2;
for(int i=2;i <= tmp ;i++){
if(num%i == 0){
num = num/i;
System.out.println("质因数为:"+i);
i=1;
continue;
}
}
return tmp;
}
}
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
public class Score5 {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("输入学生的成绩:");
int score = new Scanner(System.in).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,求其最大公约数和最小公倍数。
public class Number6 {
@SuppressWarnings("resource")
public static void main(String[]args){
Scanner scan = new Scanner(System.in);
System.out.print("请输入第一个整数:\n");
int a = scan.nextInt();
System.out.print("请输入第二个整数:\n");
int b = scan.nextInt();
Num(a,b);
}
public static void Num(int a,int b){
int i = a;
int j = b;
int x =0,y =0;
if(a < b){
x = b;
b = a;
a = x;
}
while(b != 0){
y = a % b;
a = b;
b = y;
}
int t = i * j / a;
System.out.println(i+"和"+j+"的最大公约数为:"+ a);
System.out.println(i+"和"+j+"的最小公倍数为:"+ t);
}
}
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
public class String7 {
@SuppressWarnings("resource")
public static void main(String[]args){
System.out.println("请输入一段字符串……");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(str);
char[] chars = str.toCharArray();
int words = 0;
int numbers = 0;
int spaces = 0;
int others = 0;
for (int i = 0; i < chars.length; i++) {
if ((chars[i] >= 'A') && (chars[i]) <= 'Z') {
words++;
} else if ((chars[i] >= 'a') && (chars[i]) <= 'z') {
words++;
} else if ((chars[i] >= '0') && (chars[i]) <= '9') {
numbers++;
} else if (chars[i] == ' ') {
spaces++;
} else {
others++;
}
}
System.out.println("您刚输入的字符串内英文字符有:" + words + "个。");
System.out.println("数字字符有:" + numbers + "个。");
System.out.println("空格字符有:" + spaces + "个。");
System.out.println("其它字符有:" + others + "个。");
}
}
【程序8】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
几个数相加有键盘控制。
public class Count8 {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("请输入一个数字:");
int a = new Scanner(System.in).nextInt();
int sum = 0;
for(int i=a;i<=Math.pow(10, a);i=i*10+a) {
sum += i;
}
System.out.println(sum);
}
}
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完
数。
public class PrefactNumber9 {
public static void main(String[] args) {
int i=0;
int j=0;
int[] b = new int[100];
for(i=2; i<=1000; i++)
{
int s=0;
int k=0;
for(j=1; j<i; j++)
{
if(i%j==0)
{
s+=j;
b[k++]=j;
}
}
if(s==i)//注意这个if语句的位置一定在第二个循环外面,否则的话就会多一个24
{
System.out.println("完美数为"+i);
for(int a=0; a<k; a++)
System.out.println("因子为"+b[a]);
System.out.println();
}
}
return;
}
}
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
少米?第10次反弹多高?
public class ReboundHeight10 {
public static void main(String[] args) {
double heigh=50;
double distance =100;
for(int i=2;i<=10;i++) {
distance = distance+heigh*2;
heigh = heigh/2;
}
System.out.println("共经过"+distance+"米");
System.out.println("第十次反弹的高度为"+heigh+"米");
}
}
【程序11】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
public class NumberSort11 {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
int count = 0;
for(int i:arr) {
for(int j:arr) {
for(int k:arr) {
if(i!=j&&j!=k&&k!=i) {
int num = i*100+j*10+k;
System.out.print(num+"\t");
count++;
}
if(count==6) {
System.out.println();
count=0;
}
}
}
}
}
}
【程序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 class Profit12 {
@SuppressWarnings("resource")
public static void main(String[] args) {
double profit = new Scanner(System.in).nextDouble();
double bonus = 0;
if(profit<=100000) {
bonus = profit*0.1;
}else if(profit>100000&&profit<=200000) {
bonus = 10000+(profit-100000)*0.075;
}else if(profit>200000&&profit<=400000) {
bonus = 10000+7500+(profit-100000)*0.05;
}else if(profit>400000&&profit<=600000) {
bonus = 10000+7500+10000+(profit-100000)*0.03;
}else if(profit>600000&&profit<=1000000) {
bonus = 10000+7500+10000+6000+(profit-100000)*0.015;
}else if(profit>1000000) {
bonus = 10000+7500+10000+6000+6000+(profit-100000)*0.01;
}
System.out.println("应发奖金为:"+bonus);
}
}
【程序13】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
public class SquareNumber13 {
public static void main(String[] args) {
long i;
long x;
long y;
for(i=1;i<100000;i++) {
x=(long) Math.sqrt(i+100);
y=(long) Math.sqrt(i+168);
if(x*x==i+100&&y*y==i+168) {
System.out.println(i);
}
}
}
}
【程序14】
题目:输入某年某月某日,判断这一天是这一年的第几天?
public class DayYear14 {
@SuppressWarnings("resource")
public static void main(String[] args) {
int year = new Scanner(System.in).nextInt();
int month = new Scanner(System.in).nextInt();
int day = new Scanner(System.in).nextInt();
int num = 0;
int[] nums = {31,60,91,121,152,182,213,244,274,305,335,366};
if(month==1) {
num = day;
}else if(month==2){
num = 31+day;
}
else if((year%4==0&&year%100!=0) ||(year%400==0)){
num = nums[month-2]+day;
}
else {
num = nums[month-2]+day-1;
}
System.out.println("这是一年的第"+num+"天");
}
}
【程序15】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
public class NumberCompare15 {
public static void main(String[] args){
int x=0,y=0,z=0;
Scanner sc=new Scanner(System.in);
x=sc.nextInt();
y=sc.nextInt();
z=sc.nextInt();
int j;
if(x>y){
j=y;
y=x;
x=j;
}
if(x>z){
j=z;
z=x;
x=j;
}
if(y>z){
j=z;
z=y;
y=j;
}
sc.close();
System.out.println(x+" "+y+" "+z);
}
}
【程序16】
题目:输出9*9口诀。
public class MultiplicationTables16 {
public static void main(String[] args) {
for(int i=1;i<10;i++) {
for(int j=1;j<i+1;j++) {
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
【程序17】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
public class MonkeyPeach17 {
public static void main(String[]args){
int sum = 1;
for(int i=1;i<10;i++){
sum=(sum+1)*2;
}
System.out.println("总共有"+sum+"个桃子");
}
}
【程序18】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向
队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
public class PingPong18{
public static void main(String[] args) {
char a,b,c;
for(a = 'x'; a <= 'z'; a++) {
for(b = 'x'; b <= 'z'; b++) {
if(a != b) {
for(c = 'x'; c <= 'z'; c++) {
if(a != c && b != c) {
if(a != 'x' && c != 'x' && c != 'z') {
System.out.println("a和" + a + ",b和" + b + ",c和" + c + "进行比赛");
}
}
}
}
}
}
}
}
【程序19】
题目:打印出9行9列的菱形
public class TrianglePrint19 {
public static void main(String[] args) {
int h=9,w=9;
for(int i=0;i<(h+1)/2;i++){
for(int j=0;j<w/2-i;j++){
System.out.print(" ");
}
for(int k=1;k<(i+1)*2;k++){
System.out.print("*");
}
System.out.println();
}
for(int i=1;i<=h/2;i++){
for(int j=1;j<=i;j++){
System.out.print(" ");
}
for(int k=1;k<=w-i*2;k++){
System.out.print("*");
}
System.out.println();
}
}
}
【程序20】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
public class Series20 {
public static void main(String[]args){
double a = 2;
double b = 1;
double temp = 0;
double sum = 0;
for (int i = 1; i <= 20; i++) {
sum += a / b;
temp = a;
a = a + b;
b = temp;
}
System.out.println(sum);
}
}
【程序21】
题目:求1+2!+3!+…+20!的和
public class StratumSum21 {
public static void main(String[] args) {
int sum = 0;
for(int i=1;i<=20;i++) {
sum +=f(i);
}
System.out.println(sum);
}
public static int f(int n) {
if (n==1) {
return 1;
}else {
return n*f(n-1);
}
}
}
【程序22】
题目:利用递归方法求5!。
public class Stratum22 {
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n) {
if (n==1) {
return 1;
}else {
return n*f(n-1);
}
}
}
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
public class AgeRecursion23 {
public static void main(String[] args) {
int num = 5;
int age = Age(num);
System.out.println(age);
}
public static int Age(int num) {
if(num==1) {
return 10;
}else {
return Age(num-1)+2;
}
}
}
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public class Number24 {
@SuppressWarnings("resource")
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个不多于5位的正整数:");
char s[] = sc.next().toCharArray();
System.out.println("你输入的数是"+s.length+"位数");
System.out.println("你输入的数逆序为:");
for(int i=s.length-1;i>=0;i--) {
System.out.print(s[i]);
}
}
}
【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
public class PalindromicNumber25 {
@SuppressWarnings("resource")
public static void main(String[] args) {
int num = new Scanner(System.in).nextInt();
int a = num/10000;
int b = num%10000/1000;
int c = num%100/10;
int d = num%10;
if(a==d&&b==c) {
System.out.println("这个数是回文数");
}else {
System.out.println("这个数不是回文数");
}
}
}
【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
public class Weeks26 {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("请输入关于星期几的第一个字母:");
Scanner sc=new Scanner(System.in);
char c1=sc.next().charAt(0);
if(c1=='M'){
System.out.println("星期一 ,Monday");
}
else if (c1=='W'){
System.out.println("星期三 ,Wednesday");
}
else if(c1=='F'){
System.out.println("星期五,Friday");
}
else if(c1=='T'){
System.out.println("请输入第二个字母:");
char c2=sc.next().charAt(0);
if(c2=='u'){
System.out.println("星期二,Tuesday");
}
else if(c2=='h'){
System.out.println("星期四,Thursday");
}
else{
System.out.println("输入错误!");
}
}
else if(c1=='S'){
System.out.println("请输入第二个字母:");
char c2=sc.next().charAt(0);
if(c2=='u') {
System.out.println("星期天,Sunday");
}
else if(c2=='a'){
System.out.println("星期六,Saturday");
}
else{
System.out.println("输入错误!");
}
}
else{
System.out.println("输入错误!");
}
}
}
【程序27】
题目:求100之内的素数
public class PrimeNum27 {
public static void main(String args[]) {
int count = 0;
for(int i = 2;i<101;i++) {
boolean judge = true;
for(int k =2;k<i;k++) {
if(i%k == 0) {
judge = false;
break;
}
}
if(judge) {
++count;
System.out.println(i+"是素数");
}
}
System.out.println("100以内共有"+count+"个素数");
}
}
【程序28】
题目:对10个数进行排序
public class ArraysSort28 {
public static void main(String[] args) {
int[] num = new int[10];
for(int i=0;i<num.length;i++) {
num[i]=new Random().nextInt(100);
}
System.out.println(Arrays.toString(num));
Arrays.sort(num);
System.out.println(Arrays.toString(num));
}
}
【程序29】
题目:求一个3*3矩阵对角线元素之和
public class Matrix29 {
public static void main(String[] args) {
System.out.println("请输入九个整数:");
Scanner s= new Scanner(System.in);
int[][] a = new int[3][3];
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
a[i][j]=s.nextInt();
}
}
s.close();
System.out.println("你输入的矩阵是:");
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
int sum = 0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(i==j){ //找出对角线元素
sum += a[i][j]; //求和
}
}
}
System.out.println("对角线元素之和为:" + sum);
}
}
【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
public class Array30 {
public static void main(String[] args) {
int[] arr1 = {1, 2, 4, 8, 16, 32, 64};
System.out.println("请输入一个数");
int num = new Scanner(System.in).nextInt();
int[] arr2 = new int[arr1.length+1];
for(int i = 0; i < arr1.length; i++)
{
arr2[i+1] = arr1[i];
}
arr2[0] = num;
for(int i =0; i < arr2.length - 1; i++)
{
int t;
if(arr2[i] > arr2[i+1])
{
t = arr2[i];
arr2[i] = arr2[i+1];
arr2[i+1] = t;
}
}
System.out.println(Arrays.toString(arr2));
}
}
【程序31】
题目:将一个数组逆序输出。
public class ArraysSort31 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a[] = new int[20];
System.out.println("请输入多个正整数(输入-1表示结束):");
int i=0,j;
do{
a[i]=s.nextInt();
i++;
}while (a[i-1]!=-1);
System.out.println("你输入的数组为:");
for( j=0; j<i-1; j++) {
System.out.print(a[j]+" ");
}
System.out.println("\n数组逆序输出为:");
for( j=i-2; j>=0; j=j-1) {
System.out.print(a[j]+" ");
}
}
}
【程序32】
题目:取一个整数a从右端开始的4~7位。
public class Number32 {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("请输入一个7位以上的正整数:");
long a = s.nextLong();
String str = Long.toString(a);
char[] ch = str.toCharArray();
int i=ch.length;
if (i<7){
System.out.println("输入错误!");
}
else {
System.out.println("截取从右端开始的4~7位是:"+ch[i-7]+ch[i-6]+ch[i-5]+ch[i-4]);
}
}
}
【程序33】
题目:打印出杨辉三角形(要求打印出10行如下图)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
public class PascalsTriangle33 {
public static void main(String[] args) {
int rows = 10;
for (int i = 0; i < rows; i++) {
int number = 1;
System.out.format("%" + (rows - i) * 2 + "s", "");
for (int j = 0; j <= i; j++) {
System.out.format("%4d", number);
number = number * (i - j) / (j + 1);
}
System.out.println();
}
}
}
【程序34】
题目:输入3个数a,b,c,按大小顺序输出。
public class NumCompare34 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入3个整数:");
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int t = 0;
if(a < b) {
t = a;
a = b;
b = t;
}
if(a < c) {
t = a;
a = c;
c = t;
}
if(b < c) {
t = b;
b = c;
c = t;
}
System.out.println("从大到小的顺序输出:");
System.out.println(a + " " + b + " " + c);
}
}
【程序35】
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
public class ArrayChange35 {
public static void main(String[] args) {
method();
}
public static void method(){
System.out.println("请输入数组的长度:");
Scanner s = new Scanner(System.in);
int length = s.nextInt();
int[] a = new int[length];
for(int i=0;i<length;i++){
System.out.println("请输入第"+(i+1)+"个元素的值:");
a[i]=s.nextInt();
}
System.out.println("原数组为:");
for(int i=0;i<length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();
int[] b = new int[length];
for(int k=0;k<length;k++){
b[k] = a[k];
}
int temp = 0;
for(int i=0;i<length;i++){
for(int j=0;j<length-1;j++){
if(a[j]>a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
int max = 0;
int min = 0;
min = a[0];
max = a[length-1];
for(int i=0;i<b.length;i++){
if (b[i]==max) {
temp = b[i];
b[i] = b[0];
b[0] = temp;
}
if (b[i]==min) {
temp = b[i];
b[i] = b[b.length-1];
b[b.length-1] = temp;
}
}
System.out.println("交换后的数组为:");
for(int i=0;i<b.length;i++){
System.out.print(b[i]+"\t");
}
}
}
【程序36】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
public class ArraySort36 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入数组长度");
int len = input.nextInt();
System.out.println("请输入要转换的长度");
int m = input.nextInt();
int [] arry =new int[len];
arry = getArry(arry);
function(arry,m);
printArry(arry);
}
public static void function(int []arry ,int m) {
int len = arry.length;
int temp = arry[len-1];
for(int i = len-1;i>0;i--) {
arry[i] = arry[i-1];
}
arry[0]= temp;
m--;
if(m>0) {
function(arry,m);
}
}
public static int[] getArry(int[] arry) {
Scanner input = new Scanner(System.in);
int len = arry.length;
for(int i=0;i<len ;i++) {
System.out.print("请输入第"+(i+1)+"个数");
arry[i] = input.nextInt();
}
return arry;
}
public static void printArry(int [] arry) {
for (int i : arry) {
System.out.print(i+"\t");
}
}
}
【程序37】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
public class NumberSort37 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("请输入排成一圈的人数:");
int n = s.nextInt();
boolean[] arr = new boolean[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = true;
}
int leftCount = n;
int countNum = 0;
int index = 0;
while (leftCount > 1) {
if (arr[index] == true) {
countNum++;
if (countNum == 3) {
countNum = 0;
arr[index] = false;
leftCount--;
}
}
index++;
if (index == n) {
index = 0;
}
}
for (int i = 0; i < n; i++) {
if (arr[i] == true) {
System.out.println("原排在第" + (i + 1) + "位的人留下了。");
}
}
}
}
【程序38】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
public class ArrayLength38 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = s.nextLine();
System.out.println("字符串的长度是:"+str.length());
s.close();
}
}
【程序39】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数
1/1+1/3+…+1/n(利用指针函数)
public class Function39 {
public static void main(String[] args) {
Func t = new Func();
t.getNum(10);
}
public static class Func{
public void getNum(double n){
if(n % 2 == 0){
System.out.println(getOdd(n));
}else{
System.out.println(getEven(n));
}
}
public double getOdd(double n){
if(n <= 2){
return (double)1/2;
}
return getOdd(n - 2) + 1/n;
}
public double getEven(Double n){
if(n <= 1){
return (double)1/3;
}
return getEven(n - 2) + 1/n;
}
}
}
【程序40】
题目:字符串排序。
public class ArraySort40 {
public static void main(String[] args) {
System.out.println("请输入一个字符串:");
Scanner sc = new Scanner(System.in);
String in = sc.next();
char c[] = in.toCharArray();
Arrays.sort(c);
System.out.println("升序排序后:");
for (char i:c)
System.out.print(i+" ");
//降序排序
char temp;
for (int i=0;i<c.length/2;i++) {
temp = c[i];
c[i] = c[c.length-i-1];
c[c.length-i-1] = temp;
}
System.out.println("\n降序排序后为:");
for (char i:c)
System.out.print(i+" ")
}
}
【程序41】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
public class MonkeyPeach41 {
public static void main(String[] args) {
int i=1;
int num = 0;
int sum=Peach(9);
for(i=1;i<9;i++) {
num=sum/2+1;
}
System.out.println("第一天摘下"+num+"只桃子!");
}
public static int Peach(int day) {
if(day==0) {
return 1;
}else {
return (Peach(day-1)+1)*2;
}
}
}
【程序42】
题目:809*??=800*??+9*??+1
其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
public class Count42 {
public static void main(String[] args) {
int x = 0;
boolean judge = false;
for (int i = 10; i < 100; i++) {
if (809 * i == 800 * i + 9 * i + 1) {
judge = true;
x = i;
break;
}
}
if (judge) {
System.out.print("这个两位数是" + x);
System.out.print("809*??的结果是:" + 809 * x);
} else
System.out.print("无符合要求的数");
}
}
【程序43】
题目:求0—7所能组成的奇数个数。
public class Function43 {
public static void main(String[] args) {
int sum = 4;
for (int i = 2; i <= 8; i++) {
sum += (n(7) / n(8 - i) - n(6) / n(8 - i)) * 4;
}
System.out.println("0—7所能组成的奇数个数为:" + sum);
}
public static double n(int a) {
double n = 1;
for (int i = 1; i <= a; i++) {
n *= i;
}
return n;
}
}
【程序44】
题目:一个偶数总能表示为两个素数之和。
public class EvenNumber {
public static void main(String[] args) {
System.out.print("请输入一个偶数:");
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
sc.close();
if(0 != number%2) {
System.out.print("输入的不是偶数!");
return;
}
for (int i=2; i<number; i++) {
if (isPrime(i)) {
if(isPrime(number-i)) {
System.out.print(number+"="+i+"+"+(number-i));
break;
}
}
}
}
private static boolean isPrime(int number) {
for (int i=2; i<Math.sqrt(number)+1; i++) {
if(0 == number%i)
return false;
}
return true;
}
}
【程序45】
题目:判断一个素数能被几个9整除
public class PrimeNum45 {
public static void main(String[] args) {
System.out.println("请输入一个素数:");
Scanner sc = new Scanner(System.in);
long num = sc.nextLong();
sc.close();
int count = 0;
long num2 = num;
while(num2>=9) {
num2/=9;
count++;
}
System.out.println(num+"最多能被"+count+"个9除");
}
}
【程序46】
题目:两个字符串连接程序
public class StringsConnect46 {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("请输入第一个字符串:");
String s1 = new Scanner(System.in).next();
System.out.println("请输入第二个字符串:");
String s2 = new Scanner(System.in).next();
System.out.println("两个字符串合并后:\n"+s1+s2);
}
}
【程序47】
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
public class NumberPrint47 {
public static void main(String[] args) {
for(int i=0;i<8;i++) {
int num = new Random().nextInt(50);
for(int j=0;j<num;j++) {
System.out.print("*");
}
System.out.println(num);
}
}
}
【程序48】
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
public class Encryption48 {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("输入一个四位数:");
int num = new Scanner(System.in).nextInt();
int a = num/1000;
int b = num%1000/100;
int c = num%100/10;
int d = num%10;
a=(a+5)%10;
b=(b+5)%10;
c=(c+5)%10;
d=(d+5)%10;
int temp = 0;
temp = a;
a = d;
d = temp;
temp = b;
b = c;
c = temp;
System.out.println("输出的四位数是"+a+b+c+d);
}
}
【程序49】
题目:计算字符串中子串出现的次数
public class String49 {
public static void main(String[] args) {
System.out.println("请输入一个字符串 :");
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
System.out.println("请输入一个子串 :");
String subString = scanner.nextLine();
int count = 0;
while (true) {
int index = string.indexOf(subString);
if (index != -1) {
string = string.substring(index + subString.length(), string.length());
count ++ ;
} else {
break;
}
}
System.out.println(subString + "出现了 : " + count + "次");
}
}
【程序50】
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
public class Student50{
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
System.out.println("请依次输入学生号,姓名,三门课成绩,用逗号隔开,每个学生之间用句号隔开");
String str = input.next();
String[] student = str.split("\\.");
for(int i=0;i<student.length;i++){
System.out.print(student[i]+" ");
}
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\stud.txt"));
for (int i = 0; i < student.length; i++) {
String[] scores = student[i].split("\\,");
bw.write(student[i]);
int[] num1 = new int[3];
int sum = 0;
for (int m = 0; m < 3; m++) {
num1[m] = Integer.parseInt(scores[m + 2]);
sum += num1[m];
}
bw.write(".平均分:" + sum/3);
System.out.println(sum/3);
}
bw.flush();
bw.close();
}
}