java基础编程_Java 基础编程练习题

以下内容属于个人整理,如有转载请注明出处!

1、编写程序实现对给定的 4 个整数从大到小的顺序排列。

package HomeWork01;

import java.util.Scanner;

public class HomeWork01 {

static int number=4; //输入4个数存放在数组中

static int[] t1 = new int[number];

public static void main(String[] args) {

HomeWork01 jiejie=new HomeWork01();

jiejie.shunxun();

}

void shunxun(){

System.out.println("请输入4个数:");

Scanner in_t1 = new Scanner(System.in);//循环输入数组

for(int i=0;i

t1[i]=in_t1.nextInt();}

for (int i = 0; i < t1.length; i++) {

int pos = i;

for (int j = i + 1; j < t1.length; j++) {

if (t1[pos] > t1[j])

pos = j;

}

if (pos != i) {

t1[i] = t1[i] + t1[pos];

t1[pos] = t1[i] - t1[pos];

t1[i] = t1[i] - t1[pos];

}

}

for (int i = t1.length - 1; i >= 0; i--)

System.out.print(t1[i] + "\t");

}

}

2、编写程序求一元二次方程的根。

package HomeWork02;

import java.util.Scanner;

public class HomeWork02

//△=b^2-4ac的值,若△小于0,一元二次方程无根.若△等于0,一元二次方程有两个相等的根.若△大于0,一元二次方程有两个不相等的实数根

{

public static void main(String [] args){

Scanner sc = new Scanner(System.in);

System.out.println("输入2次方的系数");

int a = sc.nextInt();

System.out.println("输入1次方的系数");

int b = sc.nextInt();

System.out.println("输入0次方的系数");

int c = sc.nextInt();

if((b*b - 4*a*c)<0){//判断方程是否有解

System.out.println("方程无解!");

return;

}

else{

System.out.println("方程有解!");

}

double x1 = (-b + Math.sqrt(b*b - 4*a*c))/2*a;

double x2 = (-b - Math.sqrt(b*b - 4*a*c))/2*a;

System.out.println("根分别是 " + x1 + "\t" + x2);

}

}

3、编写程序,输入一个字符,判断它是否为小写字母,如果是,将它转换成大

写字母,否则,不转换。

package HomeWork03;

import java.util.Scanner;

public class HomeWork03 {

public static void main(String[] args) {

//小写字母的ascll值为97-122

//大写字母的ascll值为65-90

System.out.println("请输入一个字母:\n");

Scanner input = new Scanner(System.in);

char zimu=input.next().charAt(0);

if (zimu>=97&&zimu<=122){//判断是否是小写字母

System.err.println("该字母是小写字母");

zimu=(char) (zimu-32);//如果是小写字母则 将其转换成大写字母

System.err.println("转换之后的大写字母是:"+zimu);

}

else{

System.out.println("该字母不是小写字母!");

}

}

}

4、输入 3 个正数,判断能否构成一个三角形。

package HomeWork04;

import java.util.Scanner;

public class HomeWork04 {

public static void main(String [] args){

int a;

int b;

int c;

System.out.println("请输入三个正整数:");

Scanner in=new Scanner(System.in);

a=in.nextInt();

b=in.nextInt();

c=in.nextInt();

if(a<=0||b<=0||c<=0)

{

System.out.println("输入的必须是正整数!");

}

if((a+b)>c&&(a+c)>b&&(b+c)>a)

{

System.out.println("能构成三角形!");

}

else{

System.out.println("不能构成三角形!");

}

}

}

5、编写程序,对输入的年、月、日,给出该天是该年的第多少天?

package HomeWork05;

import java.util.Scanner;

public class HomeWork05 {

public static void main(String[]args){

Scanner sc =new Scanner(System.in);

System.out.print("年");

int year=sc.nextInt();

System.out.print("月");

int month=sc.nextInt();

System.out.print("日");

int day=sc.nextInt();

int days=0;

switch(month){

case 12:days+=30;

case 11:days+=31;

case 10:days+=30;

case 9:days+=31;

case 8:days+=31;

case 7:days+=30;

case 6:days+=31;

case 5:days+=30;

case 4:days+=31;

case 3:

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

days+=29;

}

else{

days+=28;

}

case 2:days+=31;

case 1:days+=day;

}

System.out.print("第" + days + "天");

}

}

