Java程序设计编程题目

来源:互联网 发布:中国软件企业排名 编辑:程序博客网 时间:2024/06/06 05:01

Java程序设计编程题目

一般题:

1、 编写一个应用程序,对程序中给定的四个double型数据求其最大值和最小值。

import java.util.*;

public class no1

{

public static void main(String args[])

{

System.out.println("input the number:");

Scanner input = new Scanner(System.in);

double[] x=new double[4];

for (int i=0;i<4;i++)

x[i]=input.nextDouble();

double max=Math.max(Math.max(x[0], x[1]), Math.max(x[2], x[3]));

double min=Math.min(Math.min(x[0], x[1]), Math.min(x[2], x[3]));

System.out.println("max:"+max+" min:"+min);

}

}

2、 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1、2、3,而6=1+2+3。因此6是“完数”。编写一个小应用程序求1000之内的所有完数

public class no2

{

public static void main(String args[])

{

int sum;

for (int i=1;i<=1000;i++)

{

sum=0;

for (int j=1;j<=i/2;j++)

{

if (i%j==0) sum+=j;

}

if (sum==i)

{

System.out.println(i);

}

}

}

}

3、 要求1000!(1000*999*998...*2*1)的值。

import java.math.BigInteger;

public class no3

{

public static void main(String args[])

{

BigInteger x = BigInteger.valueOf(1);

for(int i=2; i<=1000; i++) {

x = x.multiply(BigInteger.valueOf(i));

}

System.out.println(x);

}

}

4、 设计一个能随机产生100个大写英文字母的方法,在该方法中统计产生了多少个元音字母,并输出这个数字。

import java.util.*;

public class no4

{

public static void main(String args[])

{

int a=(int)'A';

int y[]=new int[26];

int t=0;

Random r=new Random();

for (int i=0;i<100;i++)

{

t=Math.abs(r.nextInt())%26;

y[t]++;

System.out.print((char)(a+t)+" ");

}

System.out.println("");

for (int yi=0;yi<26;yi++)

{

System.out.print((char)(a+yi)+" "+y[yi]+" ");

}

}

}

5、 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子不死,问每个月的兔子总数为多少?

public class no5

{

public static void main(String args[])

{

int a=0,b=0,c=2;

int x,y,z;

for (int i=0;i<24;i++)

{

z=a/2;

y=c;

x=a+b;

a=x;

b=y;

c=z;

System.out.println(a+b+c);

}

}

}

6、 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:

153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

public class no6

{

public static void main(String args[])

{

int y;

int t;

for (int x=100;x<=999;x++)

{

t=x;

y=0;

while(t>=1)

{

y+=Math.pow(t%10,3);

t/=10;

}

if (y==x) System.out.println(x);

}

}

}

7、 输入一行字

符,分别统计出其中英文字母、空格、数字和其它字符的个数。

import java.util.Scanner;

public class no7

{

public static void main(String args[])

{

int y[]=new int[4];

char x;

Scanner input=new Scanner(System.in);

String s=input.nextLine();

int l=s.length()-1;

while(l>=0)

{

x= s.charAt(l);

if ((x-'a'>=0&&x-'a'<26) || (x-'A'>=0&&x-'A'<26))

{

y[0]++;

}

else

if (x-'0'<10&&x-'0'>0)

{

y[1]++;

}

else

if (x==' ')

{

y[2]++;

}

else

y[3]++;

l--;

}

for (int i=0;i<4;i++)

{

System.out.println(y[i]);

}

}

}

8、 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

public class no8

{

public static void main(String args[])

{

dum(100,0,10);

}

public static void dum(int h,int s,int t)

{

s+=h;

h/=2;

t--;

if (t>0) dum(h,s,t);

else System.out.println(s+" "+h);

}

}

9、 企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

import java.util.*;

public class no9

{

public static void main(String args[])

{

Scanner in=new Scanner(System.in);

double sum=0;

double n=in.nextInt();

if (n>100) sum=(n-100)*0.01+3.95;

if (n>60 && n<=100) sum=(n-60)*0.015+3.35;

if (n>40 && n<=60) sum=(n-40)*0.03+2.75;

if (n>20 && n<=40) sum=(n-20)*0.05+1.75;

if (n>10 && n<=20) sum=(n-10)*0.075+1;

if (n<10 && n>=0) sum=n*0.1;

System.out.println(sum);

}

}

10、 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩 下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

public class no10

