[Prosedur 1] Judul: Masalah klasik: Ada sepasang kelinci, mereka melahirkan sepasang kelinci setiap bulan sejak bulan ketiga setelah lahir setiap bulan. Jika kelinci-kelinci tersebut tidak mati, berapakah jumlah seluruh kelinci setiap bulannya?
1. Analisis program : Pola kelinci barisan 1,1,2,3,5,8,13,21....
kelas publik exp2{ public static void main(String args[]){ int i=0; for(i=1;i<=20;i++)
Sistem.keluar.println(f(i));
} int statis publik f(int x)
{ if(x==1 || x==2) kembalikan 1 yang lain;
kembalikan f(x-1)+f(x-2);
}
}
atau
kelas publik exp2{ public static void main(String args[]){ int i=0;
matematika mitos = matematika baru(); for(i=1;i<=20;i++)
System.out.println(mymath.f(i));
}
}matematika kelas
{ int publik f(int x)
{ if(x==1 || x==2) kembalikan 1 yang lain;
kembalikan f(x-1)+f(x-2);
}
}
[Program 2] Pertanyaan: Tentukan berapa banyak bilangan prima antara 101-200, dan keluarkan semua bilangan prima.
1. Analisis program: Cara menentukan bilangan prima: Gunakan suatu bilangan untuk membagi 2 dengan kuadrat (bilangan ini) berturut-turut.
Artinya bilangan tersebut bukan bilangan prima, melainkan bilangan prima.
kelas publik exp2{ public static void main(String args[]){ int i=0;
matematika matematika = matematika baru(); for(i=2;i<=200;i++) if(mymath.iszhishu(i)==benar)
Sistem.keluar.println(i);
}
}matematika kelas
{ int publik f(int x)
{ if(x==1 || x==2) kembalikan 1 yang lain;
kembalikan f(x-1)+f(x-2);
}iszhishu boolean publik(int x)
{ for(int i=2;i<=x/2;i++) jika (x % 2==0 ) mengembalikan salah;
}
}
[Prosedur 3] Judul: Cetak semua "bilangan narsisis". Yang disebut "bilangan narsisis" mengacu pada bilangan tiga digit yang jumlah kubusnya sama dengan bilangan itu sendiri. Contoh: 153 adalah "bilangan narsisis" karena 153=1 pangkat tiga + 5 pangkat tiga + 3 pangkat tiga.
1. Analisis program: Gunakan perulangan for untuk mengontrol 100-999 angka, dan dekomposisi setiap angka menjadi satuan, puluhan, dan ratusan.
kelas publik exp2{
public static void main(String args[]){ int i=0;
matematika matematika = matematika baru(); for(i=100;i<=999;i++) if(mymath.shuixianhua(i)==benar)
Sistem.keluar.println(i);
}
}matematika kelas
{ int publik f(int x)
{ if(x==1 || x==2) kembalikan 1 yang lain;
kembalikan f(x-1)+f(x-2);
}iszhishu boolean publik(int x)
{ for(int i=2;i<=x/2;i++) jika (x % 2==0 ) mengembalikan salah;
}boolean publik shuixianhua(int x)
{ ke dalam i=0,j=0,k=0;
saya=x/100;
j=(x % 100) /10;
ik=fx % 10; (x==i*i*i+j*j*j+k*k*k) mengembalikan nilai true yang lain;
kembali salah;
}
}
【Prosedur 4】 Judul: Menguraikan bilangan bulat positif menjadi faktor prima. Misal: masukan 90, print out 90=2*3*3*5.
Analisis program: Untuk menguraikan n menjadi faktor prima, cari dulu bilangan prima minimum k, lalu selesaikan sesuai langkah berikut:
(1) Jika bilangan prima ini sama persis dengan n, berarti proses penguraian faktor prima sudah selesai, tinggal dicetak saja.
(2) Jika n <> k, tetapi n habis dibagi k, nilai k harus dicetak, dan hasil bagi n dibagi k harus digunakan sebagai bilangan bulat positif baru, dan langkah pertama harus diulang.
(3) Jika n tidak habis dibagi k, gunakan k+1 sebagai nilai k dan ulangi langkah pertama.
kelas publik exp2{ publik exp2(){} public void fengjie(int n){ for(int i=2;i<=n/2;i++){ if(n%i==0){
Sistem.keluar.cetak(i+"*");
fengjie(n/i);
}
}
Sistem.keluar.cetak(n);
System.exit(0);///Kalimat ini tidak dapat dihilangkan, jika tidak maka hasilnya akan salah
}public static void main(String[] args){
Tali str="";
exp2 c=exp2 baru();
str=javax.swing.JOptionPane.showInputDialog("Masukkan nilai N (masukkan exit untuk keluar):");
ke dalam N;
Tidak=r0y;{
N=Bilangan Bulat.parseInt(str);
}menangkap(NumberFormatException e){
e.printStackTrace();
}
System.out.print(N+"Penguraian faktor prima:"+N+"=");
c.fengjie(N);
}
}
[Program 5] Pertanyaan: Gunakan kumpulan operator kondisional untuk menyelesaikan pertanyaan ini: siswa dengan nilai akademik >=90 poin diwakili oleh A, siswa dengan nilai antara 60-89 diwakili oleh B, dan siswa dengan nilai di bawah 60 diwakili oleh oleh C.
1. Analisis program: (a> b)?a:b Ini adalah contoh dasar operator kondisional.
impor javax.swing.*; kelas publik ex5 { public static void main(String[] args){
Tali str="";
str=JOptionPane.showInputDialog("Masukkan nilai N (masukkan exit untuk keluar):");
ke dalam N;
Tidak=r0y;{
N=Bilangan Bulat.parseInt(str);
ca}tch(NumberFormatException e){
e.printStackTrace();
}
str=(N>90?"A":(N>60?"B":"C"));
Sistem.keluar.println(str);
}
}
[Program 6] Pertanyaan: Masukkan dua bilangan bulat positif m dan n, dan temukan pembagi persekutuan terbesar dan kelipatan persekutuan terkecilnya.
1. Analisis program: Gunakan metode evaporasi.
Pembagi persekutuan terbesar:
CommonDivisor kelas publik{ public static void main(String args[])
{ Pembagi Umum(24,32);
}statis int commonDivisor(int M, int N)
{ jika(N<0||M<0)
{
Sryesttuermn.out.println("KESALAHAN!" -1;
}jika(N==0)
{
rSeytsutrenm.out.println("pembagi persekutuan terbesar adalah :"+M);
}kembalikan commonDivisor(N,M%N);
}
}
Kelipatan persekutuan terkecil dan pembagi persekutuan terbesar:
impor java.util.Scanner; CandC kelas publik
{
//Cara selanjutnya adalah mencari pembagi persekutuan terbesar
publik statis int gcd(int m, int n)
{sementara (benar)
{jika ((m = m % n) == 0) kembalikan n; jika ((n = n % m) == 0) kembalikan m;
}}
public static void main(String args[]) memunculkan Pengecualian
{
//Dapatkan nilai masukan
//Pemindai dagu = Pemindai baru(Sistem.dalam);
/i/ntint a = dagu.nextInt(), b = dagu.nextInt(); a=23; int b=32; int c = gcd(a, b);
System.out.println("Kelipatan persekutuan terkecil: " + a * b / c + "/n Pembagi persekutuan terbesar: " + c);
}}
[Program 7] Pertanyaan: Masukkan sebaris karakter dan hitung jumlah huruf bahasa Inggris, spasi, angka, dan karakter lain di dalamnya.
1. Analisis program: Dengan menggunakan pernyataan while, syaratnya karakter input bukan '/n'.
impor java.util.Scanner; kelas publik ex7 { public static void main(String args[])
{
System.out.println("Silakan masukkan string:");
Pemindaian pemindai=Pemindai baru(Sistem.dalam);
String str=pindai.berikutnya();
Tali E1="[/u4e00-/u9fa5]";
Sintret E2="[a-zA-Z]"; countH=0; int countE=0; char[] arrChar=str.toCharArray();
String[] arrStr=String baru[arrChar.panjang]; untuk (int i=0;i<arrChar.length;i++)
{
arrStr[i]=String.valueOf(arrChar[i]);
}untuk (String i: arrStr )
{jika (i.cocok(E1))
{
hitungH++;
}jika (i.cocok(E2))
{
hitunganE++;
}
}
System.out.println("Jumlah karakter Cina"+countH);
System.out.println("Jumlah huruf"+hitungE);
}
}
[Prosedur 8] Soal: Carilah nilai s=a+aa+aaa+aaaa+aa...a, dimana a adalah suatu bilangan. Misalnya, 2+22+222+2222+22222 (total 5 angka ditambahkan saat ini). Penambahan beberapa angka dikendalikan oleh keyboard.
1. Analisis program: Kuncinya adalah menghitung nilai setiap item.
import java.io.*; public class Sumloop { public static void main(String[] args) melempar IOException
{int s=0;
Keluaran string="";
BufferedReader stadin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Masukkan nilai a");
Masukan input =stadin.readLine(); (int i =1;i<=Integer.parseInt(input);i++)
{
ionuttput+=masukan; a=Bilangan Bulat.parseInt(keluaran);
s+=sebuah;
}
Sistem.keluar.println;
}
}
Penjelasan lain:
import java.io.*; public class Sumloop { public static void main(String[] args) melempar IOException
{ ke dalam s=0; ke dalam n;
BufferedReader stadin = new BufferedReader(new InputStreamReader(System.in));
Masukan string = stadin.readLine();
fno=rInteger.parseInt(masukan); (int i=1;i<=n;i++){
t=t*10+n;
s=s+t;
Sistem.keluar.println(t);
}
Sistem.keluar.println;
}
}
[Program 9] Pertanyaan: Jika suatu bilangan sama persis dengan jumlah faktor-faktornya, maka bilangan tersebut disebut "bilangan sempurna". Misalnya, 6=1+2+3. Program untuk mencari semua bilangan sempurna dalam 1000.
kelas publik Wanshu { public static void main(String[] args)
{ ke dalam s; untuk(ke dalam i=1;i<=1000;i++)
{
fs=o0r;(int j=1;j<i;j++) jika(i % j==0)
jika s=s+j; (s==i)
Sistem.keluar.cetak(i+" ");
}
Sistem.keluar.println();
}
}
[Prosedur 10] Soal: Sebuah bola jatuh bebas dari ketinggian 100 meter, setiap kali menyentuh tanah, bola memantul kembali hingga setengah dari ketinggian semula tanah untuk yang ke 10 kalinya? Seberapa tinggi reli ke-10?
kelas publik Ex10 { public static void main(String[] args)
{ ganda s=0; ganda t=100; untuk(int i=1;i<=10;i++)
{
s+=t;
t=t/2;
}
Sistem.keluar.println;
Sistem.keluar.println(t);
}
}
[Prosedur 11] Soal: Ada bilangan 1, 2, 3, dan 4. Berapa banyak bilangan berbeda yang terdiri dari tiga angka yang dapat dibentuk tanpa bilangan berulang? Berapa banyak mereka?
1. Analisis program : Angka yang dapat diisi pada tempat ratusan, puluhan, dan satuan semuanya adalah 1, 2, 3, dan 4. Setelah menyusun semua permutasi, hapus permutasi yang tidak memenuhi syarat.
kelas publik Wanshu { public static void main(String[] args)
{ ke dalam i=0; ke dalam j=0; ke dalam k=0; ke dalam t=0; untuk(i=1;i<=4;i++) untuk(j=1;j<=4;j++) =1;k<=4;k++) jika(i!=j && j!=k && i!=k)
{t+=1;
Sistem.keluar.println(i*100+j*10+k);
}
Sistem.keluar.println (t);
}
}
[Prosedur 12] Pertanyaan: Bonus yang diberikan perusahaan didasarkan pada komisi keuntungan. Ketika keuntungan (I) kurang dari atau sama dengan 100.000 yuan, bonus dapat ditingkatkan sebesar 10%; ketika keuntungan lebih besar dari 100.000 yuan dan kurang dari 200.000 yuan, porsi kurang dari 100.000 yuan dikenakan 10% komisi, dan jika keuntungan lebih besar dari 100.000 yuan, bonusnya adalah 10%. Untuk porsi antara 200.000 dan 400.000, komisinya bisa 7,5%; untuk porsi di atas 200.000 yuan, komisinya bisa 5%; ; Bila jumlahnya antara 400.000 dan 600.000, porsi di atas 400.000 yuan dapat ditugaskan sebesar 3%; bila jumlahnya antara 600.000 dan 1 juta, porsi di atas 600.000 yuan dapat ditugaskan sebesar 1,5%, dan bila jumlahnya di atas 1 juta yuan , komisinya bisa 1,5%, porsi yang melebihi 1 juta yuan akan dikenakan komisi 1%. Masukkan keuntungan I bulan ini dari keyboard.
1. Analisis program: Silakan gunakan sumbu bilangan untuk membagi dan mencari lokasi. Perhatikan bahwa bonus perlu didefinisikan sebagai bilangan bulat saat mendefinisikan.
impor java .util.*; tes kelas publik { public static void main (String[]args){
jumlah ganda;//Deklarasikan bonus yang akan dikeluarkan dalam variabel yang akan disimpan
Input pemindai = Pemindai baru (System.in);//Impor pemindai
System.out.print ("Masukkan keuntungan bulan ini");
double lirun=input .nextDouble();//Masukkan keuntungan dari konsol
if(lirun<=100000){
jumlah=lirun*0,1;
}else if (lirun<=200000){
jumlah=10000+lirun*0,075;
}else if (lirun<=400000){
jumlah=17500+lirun*0,05;
}else if (lirun<=600000){
jumlah=lirun*0,03;
}else if (lirun<=1000000){
jumlah=lirun*0,015;
} kalau tidak{
jumlah=lirun*0,01;
}
System.out.println("Bonus yang harus dibayarkan adalah "+jumlah);
}
}
Kode untuk situasi lain di bawah ini dapat diperbaiki oleh pembaca.
【Prosedur 13】
Pertanyaan: Bilangan bulat setelah dijumlahkan 100 menjadi bilangan kuadrat sempurna, dan jika dijumlahkan 168 menjadi bilangan kuadrat sempurna.
1. Analisis program: Untuk menilai dalam 100.000, pertama-tama tambahkan 100 pada angka sebelum meresepkan, lalu tambahkan 268 pada angka tersebut, lalu resepkan. Jika hasil setelah resep memenuhi syarat berikut, itulah hasilnya. Silakan lihat analisis spesifiknya:
tes kelas publik { public static void main (String[]args){
panjang k=0; for(k=1;k<=100000l;k++) if(Matematika.lantai(Matematika.sqrt(k+100))==Matematika.sqrt(k+100) &&
Matematika.lantai(Matematika.sqrt(k+168))==Matematika.sqrt(k+168))
Sistem.keluar.println(k);
}
}
[Program 14] Pertanyaan: Masukkan tahun tertentu, bulan tertentu, dan hari tertentu, dan tentukan hari apa pada tahun tersebut?
1. Analisis program: Mengambil tanggal 5 Maret sebagai contoh, Anda harus menjumlahkan dua bulan sebelumnya terlebih dahulu, lalu menambahkan 5 hari, yang merupakan hari dalam setahun. Perlu dipertimbangkan.
import java.util.*; tes kelas publik { public static void main (String[]args){ int hari=0; int bulan=0;
System.out.print("Masukkan tahun, bulan, hari/n");
Masukan pemindai = Pemindai baru (Sistem.in);
tahun=input.nextInt();
bulan=input.nextInt();
hari=input.nextInt();
switch(bulan) /*Pertama hitung jumlah hari pada bulan sebelumnya*/
{kasus 1:
jumlah=0;istirahat; kasus 2:
jumlah=31;pecah; kasus 3:
jumlah=59;pecah; kasus 4:
jumlah=90;pecah; kasus 5:
jumlah=120;pecah; kasus 6:
jumlah=151;pecah; kasus 7:
jumlah=181;pecah; kasus 8:
jumlah=212;pecah; kasus 9:
jumlah=243;pecah; kasus 10:
jumlah=273;pecah; kasus 11:
jumlah=304;pecah; kasus 12:
jumlah=334;rusak;
System.out.println("kesalahan data");break;
}
jumlah=jumlah+hari; /*Menambahkan jumlah hari pada hari tertentu*/
if(year%400==0||(year%4==0&&year%100!=0))/*Menilai apakah ini tahun kabisat*/
lompatan lain=1;
lompatan=0;
if(kabisat==1 && bulan>2)/*Jika ini adalah tahun kabisat dan bulannya lebih dari 2, satu hari harus ditambahkan ke jumlah hari*/
jumlah++;
System.out.println("Hari ini:"+jumlah);
}
}
[Program 15] Pertanyaan: Masukkan tiga bilangan bulat x, y, z. Silakan keluarkan ketiga bilangan ini dari kecil ke besar.
1. Analisis program: Kita cari cara untuk memasukkan bilangan terkecil pada x, bandingkan dulu x dengan y, jika x > y lalu tukarkan nilai x dan y, lalu bandingkan x dengan z, jika x > z menukar nilai x dan z, sehingga x dapat diminimalkan.
impor java.util.*; tes kelas publik { public static void main (String[]args){ int i=0;
System.out.print("Masukkan tiga angka/n");
Masukan pemindai = Pemindai baru (Sistem.in);
i=input.nextInt();
j=input.nextInt();
k=iifnput.nextInt(); (i>j)
{
x=saya;
saya=j;
j=x;
}jika(i>k)
{
x=saya;
saya=k;
k=x;
}jika(j>k)
{
x=j;
j=k;
k=x;
}
Sistem.keluar.println(i+", "+j+", "+k);
}
}
[Program 16] Pertanyaan: Rumus keluaran 9*9.
1. Analisis program: perhatikan baris dan kolom, total ada 9 baris dan 9 kolom, i mengontrol baris dan j mengontrol kolom.
kelas publik jiujiu { public static void main(String[] args)
{ ke dalam saya=0; ke dalam j=0; untuk(saya=1;saya<=9;i++)
{ untuk(j=1;j<=9;j++)
Sistem.keluar.cetak(i+"*"+j+"="+i*j+"/t");
Sistem.keluar.println();
}
}}
Tidak ada produk berulang (segitiga bawah)
kelas publik jiujiu { public static void main(String[] args)
{ ke dalam saya=0; ke dalam j=0; untuk(saya=1;saya<=9;i++)
{ untuk(j=1;j<=i;j++)
Sistem.keluar.cetak(i+"*"+j+"="+i*j+"/t");
Sistem.keluar.println();
}
}}
segitiga atas
kelas publik jiujiu { public static void main(String[] args)
{ ke dalam saya=0; ke dalam j=0; untuk(saya=1;saya<=9;i++)
{ untuk(j=i;j<=9;j++)
Sistem.keluar.cetak(i+"*"+j+"="+i*j+"/t");
Sistem.keluar.println();
}
}}
[Prosedur 17] Judul: Monyet memakan buah persik Masalah: Monyet memetik beberapa buah persik pada hari pertama, langsung memakan setengahnya, dan belum puas, dia makan satu lagi dan memakan setengah dari sisa buah persik keesokan paginya.
Makan satu lagi. Sejak saat itu, setiap pagi saya makan setengah dan satu sisa makanan dari hari sebelumnya. Ketika saya ingin makan lebih banyak pada pagi hari tanggal 10, saya melihat hanya tersisa satu buah persik. Cari tahu berapa banyak yang dipilih pada hari pertama.
1. Analisis program: mengadopsi metode berpikir terbalik dan menyimpulkan dari belakang ke depan.
monyet kelas umum makan buah persik{
static int total(int hari){ if(hari == 10){ return 1;
}else{ return (total(hari+1)+1)*2;
}
public s}statis kekosongan utama(String[] args)
{
Sistem.keluar.println(total(1));
}}
[Prosedur 18] Topik: Dua tim tenis meja bertanding, masing-masing dengan tiga pemain. Tim A terdiri dari tiga orang a, b, dan c, dan tim B terdiri dari tiga orang x, y, dan z. Pengundian telah dilakukan untuk menentukan daftar pertandingan. Seseorang bertanya kepada para pemain tentang roster permainan tersebut. a mengatakan tidak bersaing dengan x, dan c mengatakan tidak bersaing dengan x dan z. Silakan programkan program untuk mencari daftar pemain dari ketiga tim tersebut.
1. Analisis program: Cara menilai bilangan prima: Gunakan suatu bilangan untuk membagi 2 dengan kuadrat (bilangan ini) berturut-turut. Jika dapat dibagi berarti bilangan tersebut bukan bilangan prima, selain itu bilangan prima.
import java.util.ArrayList; kelas publik pingpang {
pSutbrliincg sat,abt,icc; void main(String[] args) {
String[] op = { "x", "y", "z" };
Daftar Array<pingpang> arrayList=Daftar Array baru<pingpang>(); untuk (int i = 0; i < 3; i++) untuk (int j = 0; j < 3; j++) untuk (int k = 0; k < 3 ;k++) {
pingpang a=pingpang baru(op[i],op[j],op[k]); if(!aaequals(ab)&&!abequals(ac)&&!aaequals("x")
&&!acequals("x")&&!acequals("z")){
arrayList.tambahkan(a);
}
for}(Objek a:arrayList){
Sistem.keluar.println(a);
}
}pingpang publik(String a, String b, String c) { super(); ini.a = a; ini.b = b;
}
@pOubvelircride String toString() {
// TODO Stub metode yang dibuat secara otomatis
return "lawan a adalah "+a+", "+" lawan b adalah "+b+", "+"lawan c adalah "+c+"/n";
}
}
【Program 19】Judul: Cetak pola berikut (berlian)
*
***
****
*********
****
***
*
1. Analisis program: Pertama, bagi grafik menjadi dua bagian. Empat baris pertama memiliki satu aturan, dan tiga baris terakhir memiliki satu aturan. Gunakan loop for ganda, lapisan pertama mengontrol baris, dan lapisan kedua mengontrol kolom .
segi tiga:
kelas publik StartG { public static void main(String [] args)
{ ke dalam saya=0; ke dalam j=0; untuk(saya=1;saya<=4;i++)
{ untuk(j=1;j<=2*i-1;j++)
Sistem.keluar.cetak("*");
Sistem.keluar.println("");
}untuk(i=4;i>=1;i--)
{ untuk(j=1;j<=2*i-3;j++)
Sistem.keluar.cetak("*");
Sistem.keluar.println("");
}
}
}
berlian:
kelas publik StartG { public static void main(String [] args)
{ ke dalam saya=0; ke dalam j=0;
untuk(i=1;i<=4;i++)
{ untuk(int k=1; k<=4-i;k++)
Sistem.keluar untuk .print(" "); (j=1;j<=2*i-1;j++)
Sistem.keluar.cetak("*");
Sistem.keluar.println("");
}untuk(i=4;i>=1;i--)
{ untuk(int k=1; k<=5-i;k++)
untuk Sistem.keluar.cetak(" "); (j=1;j<=2*i-3;j++)
Sistem.keluar.cetak("*");
Sistem.keluar.println("");
}
}
}
[Prosedur 20] Soal: Ada barisan pecahan: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13... Tentukan jumlah 20 bilangan pertama barisan tersebut .
1. Analisis program: Harap pahami aturan perubahan pembilang dan penyebut.
tes kelas publik20 { public static void main(String[] args) { float fm = 1f; float fz = 1f; float sum = 0f;
suhu = fm;
fm = fz;
fz = fz + suhu;
jumlah += fz/fm;
//Sistem.keluar.println(jumlah);
}
Sistem.keluar.println(jumlah);
}
}
[Program 21] Pertanyaan: Tentukan jumlah dari 1+2!+3!+...+20!
1. Analisis program: Program ini hanya mengubah akumulasi menjadi perkalian kumulatif.
kelas publik Ex21 { jumlah panjang statis = 0; statis panjang fac = 0; public static void main(String[] args) { jumlah panjang = 0; ) {
fac = fac * i;
jumlah += fak;
}
Sistem.keluar.println(jumlah);
}}
[Program 22] Judul: Gunakan metode rekursif untuk menemukan 5!.
1. Analisis program: Rumus rekursif: fn=fn_1*4!
impor java.util.Scanner; kelas publik Ex22 { public static void main(String[] args) {
Pemindai s = Pemindai baru(Sistem.dalam); int n = s.nextInt();
Ex22 tfr = Ex22 baru();
Sistem.keluar.println(tfr.rekursi(n));
}
rekursi panjang publik(int n) { nilai panjang = 0; if(n ==1 || n == 0) {
nilai = 1;
} lain jika(n > 1) {
nilai = n * rekursi(n-1);
}nilai kembalian;
}}
[Prosedur 23] Pertanyaan: Ada 5 orang yang duduk bersama. Berapa umur orang kelima? Dia bilang dia 2 tahun lebih tua dari orang ke-4. Ketika saya bertanya kepada orang ke-4 berapa umurnya, dia menjawab dia 2 tahun lebih tua dari orang ke-3. Saya bertanya kepada orang ketiga dan dia menjawab bahwa dia dua tahun lebih tua dari orang kedua. Menanyakan orang kedua dan mengatakan dia dua tahun lebih tua dari orang pertama. Akhirnya saya tanya ke orang pertama dan dia bilang umurnya 10 tahun. Berapa umur orang kelima?
1. Analisis program: Dengan menggunakan metode rekursif, rekursi dibagi menjadi dua tahap: backtracking dan rekursi. Jika ingin mengetahui umur orang kelima, maka perlu diketahui umur orang keempat, dan seterusnya sampai dengan orang pertama (10 tahun).
Dorong kembali lagi.
kelas publik Ex23 { static int getAge(int n){ if (n==1){ return 10;
}kembalikan 2 + getAge(n-1);
}public static void main(String[] args) {
System.out.println("Umur kelima adalah:"+getAge(5));
}
}
[Program 24] Soal: Diberi bilangan bulat positif yang jumlah digitnya tidak lebih dari 5, syaratnya adalah: 1. Cari tahu berapa banyak digitnya, dan 2. Cetak digit-digit tersebut dalam urutan terbalik.
impor java.util.Scanner; kelas publik Ex24 { public static void main(String[] args) {
Ex24 tn = Ex24 baru();
Pemindai s = Pemindai baru(Sistem.dalam); panjang a = s.nextLong(); jika(a < 0 || a > 100000) {
System.out.println("Input Kesalahan, Jalankan Program Ini Lagi");
Sistem.keluar(0);
}jika(sebuah >=0 && sebuah <=9) {
System.out.println( a + "adalah satu digit");
System.out.println("Output dalam urutan terbalik adalah " + '/n' + a);
} lain jika(a >= 10 && a <= 99) {
System.out.println(a + "adalah bilangan dua digit");
System.out.println("Output dalam urutan terbalik adalah" );
tn.converse(a);
} else if(a >= 100 && a <= 999) {
System.out.println(a + "adalah bilangan tiga digit");
System.out.println("Output dalam urutan terbalik adalah" );
tn.converse(a);
} else if(a >= 1000 && a <= 9999) {
System.out.println(a + "adalah bilangan empat digit");
System.out.println("Output dalam urutan terbalik adalah" );
tn.converse(a);
} else if(a >= 10.000 && a <= 99999) {
System.out.println(a + "adalah bilangan lima digit");
System.out.println("Output dalam urutan terbalik adalah" );
tn.converse(a);
}
}public void converse(panjang l) {
String s = Panjang.toString char (l); [] ch = s.toCharArray(); for(int i=ch.length-1; i>=0; i--) {
Sistem.keluar.cetak(ch[i]);
}
}}
[Program 25] Soal: Bilangan yang terdiri dari 5 angka, tentukan apakah bilangan tersebut termasuk bilangan palindrom. Artinya, 12321 adalah bilangan palindrom, angka satuannya sama dengan angka ribuan, dan angka puluhan sama dengan angka ribuan.
impor java.util.Scanner; public class Ex25 { static int[] a = new int[5]; static int[] b = new int[5]; ;
Pemindai s = Pemindai baru(Sistem.dalam); panjang l = s.nextLong(); jika (l > 99999 || l < 10000) {
System.out.println("Input salah, mohon input lagi!");
l = s.nextLong();
}for (int i = 4; i >= 0; i--) { a[i] = (int) (l / (panjang) Math.pow(10, i));
l =(l % (panjang) Math.pow(10, i));
}
Sfyosrtem.keluar.println(); (int i=0,j=0; i<5; i++, j++) {
b[j] = a[i];
}untuk(int i=0,j=4; i<5; i++, j--) { jika(a[i] != b[j]) {
adalah = salah;
} kalau tidak {
adalah = benar;
}
}jika(adalah == salah) {
System.out.println("bukan Palindrom!");
} lain jika(adalah == benar) {
System.out.println("adalah Palindrom!");
}
}}
[Program 26] Pertanyaan: Silakan masukkan huruf pertama hari dalam seminggu untuk menentukan hari dalam seminggu. Jika huruf pertama sama, lanjutkan menentukan huruf kedua.
1. Analisis program: Lebih baik menggunakan pernyataan situasi. Jika huruf pertama sama, gunakan pernyataan situasi atau pernyataan if untuk menilai huruf kedua.
impor java.util.Scanner; kelas publik Ex26 { public static void main(String[] args){
//Simpan huruf kedua yang dimasukkan oleh pengguna
char mingguKedua;
//Instansiasi kelas Scanner sebagai objek input untuk menerima input pengguna
Masukan pemindai = Pemindai baru (Sistem.in);
//Mulai meminta dan menerima masukan konsol pengguna
System.out.print("Silakan masukkan nilai huruf pertama minggu ini dalam bahasa Inggris dan saya akan membantu Anda menentukan hari dalam seminggu:");
String huruf = input.next();
//Tentukan apakah panjang string input konsol pengguna adalah satu huruf
if (huruf.panjang() == 1){
//Gunakan karakter yang mengambil bit indeks pertama untuk memungkinkan Pemindai menerima input tipe char
char mingguPertama = huruf.charAt(0); saklar (mingguPertama){ huruf 'm':
//Ketika huruf kecil dimasukkan, gunakan fitur struktur saklar untuk mengeksekusi cabang kasus berikutnya dengan pernyataan break untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
kasus 'M':
System.out.println("Senin");
istirahat; huruf 't':
//Ketika huruf kecil dimasukkan, gunakan fitur struktur saklar untuk mengeksekusi cabang kasus berikutnya dengan pernyataan break untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
kasus 'T':
System.out.print("Sejak Selasa (Selasa) dan Kamis (Kamis) keduanya dimulai dengan huruf T, Anda harus memasukkan huruf kedua untuk menilai dengan benar: ");
huruf = masukan.next();
//Tentukan apakah panjang string input konsol pengguna adalah satu huruf
if (huruf.panjang() == 1){
//Gunakan karakter yang mengambil bit indeks pertama untuk memungkinkan Pemindai menerima input tipe char
mingguKedua = huruf.charAt(0);
//Gunakan operator or (||) untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
if (mingguKedua == 'U' || mingguKedua == 'u'){
System.out.println("Selasa");
merusak;
//Gunakan operator or (||) untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
} else if (mingguKedua == 'H' || mingguKedua == 'h'){
System.out.println("Kamis");
merusak;
//Pesan kesalahan konsol
} kalau tidak{
System.out.println("Input error, nilai huruf kedua minggu ini tidak dapat dikenali, program berakhir!");
merusak;
}
} kalau tidak {
//Pesan kesalahan konsol
System.out.println("Input salah, hanya satu huruf yang dapat dimasukkan, program berakhir!");
merusak;
ca}se 'w':
//Ketika huruf kecil dimasukkan, gunakan fitur struktur saklar untuk mengeksekusi cabang kasus berikutnya dengan pernyataan break untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
kasus 'W':
System.out.println("Rabu");
istirahat; huruf 'f':
//Ketika huruf kecil dimasukkan, gunakan fitur struktur saklar untuk mengeksekusi cabang kasus berikutnya dengan pernyataan break untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
kasus 'F':
System.out.println("Jumat");
istirahat; kasus 's':
//Ketika huruf kecil dimasukkan, gunakan fitur struktur saklar untuk mengeksekusi cabang kasus berikutnya dengan pernyataan break untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
kasus 'S':
System.out.print("Karena Sabtu (Sabtu) dan Minggu (Minggu) keduanya dimulai dengan huruf S, Anda harus memasukkan huruf kedua untuk menilai dengan benar: ");
huruf = masukan.next();
//Tentukan apakah panjang string input konsol pengguna adalah satu huruf
if (huruf.panjang() == 1){
//Gunakan karakter yang mengambil bit indeks pertama untuk memungkinkan Pemindai menerima input tipe char
mingguKedua = huruf.charAt(0);
//Gunakan operator or (||) untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
if (mingguKedua == 'A' || mingguKedua == 'a'){
System.out.println("Sabtu");
merusak;
//Gunakan operator or (||) untuk mengimplementasikan fungsi mengabaikan sensitivitas huruf besar-kecil pada input konsol pengguna
} else if (mingguKedua == 'U' || mingguKedua == 'u'){
System.out.println("Minggu");
merusak;
//Pesan kesalahan konsol
} kalau tidak{
System.out.println("Input error, nilai huruf kedua minggu ini tidak dapat dikenali, program berakhir!");
merusak;
}
} kalau tidak{
//Pesan kesalahan konsol
System.out.println("Input salah, hanya satu huruf yang dapat dimasukkan, program berakhir!");
merusak;
bawaan:
//Pesan kesalahan konsol
System.out.println("Input error, huruf pertama nilai minggu tidak dapat dikenali, program berakhir!");
merusak;
}
} kalau tidak{
//Pesan kesalahan konsol
System.out.println("Input salah, hanya satu huruf yang dapat dimasukkan, program berakhir!");
}
}
}
[Program 27] Judul: Temukan bilangan prima dalam jarak 100
kelas publik Ex27 { public static void main(String args[])
{int jumlah,i; untuk(jumlah=2;jumlah<=100;jumlah++)
{untuk(i=2;i<=jumlah/2;i++)
{jika(jumlah%i==0) istirahat;
}jika(i>jumlah/2)
System.out.println(jumlah+"adalah bilangan prima");
}
}
}
[Program 28] Topik: Mengurutkan 10 angka
1. Analisis program: Anda dapat menggunakan metode seleksi, yaitu dari 9 proses perbandingan terakhir, pilih yang terkecil untuk ditukar dengan elemen pertama. Dengan analogi, gunakan elemen kedua untuk membandingkan dengan 8 elemen terakhir dan tukarkan mereka.
impor java.util.Array; impor java.util.Acak; impor java.util.Scanner; public class Ex28 { public static void main(String[] args) { int arr[] = int baru[11];
Acak r=baru Acak(); untuk(int i=0;i<10;i++){
arr[i]=r.nextInt(100)+1;//Dapatkan 10 bilangan bulat dalam 100
}
Array.sort untuk (arr); (int i=0;i<arr.length;i++){
Sistem.keluar.cetak(arr[i]+"/t");
}
System.out.print("/nSilakan masukan nomor int: ");
Pemindai sc=Pemindai baru(Sistem.dalam);
arr[10]=sc.nextInt();//Masukkan nilai int
Aflorrays.sort(arr); (int i=0;i<arr.length;i++){
Sistem.keluar.cetak(arr[i]+"/t");
}
}
}
[Program 29] Pertanyaan: Tentukan jumlah elemen diagonal matriks 3*3
1. Analisis program: Gunakan loop for ganda untuk mengontrol input array dua dimensi, lalu mengakumulasi a[i][i] dan mengeluarkannya.
kelas publik Ex29 { public static void main(String[] args){ jumlah ganda=0; int array[][]={{1,2,3},{4,5, 6},{7,7,8 }}; untuk(int i=0;i<3;i++) untuk(int j=0;j<3;j++){ jika(i==j)
jumlah=jumlah + larik[i][j];
}
Sistem.keluar.println(jumlah);
}
}
[Program 30] Pertanyaan: Ada array yang sudah diurutkan. Sekarang masukkan nomor dan masukkan ke dalam array sesuai dengan aturan aslinya.
1. Analisis program: Tentukan terlebih dahulu apakah bilangan ini lebih besar dari bilangan terakhir, lalu pertimbangkan untuk memasukkan bilangan tengah. Setelah penyisipan, bilangan setelah elemen ini akan dipindahkan kembali satu posisi secara bergantian.
impor java.util.Acak; kelas publik ArraySort { public static void main(String[] args)
{ int suhu=0; int myarr[] = int baru[12];
Acak r=baru Acak(); untuk(int i=1;i<=10;i++)
fomryarr[i]=r.nextInt(1000); (int k=1;k<=10;k++)
fSoyrstem.out.print(myarr[k]+","); (int i=1;i<=9;i++) for(int k=i+1;k<=10;k++) if(myarr[i ]>myarr[k])
{
suhu=myarr[i];
myarr[i]=myarr[k];
myarr[k]=temp;
}
fSoyrstem.keluar.println(""); (int k=1;k<=10;k++)
System.out.print(myarr[k]+",");
fmoyarrr[11]=r.nextInt(1000); (int k=1;k<=10;k++) if(myarr[k]>myarr[11])
{
fteomrp=myarr[11]; (int j=11;j>=k+1;j--)
myarr[j]=myarr[j-1];
myarr[k]=temp;
}
forSystem.keluar.println(""); (int k=1;k<=11;k++)
System.out.print(myarr[k]+",");
}
}
[Program 31] Judul: Menghasilkan array dalam urutan terbalik.
Analisis program: Tukar yang pertama dan terakhir.
Faktanya, lebih mudah untuk mengontrol variabel dengan loop:
untuk(int k=11;k>=1;k--)
System.out.print(myarr[k]+",");
[Program 32] Judul: Ambil 4 hingga 7 digit bilangan bulat a dimulai dari ujung kanan.
Analisis program: Anda dapat memikirkannya seperti ini:
(1) Pertama-tama geser a ke kanan sebanyak 4 bit.
(2) Tetapkan angka dengan 4 bit terbawah semuanya 1 dan sisanya 0. Tersedia~(~0 < <4)
(3) Lakukan & operasikan pada dua hal di atas.
kelas publik Ex32 { public static void main(String[] args)
{ ke dalam a=0; panjang b=18745678;
a=(int) Matematika.lantai(b % Matematika.pow(10,7)/Math.pow(10, 3));
Sistem.keluar.println(a);
}}
【Program 33】
Pertanyaan: Cetak segitiga Yang Hui (diperlukan untuk mencetak 10 baris seperti gambar di bawah)
1. Analisis program:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
kelas publik Ex33 { public static void main(String args[]){ int i,j;
a=kedalaman baru[8][8]; untuk(i=0;i<8;i++){
a[saya][saya]=1;
a[saya][0]=1;
untuk}(i=2;i<8;i++){ untuk(j=1;j<=i-1;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}untuk(i=0;i<8;i++){ untuk(j=0;j<i;j++){
Sistem.keluar.printf(" "+a[i][j]);
}
Sistem.keluar.println();
}
}
}
[Program 34] Pertanyaan: Masukkan 3 angka a, b, c, dan keluarkan sesuai urutan ukurannya.
1. Analisis program: menggunakan metode pointer.
kelas publik Ex34 { public static void main(String[] args)
{int []array = {800,56,500}; for(int i=array.length;--i>=0;)
{untuk(int j=0;j<i;j++)
{if(array[j]>array[j+1])
{int suhu=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}}} for(int n=0;n<array.panjang;n++)
System.out.println(array[n]);
}
}
[Program 35] Judul: Memasukkan array, menukar elemen terbesar dengan elemen pertama, menukar elemen terkecil dengan elemen terakhir, dan mengeluarkan array.
impor java.util.*; kelas publik Ex35 { public static void main(String[] args) { int i, min, max, n, temp1, temp2;
System.out.println("Masukkan panjang array:");
Keyboard pemindai = Pemindai baru (System.in);
n = keyboard.nextInt();
a = int baru[n]; untuk (i = 0; i < n; i++) {
System.out.print("Masukkan "th" + (i + 1) + "data");
a[i] = keyboard.nextInt();
}
//Di atas adalah masukan dari seluruh array
maks = 0;
menit = 0;
//Menetapkan dua tanda, dimulai dengan keduanya menunjuk ke angka pertama
untuk (saya = 1; saya < n; saya++) { jika (a[i] > a[maks])
max = i; //Melintasi array, jika lebih besar dari a[max], tetapkan subskrip arraynya ke max
jika (a[i] < a[menit])
min = i; //Sama seperti di atas, jika kurang dari a[min], tetapkan subskrip arraynya ke min
}
//Perulangan for di atas menemukan nilai maksimum dan minimum, max adalah subskrip dari nilai maksimum, min adalah subskrip dari nilai minimum
suhu1 = a[0];
temp2 = a[min]; //Kedua temp ini hanya untuk digunakan sebagai pertukaran
a[0] = a[maks];
a[max] = temp1; //Pertukaran pertama a[0] dan nilai maksimum a[max]
if (min != 0) { //Jika nilai minimum bukan a[0], jalankan perintah berikut
a[min] = a[n - 1];
a[n - 1] = temp2; //Tukarkan a[min] dan a[n-1]
} else { //Jika nilai minimumnya adalah a[0], jalankan perintah berikut
a[maks] = a[n - 1];
a[n - 1] = suhu1;
}
untuk (i = 0; i < n; i++) {//Array keluaran
Sistem.keluar.cetak(a[i] + " ");
}}}
[Program 36] Soal: Ada n bilangan bulat, sehingga bilangan sebelumnya dimundurkan sebanyak m posisi, dan m bilangan terakhir menjadi m bilangan pertama [Program 37]
Pertanyaan: Ada n orang yang duduk melingkar dan memberi nomor secara berurutan. Mulai menghitung dari orang pertama (menghitung dari 1 hingga 3).
impor java.util.scanner;
Pemindai S = Pemindai Baru (System.in);
arr [i] = true; // Saat subskrip benar, itu berarti masih ada di lingkaran
} int leftcount = n;
if (arr [index] == true) {// Saat berada di lingkaran
countnum ++; // menghitung kenaikan
if (countnum == 3) {// Saat melaporkan 3
countnum = 0; // Lanjutkan menghitung dari nol
arr [index] = false; // orang ini keluar dari lingkaran
LeftCount -; // Jumlah orang yang tersisa dikurangi
}
}
indeks ++; // Setiap kali angka dilaporkan, subskrip meningkat satu
if (index == n) {// Ini adalah jumlah melingkar.
indeks = 0; // Atur indeks ke nol dan mulai lagi.
}
} untuk (int i = 0; i <n; i ++) {if (arr [i] == true) {
Sistem.keluar.println(i);
}
}
}
}
【Program 38】
Pertanyaan: Tulis fungsi untuk menemukan panjang string.
impor java.util.scanner;
{
Pemindai S = Pemindai Baru (System.in);
System.out.println("Silakan masukkan string");
String mys = s.next ();
System.out.println (str_len (mys));
} public static int str_len (string x)
{return x.length ();
}
}
Pertanyaan: Tulis suatu fungsi. 1+1/3+..+1/n
【Program 39】
Topik: Penyortiran String.
Impor Java.util.*;
{
ArrayList <String> list = ArrayList baru <string> ();
list.add ("010101");
list.add ("010003");
list.add ("010201");
Collections.sort for (list);
System.out.println (list.get (i));
}}}
【Program 40】
Topik: Ada banyak buah persik di pantai, dan lima monyet harus membaginya. Monyet pertama membagi tumpukan buah persik menjadi lima bagian. Monyet kedua membagi persik yang tersisa menjadi lima bagian yang sama, dan ada satu lagi. Ada di pantai?
Kelas Publik DG {
Int Ts statis = 0; // Jumlah total buah persik
int fs = 1; // Catat jumlah poin
static int hs = 5; // jumlah monyet ...
int tsscope = 5000; // kisaran nilai dari jumlah buah persik.
publik int ft (int t) {if (t == tsscope) {
// Batalkan rekursi saat jumlah buah persik mencapai kisaran nilai maksimum
System.out.println ("end");
kembali 0;
} else {if ((t-1)%hs == 0 && fs <= hs) {if (fs == hs)
{
System.out.println ("Kondisi pemisah persik dipenuhi ketika jumlah buah persik =" +ts +"");
}
fs+= 1;
return ft ((t-1)/5*4); // mengembalikan jumlah total yang tersisa setelah monyet mengambil satu bagian
}kalau tidak
{
// kondisinya tidak terpenuhi
FS = 1; // Jumlah menitnya diatur ulang ke 1
return ft (ts += 1); // tambahkan +1 ke jumlah buah persik
}}}
public static void main (string [] args) {dg baru (). ft (0);
}
}