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 { x[i]=in.nextInt(); if (x[i]>x[max]) max=i; if (x[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 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 { x[i]=in.nextInt(); } for (int i=0;i for (int j=0;j { if (x[i]>x[j]) { int t=0; t=x[i]; x[i]=x[j]; x[j]=t; } } for (int i=0;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 { x[i]=in.nextInt(); } System.out.println("before:"); for (int i=0;i { System.out.print(x[i]+" "); } for (int i=0;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 { 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 { 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 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 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 { 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
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow