Java程序设计编程题目
2017-06-06 13:42
225 查看
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
;
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
;
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
;
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
一般题:
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
;
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
;
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
;
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
相关文章推荐
- Java打印程序设计全攻略-Java基础-Java-编程开发
- 理解Java面向对象的程序设计思想-Java基础-Java-编程开发
- Java语言程序设计-基础篇-第八版-编程练习题-第八章
- java中的一些编程题目
- 2014微软编程一小时 题目1 : Arithmetic Expression Java实现
- JAVA程序设计 第八章编程规范和JAVADoc
- JAVA程序设计(04.3)-----1.寻找完美数 10000以内 2.编程找出谁是小偷 3.21根火柴……
- Java语言程序设计-基础篇-第八版-编程练习题-第六章
- 几道有意思的java编程题目
- Java网络编程(UDP程序设计)
- 浅析Java多线程程序设计机制-Java基础-Java-编程开发
- 百度之星编程题目:C++和Java程序变量名转换器- 程序代码(原创)
- 吸血鬼数字的java编程 java编程思想上的题目
- Java语言程序设计-基础篇-第八版-编程练习题-第七章
- Java语言程序设计-基础篇-第八版-编程练习题-第一章
- Eclipse Form程序设计快速入门-Java基础-Java-编程开发
- JAVA基础知识+编程题目[转载]
- Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答
- 2014年2月8日 java编程思想 String字符串学习 面试题目回顾
- 某网站的编程挑战题目 Java版本的 strToInt