{

public static void main(String args[])

{

peach(10,1);

}

public static void peach(int day,int num)

{

day--;

num=(num++)*2;

if (day>0) peach(day,num);

else System.out.println(num);

}

}

11、 利用递归方法求5!。

public class no11

{

public static void main(String args[])

{

System.out.println(foo(5));

}

public static int foo(int t)

{

if (t==0)return 1;

else return t*foo(t-1);

}

}

12、 求

一个3*3矩阵对角线元素之和.

import java.util.*;

public class no12

{

public static void main(String args[])

{

int sum=0;

int t=0;

Scanner in=new Scanner(System.in);

for (int i=0;i<3;i++)

for (int j=0;j<3;j++)

{

t=in.nextInt();

if (i==j) sum+=t;

}

System.out.println(sum);

}

}

13、 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

import java.util.*;

public class no13

{

public static void main(String args[])

{

int n=4;

int x[]=new int[100];

int max=0;

int min=0;

int t=0;

Scanner in=new Scanner(System.in);

for (int i=0;i<n;i++)

{

x[i]=in.nextInt();

if (x[i]>x[max]) max=i;

if (x[i]<x[min]) min=i;

}

t=x[0];

x[0]=x[max];

x[max]=t;

t=x[n-1];

x[n-1]=x[min];

x[min]=t;

for (int i=0;i<n;i++)

System.out.println(x[i]+" ");

}

}

14、 定义复数的类Complex并测试其功能:

  1. 复数由实部、虚部两个部分组成,在类的定义中应包含保存这两部分信息的内容。

2. 在类中定义构造函数,使用户能够在构造对象的同时为对象赋初值。

3. 在类中定义复数的加法、减法、乘法三个二元操作符来完成复数间的加、减、乘的功能。

4. 通过重载tosthing,使得Complex类的对象能够显示其自身信息。  

5. 通过显示定义一个成员函数完成对象的赋值操作,使用户能够对Complex类的对象进行赋值。

6. 编写一段主程序(main函数),使用户能够通过这段主程序输入复数并进行复数的计算。

import java.util.*;

public class no14

{

public static void main(String args[])

{

Scanner in =new Scanner(System.in);

System.out.println("first real and image:");

Complex x=new Complex();

x.setreal(in.nextDouble());

x.setimage(in.nextDouble());

System.out.println("second real and image:");

Complex y=new Complex();

y.setreal(in.nextDouble());

y.setimage(in.nextDouble());

Complex t=new Complex(1,1);

t.copy(x);

System.out.print("add:");

x.add(y);

x.tosthing();

System.out.print("decreace:");

x.copy(t);

x.decrease(y);

x.tosthing();

System.out.print("multi:");

x.copy(t);

x.multi(y);

x.tosthing();

System.out.print("division:");

x.copy(t);

if (x.division(y))

x.tosthing();

else System.out.print("error");

}

}

class Complex

{

double real;

double image;

public Complex()

{

real=0;

image=0;

}

public Complex(double r,double i)

{

real=r;

image=i;

}

public void copy(Complex t)

{

this.real=t.real;

this.image=t.image;

}

public void add(Complex t)

{

this.real+=t.real;

this.image+=t.image;

}

public void decrease(Complex t)

{

this.real-=t.real;

this.image-=t.image;

}

public void multi(Complex t)

{

double x=this.real*t.real-this.image*t.image;

this.image=this.real*t.image+this.image*t.real;

this.real=x;

}

public boolean division(Complex t)

{

if ((Math.pow(t.real,2)+Math.pow(t.image,2))==0)return false;

double x=(this.real*t.real-this.image*t.image)/(Math.pow(t.real,2)+Math.pow(t.image,2));

this.image=(this.real*t.image+this.image*t.real)/(Math.pow(t.real,2)+Math.pow(t.image,2));

this.real=x;

return true;

}

public void setreal(double r)

{

this.real=r;

}

public void setimage(double i)

{

this.image=i;

}

public void tosthing()

{

System.out.println("("+this.real+","+this.image+")");

}

}

15、 建立一个银行账户类,要求能够存放用户的账号、姓名、密码和账户余额等个人信息,并包含存款、取款、查询余额和修改账户密码等操作,并用此类创建对象,对象的账号为100,姓名为Tom,密码为11111,账户余额为10000。

public class no15

{

public static void main(String args[])

{

bankacount bk=new bankacount("Tom","11111",100,10000);

System.out.println("$50 in");

bk.in(50);

bk.check();

System.out.println("$100 out");

if (bk.out(100))

bk.check();

else System.out.println("error");

bk.setpsw("asd");

}

}