6、编写程序,从键盘输入一个 0~99999 之间的任意数,判断输入的数是几位

数?

package HomeWork06;

import java.util.Scanner;

public class HomeWork06 {

public static void main(String[]args){

Scanner sc =new Scanner(System.in);

System.out.print("请输入一个0~99999 之间的任意数");

int number=sc.nextInt();

if(number/10000>=1&&number/10000<10){

System.out.println(number+"\t是5位数");

}

else if(number/1000>=1){

System.out.println(number+"\t是4位数");

}

else if(number/100>=1){

System.out.println(number+"\t是3位数");

}

else if(number/10>=1){

System.out.println(number+"\t是2位数");

}

else if(number/1>=1){

System.out.println(number+"\t是1位数");

}

}

}

7、编写程序,给定一个学生成绩,给出相应等级:

90~100 优秀

80~89 良好

70~79 中等

60~69 及格

0~59 不及格

package HomeWork07;

import java.util.Scanner;

public class HomeWork07 {

public static void main(String[] args) {

HomeWork07 jiejie=new HomeWork07();

jiejie.chengjie();

}

void chengjie(){

Scanner sc = new Scanner(System.in);

System.out.println("请输入学生成绩:");

int a = sc.nextInt();

if(a>=90&&a<=100){

System.out.println("该学生的成绩是"+a+"\t成绩优秀");

}

else if(a>=80&&a<90){

System.out.println("该学生的成绩是"+a+"\t成绩良好");

}

else if(a>=70&&a<80){

System.out.println("该学生的成绩是"+a+"\t成绩中等");

}

else if(a>=60&&a<70){

System.out.println("该学生的成绩是"+a+"\t成绩及格");

}

else{

System.out.println("该学生的成绩是"+a+"\t成绩不及格");

}

}

}

8、编写程序,对输入的一个整数,按相反顺序输出该数。例如,输入为 3578,

输出为 8753。

package HomeWork08;

import java.util.Scanner;

public class HomeWork08 {

public static void main(String[]args){

Scanner sc =new Scanner(System.in);

System.out.println("请输入一个整数:");

int read = sc.nextInt();

//方法一 reverse()API

System.out.println("方法一:");

StringBuilder sb = new StringBuilder(String.valueOf(read));

System.out.println(sb.reverse());

//方法二 将字符串转换成字符数组,反序输出

String str= read +"";

char fuzu[]=str.toCharArray();

String temp="";

for(int a=fuzu.length-1;a>=0;a--){

temp=temp+fuzu[a];

}

System.out.println("方法二:");

System.out.println(temp);

}

}

9、用 while 循环,计算 1~200 之间所有 3 的倍数之和。

package HomeWork09;

public class HomeWork09 {

public static void main(String[] args) {

// 用while循环,计算1~200之间所有3的倍数之和。

int a=1;

int sum=0;

while(a<=200){

if(a%3==0){

sum=sum+a;

}

a++;

}

System.out.println("1~200之间所有3的倍数之和为:"+sum);

}

}

10、编写程序,输出 200~500 之间的所有素数。

package HomeWork10;

public class HomeWork10 {

public static void main(String[] args) {

int num=200;

while (num<=500) {

boolean tag=true;//素数标记

for(int d=2;d<=num-1;d++){

if(num % d==0){

tag=false;

break;

}

}

if(tag){//如果是素数

System.out.println(num);

}

num++;

}

}

}

11、编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡

一钱三只,现有百钱欲买百鸡,共有多少种买法?

package HomeWork11;

public class HomeWork11 {

public static void main(String[] args) {

/* 、编写程序解决“百钱买百鸡”问题。

* 公鸡五钱一只,母鸡三钱一只,

* 小鸡 一钱三只,

* 现有百钱欲买百鸡,共有多少种买法? */

for(int g=0;g<=20;g++){

for(int m=0;m<=33;m++){

for(int x=0;x<=100-g-m;x++){

if(x % 3==0 && 5*g+m*3+x/3 == 100 && g+m+x ==100){

System.out.println("公鸡"+g+"只母鸡"+m+"只小鸡"+x+"只");

}

}

}

}

}

}

12、使用循环语句输出下面的图形。

#

# # #

# # # # #

# # # # # # #

# # # # # # # # #

package HomeWork12;

public class HomeWork12 {

public static void main(String[] args) {

int aa=-1;

for( int a=0;a<5;a++){

aa+=2;

for(int b=1;b<=aa;b++){

System.out.print( "#" );

}

System.out.println();}

}

}

