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<number;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<num;i++){ while(num%i==0){ num/=i; System.out.print(i+" "); } } System.out.print(" "+num); } }
Java 基礎編程練習題