class bankacount

{

String name=new String();

String psw=new String();

int id =0;

int balance=0;

public bankacount(String n,String p,int o,int b)

{

this.name=n;

this.psw=p;

this.id=o;

this.balance=b;

}

public void in(int i)

{

this.balance+=i;

}

public boolean out(int i)

{

if (this.balance>=i)

this.balance-=i;

else return false;

return true;

}

public void check()

{

System.out.println("balance:"+balance);

}

public void setpsw(String i)

{

this.psw=i;

}

}

16、 有哺乳动物类mammal,将其作为父类,从其派生出子类猫cat和子类狗dog,基类中有方法speak()。

public class no16

{

public static void main(String args[])

{

cat a=new cat();

a.speak();

dog b=new dog();

b.speak();

}

}

class mammal

{

void speak(String s)

{

System.out.println(s);

}

}

class cat extends mammal

{

void speak()

{

super.speak("nyanyanya");

}

}

class dog extends mammal

{

void speak()

{

super.speak("wangwangwang");

}

}

17、 求100之内的素数

public class no17

{

public static void main(String args[])

{

System.out.println(1);

System.out.println(2);

tag: for (int i=3;i<=100;i++)

{

int t=0;

for (int j=2;j<=i/2;j++)

{

if (i % j== 0) continue tag;

}

System.out.println(i);

}

}

}

18、 对10个数进行排序

import java.util.*;

public class no18

{

public static void main(String args[])

{

int n=10;

Scanner in=new Scanner(System.in);

int x[]=new int[n];

System.out.print("input:");

for (int i=0;i<n;i++)

{

x[i]=in.nextInt();

}

for (int i=0;i<n;i++)

for (int j=0;j<n;j++)

{

if (x[i]>x[j])

{

int t=0;

t=x[i];

x[i]=x[j];

x[j]=t;

}

}

for (int i=0;i<n;i++)

{

System.out.print(x[i]+" ");

}

}

}

19、 从键盘上输入10个整数,并将其放入一个一维数组中,然后将其前5个元素与后5个元素对换,即:第1个元素与第10个元素互换,第2个元素与第9个元素互换…第5个元素与第6个元素互换。分别输出数组原来各元素的值和对换后各元素的值。

import java.util.*;

public class no19

{

public static void main(String args[])

{

int n=10;

int x[]=new int[n];

Scanner in=new Scanner(System.in);

for (int i=0;i<n;i++)

{

x[i]=in.nextInt();

}

System.out.println("before:");

for (int i=0;i<n;i++)

{

System.out.print(x[i]+" ");

}

for (int i=0;i<n/2;i++)

{

int t=0;

t=x[i];

x[i]=x[n-i-1];

x[n-i-1]=t;

}

System.out.println("");

System.out.println("after:");

for (int i=0;i<n;i++)

{

System.out.print(x[i]+" ");

}

}

}

20、 设计一个圆类,将圆的位置(圆心坐标和半径)作为属性(提供任意圆的设置),并能计算圆的面积。

public class no20

{

public static void main(String args[])

{

circle c=new circle(4,4,2);

System.out.println(c.s());

}

}

class circle

{

double r;

double x;

double y;

public circle(double i,double j,double k)

{

this.x=i;

this.y=j;

this.r=k;

}

public double s()

{

return 3.14*Math.pow(this.r,2);

}

}

21、 设计一个Course类,它代表学校中的一门课程。按照实际情况将这门课程的相关信息组织成它的属性,并定义必要的相应的方法。

public class no21

{

public static void main(String args[])

{

Course c=new Course("哲♂学","比利海灵顿",1000,"1999-9-9");

c.show();

c.teach();

c.homework();

c.test();

}

}

class Course

{

String name=new String();

String teacher=new String();

int fullmark=0;

String startdate=new String();

public Course(String n,String t,int f,String s)

{

this.name=n;

this.teacher=t;

this.fullmark=f;

this.startdate=s;

}

public void show()

{

System.out.println("Course name:"+name+" teacher:"+teacher+" fullmark:"+fullmark+" startdate:"+startdate);

}

public void test()

{

System.out.println("testing...");

}

public void teach()

{

System.out.println("teaching...");

}

public void homework(

)

{

System.out.println("doing homework...");

}

}

22、 设计并实现一个Vehicle类及其子类,它们代表主要的交通工具,定义必要的属性信息和方法

