1. 程式人生 > 其它 >java程式設計題50道(2)

java程式設計題50道(2)

程式6

題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。

題目思路:先建構函式,主函式運用再輸出

通過輾轉相除法解決最大公約數,再利用公式法兩數相乘除以最大公約數求得最大公倍數

 1 package test;
 2 
 3 import java.util.Scanner;
 4 
 5 public class hello {
 6     public static int big_number(int a, int b) {//使用輾轉相除法,除數被除數餘數互相替換
 7         int c;
 8         if (a%b!=0) {
 9             while
(a%b!=0) { 10 c=a%b; 11 a=b; 12 b=c; 13 } 14 } 15 return b; 16 } 17 public static int min_number(int x,int y) { 18 int c; 19 c=(x*y)/big_number(x, y);//最小公倍數為兩數相乘除最大公約數 20 return c; 21 } 22 public
static void main(String[] args) { 23 System.out.print("輸入數字:");// 24 Scanner in =new Scanner(System.in); 25 int x =in.nextInt(); 26 int y =in.nextInt(); 27 System.out.print("最大公約數為"+big_number(x, y)+"最小公倍數為"+min_number(x, y));//建構函式後,用主函式輸出 28 } 29 30 }

程式7

題目:輸入一行字元,分別統計出其英文字母、空格、數字和其它字元的個數。

題目思路:

先用scanner獲取字串,再將字串賦值陣列,陣列從中逐個取出,進行統計

 1 package test;
 2 
 3 import java.util.Scanner;
 4 public class hello {
 5     public static void main(String[] args) {
 6         System.out.print("輸入:字元");
 7         Scanner in = new Scanner(System.in);
 8         String a =in.nextLine();//獲取字串
 9         char[]zifuchuan=a.toCharArray();//將字串賦值陣列
10         int x=0;//統計空格 字母 數字 其他字元個數
11         int y=0;
12         int z=0;
13         int c=0;
14         for (int i = 0; i < zifuchuan.length; i++) {
15             if(zifuchuan[i] ==32) {
16                 x++;
17             }
18             else if (zifuchuan[i]<=57&&zifuchuan[i]>=48) {
19                 y++;
20             }
21             else if (zifuchuan[i]>=65&&zifuchuan[i]<=90||zifuchuan[i]>=97&&zifuchuan[i]<=122) {
22                 z++;
23             }
24             else  {
25                 c++;
26             }
27         }
28         System.out.print("空格為"+x+" 數字為"+y+" 字母為"+z+" 其他字元為"+c);
29     }
30 
31 }

程式8

題目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。

題目思路:

通過迴圈,將輸入的值每次乘以十後再加上初始值並輸出,並累計數值

 1 package test;
 2 
 3 import java.util.Scanner;
 4 public class hello {
 5     public static void main(String[] args) {
 6         System.out.print("輸入:");
 7         Scanner in = new Scanner(System.in);
 8         int a = in.nextInt();//獲取數字及次數
 9         int b = in.nextInt();
10         int c=a;//設計累加和初始值
11         int sum=a;
12         System.out.print(a);
13         for (int i = 1; i <b; i++) {
14             a=a*10+c;
15             sum=sum+a;
16             System.out.print("+"+a);//輸出每次的值
17         }
18         System.out.print("="+sum);//輸出累加值
19     }
20 
21 }

程式9

題目:一個數如果恰好等於它的因子之和,這個數就稱為”完數”。例如6=1+2+3.程式設計找出1000以內的所有完數。

題目思路:

先通過函式判斷完數,若是完數,因數相加之和等於完數。最後再以主函式以建構函式逐個確定,再輸出

 1 package test;
 2 
 3 import java.util.Scanner;
 4 public class hello {
 5     public static boolean wanshu(int a) {//函式判斷是否是完數
 6         int sum = 0;
 7         for (int i = 1; i < a; i++) {
 8             if (a%i==0) {
 9                 sum+=i;
10             }
11         }
12         if (sum==a) {//若是函式因數和等於原數
13             return true;
14         }
15         return false;
16     }
17     public static void main(String[] args) {
18         System.out.print("輸入:");
19         Scanner in = new Scanner(System.in);
20         int sum =0;
21         for (int i = 1; i <1000; i++) {
22             if (wanshu(i)) {
23             System.out.print(i+" ");//輸出每個完數
24             sum++;
25             }
26         }
27         System.out.print("共有"+sum);//輸出累加值
28     }
29 
30 }

程式10

題目:一球從h米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在 第n次落地時,共經過多少米?第n次反彈多高?

題目思路:

每次高度均為上次一半 h=h/2 經過則是每次高度乘2,以sum累加 sum+=h*2

 1 package test;
 2 
 3 import java.util.Scanner;
 4 public class hello {
 5 
 6     public static void main(String[] args) {
 7         System.out.print("輸入:");
 8         Scanner in = new Scanner(System.in);
 9         int h =in.nextInt();//輸入高度,以及反彈次數
10         int n =in.nextInt();
11         int sum=h;
12         for (int i = 2; i <=n; i++) {
13             h=h/2;//確定反彈高度
14             sum+=h*2;//累計經過長度
15         }
16         System.out.print("在第"+n+"次落地時,共經過"+sum+"米 第"+n+"次反彈"+h);//輸出
17     }
18 
19 }