1. カラーテレビを 2856 元で買いました。何枚の紙幣を支払いましたか?
public class Demo01 { public static void main(String[] args) { int play = 2856; System.out.println("100元面值:" + play / 100); System.out.println("50元面值:" + play / 10 % 10 / 5); System.out.println("20元面值:" + play / 10 % 10 % 5 / 2); System.out.println("10元面值:" + play / 10 % 10 % 5 % 2); System.out.println("5元面值:" + play % 10 / 5); System.out.println("1元面值:" + play % 10 % 5); } }
2. モンスターを倒すプロセスをシミュレートします: ゲームには合計 20 のレベルがあり、ヒーローとモンスターの 2 つの役割があります。最初のレベルでは、モンスターの経験値は 20 ポイント、アップグレードに必要な経験値は 1200 ポイントです。 、ヒーローの経験値は0で、ヒーローが殺されるたびにモンスターの経験値が自動的に増加します。レベルごとに、アップグレードに必要な経験値が20%増加します(小数部分を無視)、モンスターの経験値は5増加します。 %になると、ヒーローの経験値は0に戻ります。レベル20に達すると、合計キル数がどれほど奇妙になるに違いありません。
public class Demo02 { public static void main(String[] args) { int monster = 20; int count = 0; int exp = 1200; for (int d = 2; d <= 20; d++) { int hero = 0; monster = (int) (monster * 1.05); exp = (int) (exp * 1.2); while (hero < exp) { hero += monster; count++; } } System.out.println(count + 1200 / 20); } }
3. トピック: 桃を食べる猿 問題: 猿は初日に桃を数個摘み、すぐに半分を食べましたが、満足できずにもう 1 個食べ、翌朝残りの半分を食べました。 。それ以来、毎朝、前日の残りを半分と一つずつ食べました。 10日目の朝、また食べようと思ったら、桃が1個だけ残っていた。初日に何匹選ばれたかを調べてください。
プログラム分析: 逆思考法を採用し、後ろから前へ推論します。
public class Demo03 { public static void main(String[] args) { int sum = 1; for(int i = 9;i > 0;i--){ sum = (sum + 1) * 2; } System.out.println("第一天,有桃子"+sum+"颗"); } }
4. 質問: 特定の年、特定の月、特定の日を入力して、この日が一年のうち何日であるかを判断してください。
プログラム分析: 3 月 5 日を例にとると、最初の 2 か月を合計し、その後、閏年や 3 より大きい月を入力するなどの特別な状況である 5 日を追加する必要があります。追加の日を考慮する必要があります。
public class Demo04 { public static void main(String[] args) { int sum = 0; Scanner sc = new Scanner(System.in); System.out.println("请输入几年:"); int year = sc.nextInt(); System.out.println("请输入几月:"); int month = sc.nextInt(); System.out.println("请输入几号:"); int day = sc.nextInt(); GregorianCalendar gre = new GregorianCalendar(); boolean isLeapYear = gre.isLeapYear(year); int ap = isLeapYear ? 29 : 28; int days = 0; switch (month) { case 1: days = day; break; case 2: days = 31 + day; break; case 3: days = 31 + ap + day; break; case 4: days = 31 + ap + 31 + day; break; case 5: days = 31 + ap + 31 + 30 + day; break; case 6: days = 31 + ap + 31 + 30 + 31 + day; break; case 7: days = 31 + ap + 31 + 30 + 31 + 30 + day; break; case 8: days = 31 + ap + 31 + 30 + 31 + 30 + 31 + day; break; case 9: days = 31 + ap + 31 + 30 + 31 + 30 + 31 + 31 + day; break; case 10: days = 31 + ap + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day; break; case 11: days = 31 + ap + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day; break; case 12: days = 31 + ap + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day; break; default: System.out.println("月份输入错误"); break; } System.out.println("这一天是这一年的第" + days + "天"); } }
5. 質問: 1、2、3、4 の数字は繰り返されずに何通り作れますか?いくつだ?
プログラム分析: 百の位、十の位、一の位に入力できる数字はすべて 1、2、3、4 です。すべての順列を合成したら、条件を満たさない順列を削除します。
public class Demo05 { public static void main(String[] args) { int count = 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 && i != k && k != j) { count++; System.out.println(i * 100 + j * 10 + k); } } } } System.out.println("能组成" + count + "个互不相同无重复数字的三位数。"); } }
6. 質問: ボールは 100 メートルの高さから自由に落下し、地面に当たると元の高さの半分まで跳ね返ります。そのとき、ボールは合計何メートル通過しますか。地面に着くのは10回目? 10回目のラリーはどれくらいですか?
public class Demo06 { public static void main(String[] args) { double height= 100; double sum=100; for(int i=0;i<10;i++) { height=height/2; sum+=height*2; } System.out.println("第十次反弹高度为:"+height+"米"); System.out.println("共经过:"+(sum-height*2)+"米"); } }
7. 問題: 「水仙数」をすべて出力してください。いわゆる「水仙数」とは、3 桁の和がその数自体に等しいものを指します。たとえば、153=1 の 3 乗 + 5 の 3 乗 + 3 の 3 乗なので、153 は「水仙数」です。
プログラム分析: for ループを使用して 100 ~ 999 の数値を制御し、各数値を単位、十の位、百の位に分解します。
public class Demo07 { public static void main(String[] args) { System.out.println("100-999以内的水仙花数:"); for(int n=100;n<=999;n++) { int a; int b; int c; a=n%10; b=((n%100)-a)/10; c=(int) Math.floor(n/100); if(n==(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3))) { System.out.println(n); } } } }
8. トピック: 正の整数を素因数に分解します。例: 90 を入力し、90=2*3*3*5 を出力します。
プログラム分析: n の素因数を分解するには、まず最小の素数 k を見つけて、次の手順に従ってそれを完了する必要があります:
(1) この素数が n と正確に等しい場合、それは次のことを意味します。素因数を分解するプロセスは終了しました。印刷するだけです。
(2) n>k であるが、n が k で割り切れる場合、k の値を出力し、n を k で割った商を新しい正の整数 n として使用し、最初のステップを繰り返す。
(3) n が k で割り切れない場合は、k+1 を k の値として使用し、最初の手順を繰り返します。
public class Demo08 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.print(n + "=1*"); for (int k = 2; k <= n / 2; k++) { if (n % k == 0) { System.out.print(k + "*"); n = n / k; k = 2; } } System.out.println(n); } }
9. 質問: 条件演算子のネストを使用してこの質問を完成させます。学力スコアが 90 点以上の生徒は A で表され、スコアが 60 ~ 89 点の生徒は B で表され、スコアが 60 未満の生徒はC で表されます。
プログラム分析: (a>b)?a:b これは条件演算子の基本的な例です。
public class Demo09 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int n = sc.nextInt(); long s = 0l; for (int i = 1; i <= n; i++) { s = s + a; a = a * 10 + a; } System.out.println(s); } }
10. 質問: ある数値が因数の合計と完全に等しい場合、その数値は「完全数」と呼ばれます。たとえば、6=1+2+3 1000 以内の完全な数をすべて見つけるプログラムです。
りー以上がJava 初心者向けの 10 個の小さなプログラム例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。