23、 设计并实现一个MyGraphic类及其子类,它们代表一些基本的图形,这些图形包括:矩形、三角形、圆、椭圆等。试给出能描述这些图形所必需的属性及必要的方法。

24、 先在一个包中编写第一类ClassA,要求写该类中具有四种不同访问权限的成员,再在另一个包中写第二个类ClassB,并在该类中编写一个方法访问第一个类的成员。

25、 设计一个汽车类Multiplication,在其中定义三个同名的mul方法:第一个方法是计算两个整数的积;第二个方法是计算两个浮点数的积;第三个方法是计算三个浮点数的积。

26、 使用继承和接口技术,编写一个程序,求解几何图形(如直线、三角形、矩形、圆和多边形)的周长和面积。

进阶题:

27、 随便输入一段字符串,把出现次数最多的打印出来,如:aabbbbbbbbbcccdffff,就把b打印出来,用java代码实现

import java.util.*;

public class no27

{

public static void main(String args[])

{

Scanner in=new Scanner(System.in);

String s=in.nextLine();

int l=s.length();

int x[]=new int[l];

boolean b;

int max=0;

for (int i=0;i<l;i++)

{

b=false;

for (int j=i-1;j>0;j--)

{

if (s.charAt(i)==s.charAt(j))

{

x[i]=x[j]+1;

b=true;

break;

}

}

if (!b)

{

x[i]=1;

}

if (x[i]>x[max])

{

max=i;

}

}

System.out.println(s.charAt(max));

}

}

28、 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

public class no28

{

public static void main(String args[])

{

int sum=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&&j!=k&&k!=i)

{

System.out.println(i+""+j+""+k);

sum++;

}

}

System.out.println("sum:"+sum);

}

}

29、 输入某年某月某日,判断这一天是这一年的第几天?

import java.util.*;

public class no29

{

public static void main(String args[])

{

int x[]={0,30,60,91,121,152,182,213,244,274,305,335};

Scanner in=new Scanner(System.in);

int year=in.nextInt();

int month=in.nextInt();

int day=in.nextInt();

if (!((year%4==0&&year%100!=0)||(year%400==0)))

for (int i=2;i<12;i++)

x[i]--;

System.out.println("day:"+(x[month-1]+day));

}

}

30、 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向 队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

31

、 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

import java.util.*;

public class no31

{

public static void main(String args[])

{

Scanner in=new Scanner(System.in);

int n=in.nextInt();

int x[]=new int[n];

int d=3;

int m=n;

int t=0;

int k=0;

while(n>1)

{

if (t>m-1) t=0;

if (x[t]==0)

{

k++;

if (k==d)

{

x[t]=1;

k=0;

n--;

}

}

t++;

}

for (int i=0;i<m;i++)

if (x[i]==0)

System.out.print(i+1);

}

}

32、 哥德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和。请编写一个Java程序,验证1~100内哥德巴赫猜想的正确性,也就是近似证明哥德巴赫猜想。

public class no32

{

public static void main(String args[])

{

int x[]=new int[100];

x[0]=1;

x[1]=2;

int l=2;

tag: for (int i=3;i<=100;i++)

{

int t=0;

for (int j=2;j<=i/2;j++)

{

if (i % j== 0) continue tag;

}

x[l++]=i;

}

tbg:for (int y=4;y<=100;y+=2)

{

for (int i=0;i<l;i++)

for (int j=l-1;j>=0;j--)

if (x[i]+x[j]==y)

{

System.out.println(y+"="+x[i]+"+"+x[j]);

continue tbg;

}

}

}

}

33、 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

import java.util.*;

public class no33

{

public static void main(String args[])

{

System.out.println("input [10000,99999]:");

Scanner in =new Scanner(System.in);

String s=in.nextLine();

int n=5;

boolean b=true;

for (int i=0;i<n/2;i++)

{

if (!(s.charAt(i)==s.charAt(n-i-1)))

{

System.out.println("no");

b=false;

break;

}

}

if (b)

System.out.println("yes");

}

}

34、 爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后一阶也不剩。请问该阶梯至少有多少阶。编写一个Java程序解决该问题。

public class no34

{

public static void main(String args[])

{

for (int i=7;i<10000;i+=7)

{

if (i%2==1&&i%3==2&&i%5==4&&i%6==5)

{

System.out.println(i);

break;

}

}

}

}

Java免费学习资料直播公开课群:175161984

原创粉丝点击