Bài thực hành cơ bản
Bài 1
Viết chương trình nhập vào một số nguyên n và in ra số nhị phân tương ứng
với n.
Code mẫu
import java.util.Scanner;
public class Bai2{
public static void main(String[] arfg) {
Scanner input = new Scanner(System.in);
int n;
System.out.print("Nhap n: ");
n=input.nextInt();
String a=new String();
while(n>0)
{
char temp=(char)((n%2)+48);
a=a+temp;
n/=2;
}
for(int i=a.length()-1;i>=0;i--) System.out.print(a.charAt(i));
}
}
Bài 2:
Nhập vào ngày, thàng, năng và cho biết đó là ngày thứ bao nhiêu trong năm (biết
rằng một năm có 365 ngày hoặc 366 ngày với năm nhuận).
Code mẫu
import java.util.Scanner;
public class Bai3{
private int ngay, thang, nam;
private Scanner input = new Scanner(System.in);
public void input()
{
System.out.print("Nhap ngay: "); ngay = input.nextInt();
System.out.print("Nhap thang: "); thang = input.nextInt();
System.out.print("Nhap nam: "); nam = input.nextInt();
}
public boolean KiemTraNamNhuan() //Ham kiem tra nam nhuan
{
if(nam%4==0 &&(nam%4==0 || nam % 100 !=0)) return true;
return false;
}
public int SoNgay(int thang) //Hàm kiểm tra số ngày trong tháng
{
if(thang == 2)
{
if(KiemTraNamNhuan()==true) return 29;
return 28;
}
if(thang==4||thang==6||thang==9||thang==11||thang==30) return 30;
return 31;
}
public void output()
{
int ngay=this.ngay;
for(int thang=1;thang<this.thang;thang++)
{
ngay+=SoNgay(thang);
}
System.out.printf("Ngay ban vua nhap %d/%d/%d la ngay thu %d trong nam",this.ngay, this.thang,this.nam, ngay);
}
public static void main(String[] args) {
Bai3 A= new Bai3();
A.input();
A.output();
}
}
Bài 3
Viết chƣơng trình tìm các số nguyên tố nhỏ hơn một số n cho trƣớc
a. Chỉ sử dụng chu trình for
b. Chỉ sử dụng chu trình while
c. Chỉ sử dụng chu trình do-while
Code mẫu
import java.util.Scanner;
public class Bai4 {
private int n;
public boolean isPrime(int n)
{
if(n<2) return false;
for(int i=2;i<=Math.sqrt(n); i++)
{
if(n%i==0) return false;
}
return true;
}
public void ouputPrime()
{
Scanner sc = new Scanner(System.in);
System.out.print("Nhap n: "); this.n = sc.nextInt();
//a. Chỉ sử dụng chu trình for
System.out.print("tìm các số nguyên tố nhỏ hơn một số n Chỉ sử dụng chu trình for\n");
for(int i=1;i<this.n;i++)
{
if(isPrime(i)) System.out.print(" "+i);
}
int i=0;
//b. Chỉ sử dụng chu trình while
System.out.print("\ntìm các số nguyên tố nhỏ hơn một số n Chỉ sử dụng chu trình while\n");
while(i<n)
{
if(isPrime(i)) System.out.print(" "+i);
i++;
}
//c. Chỉ sử dụng chu trình do-while
System.out.print("\ntìm các số nguyên tố nhỏ hơn một số n Chỉ sử dụng chu trình do...while\n");
int j=0;
do{
if(isPrime(j)) System.out.print(" "+j);
j++;
}while(j<n);
}
public static void main(String[] args) {
Bai4 A= new Bai4();
A. ouputPrime();
}
}
Bài 4:
Xây dựng lớp ToanHoc, với n là số nguyên dương.
- Kiểm tra xem một số nguyên n có phải là số nguyên tố hay không ?
- Kiểm tra xem một nguyên n có phải là số hoàn hảo hay không ?
- In ra các số chính phương <=n (n nhập tử bàn phím).
- Tính phần tử thứ n của dãy Fibonaci: public static int tinhFibo(int n)
Với công thức truy hồi đượcc tính như sau:
Code mẫu
import java.util.Scanner;
public class Bai5{
public boolean checkNguyenTo(int n)
{
if(n <2) return false;
for(int i=2;i<=Math.abs(n);i++)
{
if(n%i==0) return false;
}
return true;
}
public boolean checkHoanHao(int n)
{
int s=1;
for(int i=2;i<n;i++)
{
if(n%i==0) s+=i;
}
if(s==n) return true;
return false;
}
public boolean checkChinhPhuong(int n)
{
if((int)Math.sqrt(n)*(int)Math.sqrt(n) == n) return true;
return false;
}
public static int tinhFibo(int n)
{
if(n==0) return 0;
if(n<=2) return 1;
return (tinhFibo(n-2)+tinhFibo(n-1));
}
public static void main(String[] args) {
Bai5 A= new Bai5();
Scanner sc=new Scanner(System.in);
System.out.print("Nhap n: ");
int n=sc.nextInt();
System.out.print(n+ " co la so nguyen to: "+ A.checkNguyenTo(n));
System.out.print("\n"+n+ " co la so hoan hao: "+ A.checkHoanHao(n));
System.out.print("\nSo chinh phuong <= "+n+" la: ");
for(int i=1;i<=n;i++)
{
if(A.checkChinhPhuong(i)) System.out.print(" "+i);
}
System.out.printf("\nPhan tu thu %d cua day Fibonaci la: %d",n, A.tinhFibo(n));
}
}
Bài 5:
- Tính tổng dãy
S=-1+2-3+……(-1)^n - Tính tổng dãy:
S=1!+2!+3!+……+n! - Nhập n, nếu n lẻ : tính tổng các số lẻ <n, nếu n chẵn: tính tổng các số chẵn <n.
import java.util.Scanner;
public class Bai6 {
public int Giaithua(int n)
{
if(n==0) return 0;
int S=1;
for(int i=2;i<=n;i++)
{
S*=i;
}
return S;
}
public static void main(String[] args) {
Bai6 A = new Bai6();
Scanner sc=new Scanner(System.in);
System.out.print("Nhap n: ");
int n=sc.nextInt();
// ý số 1
int S=0;
for(int i=1;i<=n;i++)
{
if(i%2==0) S-=i;
else S+=i;
}
System.out.print("1. Tong day S = "+S);
// ý số 2
S=0;
for(int i=0;i<=n;i++)
{
S+=A.Giaithua(i);
}
System.out.print("\n2. Tong day S = "+S);
// ý số 3
S=0;
int i;
if(n%2==0) i=0;
else i=1;
while(i<n)
{
S+=i;
i+=2;
}
System.out.print("\n3. Tong day S = "+S);
}
}
Bài 6:
Tính tổng dãy:
import java.util.Scanner;
public class Baithuchanhnangcao {
public int Giaithua(int n)
{
if(n==0) return 0;
int S=1;
for(int i=2;i<=n;i++)
{
S*=i;
}
return S;
}
public static void main(String[] args) {
Baithuchanhnangcao A = new Baithuchanhnangcao();
Scanner sc=new Scanner(System.in);
System.out.print("Nhap n: ");
int n=sc.nextInt(), x,k;
System.out.print("Nhap x: "); x=sc.nextInt();
System.out.print("Nhap k: "); k=sc.nextInt();
float S=0;
for(int i=1;i<=n;i++)
{
S+=A.Giaithua(i)/(Math.pow(x,n) + (Math.pow(-1, n+1) * Math.pow(k, n)));
}
System.out.print("Tong S = "+S);
}
}