13、验证“鬼谷猜想”:对任意自然数,若是奇数,就对它乘以 3 再加 1;若是

偶数,就对它除以 2,这样得到一个新数,再按上述计算规则进行计算,一直进

行下去,最终必然得到 1。

package HomeWork13;

import java.util.Random;;

public class HomeWork13 {

public static void main(String[] args) {

/*

* 验证“鬼谷猜想”:对任意自然数,若是奇数,

* 就对它乘以3再加1;若是 偶数,就对它除以2,

* 这样得到一个新数,

* 再按上述计算规则进行计算,

* 一直进 行下去,最终必然得到1。 */

int num;

Random rd=new Random();

//Integer.MAX_VALUE为最大的整数

num=1+rd.nextInt(Integer.MAX_VALUE);//产生数的范围-2[31]----2[31]-1

//System.err.println(rd.nextInt(100));//产生数>=0且<100

System.out.println("原本的数为"+num);

while(num!=1){

System.out.println("产生的新数是"+num);

if(num%2==0){

//偶数

num=num/2;

}

else{

num=num*3+1;

}

}

System.out.println(num);

}

}

14、编程求 1~10000 之间的所有“完全数”,完全数是该数的所有因子之和等于该数的数。例如,6 的因子有 1、2、3,且 6=1+2+3,所以 6 是完全数。

package HomeWork14;

public class HomeWork14 {

public static boolean isyinzi(int num ){

int sum=0;

//判断一个整数是不是一个完全数

for(int d=num-1;d>=1;d--){

if(num%d==0){

sum+=d;

}

}

return sum==num;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

/*

* 编程求1~10000之间的所有“完全数”,

* 完全数是该数的所有因子之和等

* 于该数的数。例如,6的因子有1、2、3,

* 且6=1+2+3,所以6是完全数*/

for(int a=1;a<=1000;a++){

int num=a;

if(isyinzi(num)){

System.out.println(num);

}

}

}

}

15、一个整数的各位数字之和能被 9 整除,则该数也能被 9 整除。编程验证给

定的整数能否被 9 整除。

package HomeWork15;

import java.util.Random;

public class HomeWork15 {

public static void panduan(int num){

int b=num/100;//百位数

int s=num%100/10;//十位数

int g=num%10;//个位数

if(num%9==0){

System.out.println(num+"能被9整除");

if((b+s+g)%9==0){

System.out.println("同时"+num+"的各个位数之和也能被9整除");

}

else{

System.out.println("但是"+num+"的各个位数之和不能被9整除");

}

}

else

System.out.println("next test!");

}

public static void main(String[] args) {

Random rd=new Random();

int shu=10+rd.nextInt(90);

shu =shu *9;

panduan(shu);

}

}

16、猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,

就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃

前一天剩下的一半零一个。到第 10 天在想吃的时候就剩一个桃子了,求第一天共

摘下来多少个桃子?

package HomeWork16;

public class HomeWork16 {

public static void main(String[] args) {

int total=1;

int day=10;

for (int i = 10; i >0; i--) {

System.out.println("第"+day+"天,有桃子"+total+"颗");

total=(total+1)*2;

day--;

}

}

}

17、水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等

于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。编程求出所有三位的水仙花数。

package HomeWork17;

public class HomeWork17 {

public static void main(String[] args) {

for(int num=100;num<1000;num++){

if(isshuixian(num)){

System.out.println(num);

}

}

}

//判断一个数是不是水仙花数

public static boolean isshuixian(int num){

int b=num/100;

int s=num%100/10;

int g=num%10;

return Math.pow(b, 3)

+Math.pow(s, 3)

+Math.pow(g, 3)==num?true:false;

}

}

18、已知 XYZ+YZZ=532,其中,X、Y、Z 为数字,编程求出 X、Y 和 Z 的值。

19、古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔

子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数

为多少?

package HomeWork19;

import java.util.Scanner;

public class HomeWork19 {

/*

* 古典问题:有一对兔子,

* 从出生后第3 个月起每个月都生一对兔子,

* 小兔 子长到第三个月后每个月又生一对兔子,

* 假如兔子都不死,

* 问每个月的兔子总数 为多少? */

public int rubbit(int mon){

if(mon<=2){

return 1;

}

else{

return rubbit(mon-1)+rubbit(mon-2);

}

}

public static void main(String[] args) {

int r=1;

int rr=1;

int rrr=1;

System.out.println("方法一:");

for(int a=1;a<=12;a++){

//12个月

if(a<=2){

r=1;

}

else{

//当前月等于前两个月之和

r=rr+rrr;

rrr=rr;

rr=r;

}

System.out.println(r*2);

}

System.out.println("方法二,求指定月份的兔子数量:");

HomeWork19 jisuan=new HomeWork19();

System.out.println("请输入月份:");

Scanner sc=new Scanner(System.in);

int yue=sc.nextInt();

System.out.println(yue+"月份的兔子数量是"+(jisuan.rubbit(yue))*2);

}

}

20、将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。

package HomeWork20;

import java.util.Scanner;

public class HomeWork20 {

public static void main(String[] args) {

System.out.println("请输入一个整数:");

Scanner sc=new Scanner(System.in);

int num=sc.nextInt();

System.out.println(num+"的质因数有:");

for(int i=2;i

while(num%i==0){

num/=i;

System.out.print(i+" ");

}

}

System.out.print(" "+num);

}

}

数组章节作业 1、将一个数组中的元素倒排过来,不能新开一个数组的临时存储空 间,只能在原数组上改。 2、写一个类用来模拟栈这种数据结构,要求底层 使用数组存储数据, 并给出相应的进栈和出栈的方法。MyStack int arr[]; int count;//栈中元素个数 public MyStack(int n){ arr = new int[n]; } boolean push(int num){ if(count==arr.length){} arr[count++]=num; } int pop(){ if(count==0){ return -1;} return arr[--count]; } 3、实现在一个数组指定位置添加元素和删除元素的功能。 1、数组容量问题? 2、添加元素前后数组中元素的变化 3、删除元素前后数组中元素的变化 面向对象章节作业 1,写一个类,名为Animal,该类有两个私有属性, name(代表动物的名字),和legs(代表动物的腿的条 数)。并提供个两构造方法,一个无参,默认给name 赋值为AAA,给legs赋值为4;另一个需要两个参数, 分别用这两个参数给私有属性赋值。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 2,写一个类Person,包含以下属性:String name; int age; boolean gender; Person partner。 为Person类写一个marry(Person p)方法,代表当前 对象和p结婚,如若可以结婚,则输出恭贺信息, 否则输出不能结婚原因。要求在另外一个类中写一 个主方法,来测试以上程序。(下列情况不能结婚: 结婚年龄,男<24,女<22;3,某一方已婚) 3,写一个类,名为Animal,该类有两个私有属性,name(代表动物的名字),和legs(代表动物的腿的条数);要求为两个私有属性提供public 的访问方法。并提个两构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。要求在第一个构造方法中调用第二个构造方法。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 4,写一个类Fish,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Swimming!! 5,写一个类Bird,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值2;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Flying!! 6,写一个类Zoo,要求分别生成若干个Animal,Fish和Bird。并调用他们的属性和方法。 7,写Shape类,要求如下: 1.int类型属性x和y,分别表示图形的中心点坐标 2.无参构造器 3.构造器,对x和y进行初始化 4.draw()方法,输出"Shape draw" 写Circle类,继承Shape类,要求如下 1.double类型属性r,表示圆的半径 2.无参构造器,将r初始化为1.0 3.构造器,对r进行初始化 4.构造器,对x、y、r进行初始化 5.draw()方法,输出"draw in circle"和x,y,r的值 写Rectangle类,继承Shape类,要求如下 1.double类型属性height和width,表示矩形的高和宽 2.无参构造器,将height和width都初始化为1.0 3.构造器,对height和width进行初始化 4.构造器,对x、y、height、width进行初始化 5.draw()方法,输出"draw in rectangle"和x,y,height,width的值 使用ShapeTest类测试以上代码。 8,某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪 HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数 SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率 BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。 写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做成完全封装,不允许非私有化属性。 容器类章节作业 1、写MyStack类,实现栈功能。在类中使用ArrayList保存数据。 2、使用TreeSet和Comparator,写TreeSetTest1 要求:对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 3、使用TreeSet和Comparator,写TreeSetTest2 要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列 4、使用TreeSet和Comparator,写TreeSetTestInner 要求: 对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 1. 使用匿名内部类实现 2. 使用静态内部类实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值