Tong Hop 42 Bai Tap Lap Trinh Java Co Ban + Dap An – BÀI TẬP LÀM QUEN JAVA Yêu cầu: Mỗi sinh viên – StuDocu

BÀI TẬP LÀM QUEN JAVA
Yêu cầu: Mỗi sinh viên làm ít nhất 30 bài tập.
Hạn nộp: 1 tuần – qua email hoặc nộp trực tiếp cho giáo viên vào ngày 01/09/

####### =================================================================

Bài 1. Viết chương trình tìm ước số chung lớn nhất, bội số chung nhỏ nhất của hai số tự nhiên a và b.

Bài 2. Viết chương trình chuyển đổi một số tự nhiên ở hệ cơ số 10 thành số ở hệ cơ số b bất kì (1< b≤ 36).

Bài 3. Hãy viết chương trình tính tổng các chữ số của một số nguyên bất kỳ. Ví dụ: Số 8545604 có tổng các

chữ số là: 8+5+4+5+6+0+4= 32.

Bài 4. Viết chương trình phân tích một số nguyên thành các thừa số nguyên tố

Ví dụ: Số 28 được phân tích thành 2 x 2 x 7

Bài 5. Viết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn n cho trước.

Bài 6. Viết chương trình liệt kê n số nguyên tố đầu tiên.

Bài 7. Dãy số Fibonacci được định nghĩa như sau: F0 =1, F1 = 1; Fn = Fn-1 + Fn-2 với n>=2. Hãy viết

chương trình tìm số Fibonacci thứ n.

Bài 8. Một số được gọi là số thuận nghịch độc nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn

nhận được một số giống nhau. Hãy liệt kê tất cả các số thuận nghịch độc có sáu chữ số (Ví dụ số:
558855).

Bài 9. Viết chương trình liệt kê tất cả các xâu nhị phân độ dài n.

Bài 10. Viết chương trình liệt kê tất cả các tập con k phần tử của 1, 2, ..,n (k≤n).

Bài 11. Viết chương trình liệt kê tất cả các hoán vị của 1, 2, .., n.

Bài 12. Tính giá trị của đa thức P(x)=anxn+ an-1xn-1+ … + a 1 x+ a 0 theo cách tính của Horner: P(x)=((((anx+ an-

1 )x+ an-2… + a 1 )x+ a 0

Bài 13. Nhập số liệu cho 2 dãy số thực a 0 , a 1 ,…, am-1 và b 0 , b 1 ,…, bn-1. Giả sử cả 2 dãy này đã được sắp

theo thứ tự tăng dần. Hãy tận dụng tính sắp xếp của 2 dãy và tạo dãy c 0 , c 1 ,…, cm+n-1 là hợp của 2 dãy
trên, sao cho dãy ci cũng có thứ tự tăng dần.

Bài 14. Nhập số liệu cho dãy số thực a 0 , a 1 ,…, an-1. Hãy liệt kê các phần tử xuất hiện trong dãy đúng một

lần.

Bài 15. Nhập số liệu cho dãy số thực a 0 , a 1 ,…, an-1. Hãy liệt kê các phần tử xuất hiện trong dãy đúng 2 lần.

Bài 16. Nhập số liệu cho dãy số thực a 0 , a 1 ,…, an- 1. In ra màn hình số lần xuất hiện của các phần tử.

Bài 17. Nhập số n và dãy các số thực a 0 , a 1 ,…, an-1. Không đổi chỗ các phần tử và không dùng thêm mảng số

thực nào khác (có thể dùng mảng số nguyên nếu cần) hãy cho hiện trên màn hình dãy trên theo thứ tự
tăng dần.

Bài 18. Nhập một xâu ký tự. Đếm số từ của xâu ký tự đó. Thí dụ ” Trường học ” có 2 từ.

Bài 19. Viết chương trình liệt kê tất cả các số nguyên tố có 5 chữ số sao cho tổng của các chữ số trong mỗi số

nguyên tố đều bằng S cho trước.

Bài 20. Nhập một số tự nhiên n. Hãy liệt kê các số Fibonaci nhỏ hơn n là số nguyên tố.

Bài 21. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

a) Tính tổng các chữ số của n.
b) Phân tích n thành các thừa số nguyên tố.

Bài 22. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

a) Liệt kê các ước số của n. Có bao nhiêu ước số.
b) Liệt kê các ước số là nguyên tố của n.

Bài 23. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

a) Liệt kê n số nguyên tố đầu tiên.
b) Liệt kê n số Fibonaci đầu tiên.

Bài 24. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn

0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:
a) Tìm phần tử lớn nhất của ma trận cùng chỉ số của số đó.
b) Tìm và in ra các phần tử là số nguyên tố của ma trận (các phần tử không nguyên tố thì thay bằng số 0).
c) Sắp xếp tất cả các cột của ma trận theo thứ tự tăng dần và in kết quả ra màn hình.

Bài 25. Viết chương trình liệt kê các số nguyên có từ 5 đến 7 chữ số thoả mãn:

a) Là số nguyên tố.
b) Là số thuận nghịch.
c) Mỗi chữ số đều là số nguyên tố

Bài 26. Viết chương trình liệt kê các số nguyên có 7 chữ số thoả mãn:

a) Là số nguyên tố.
b) Là số thuận nghịch.
c) Tổng các chữ số của số đó là một số thuận nghịch

Bài 27. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và

nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:
a) Tìm phần tử lớn nhất và lớn thứ 2 trong mảng cùng chỉ số của các số đó.
b) Sắp xếp mảng theo thứ tự giảm dần.
c) Nhập một số nguyên x và chèn x vào mảng A sao cho vẫn đảm bảo tính sắp xếp giảm dần.

Bài 28. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn

0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:
a) Tìm phần tử lớn nhất của ma trận cùng chỉ số của số đó.
b) Tìm và in ra các phần tử là số nguyên tố của ma trận (các phần tử không nguyên tố thì thay bằng số 0).
c) Tìm hàng trong ma trận có nhiều số nguyên tố nhất.

Bài 29. Viết chương trình nhập các hệ số của đa thức P bậc n (0<n<20). Thực hiện các chức năng sau:

a) Tính giá trị của đa thức P theo công thức Horner:
P(x)=((((anx+ an-1)x+ an-2… + a 1 )x+ a 0
b) Tính đạo hàm của đa thức P. In ra các hệ số của đa thức kết quả.
c) Nhập thêm đa thức Q bậc m. Tính tổng hai đa thức P và Q.

Bài 30. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và

nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

b. Đếm số từ trong Buffer.
c. Tìm tần xuất xuất hiện từ X bất kì trong buffer.
d. Mã hóa buffer bằng kĩ thuật Parity Bits
e. Giải mã buffer được mã hóa bằng kĩ thuật parity.
f. Thay thế từ X bằng từ Y.

Bài 41. Hãy viết chương trình thực hiện những thao tác dưới đây:

a. Liệt kê các phần tử của tập

####### 

####### 

####### 

####### 

####### 

####### 

####### 

####### 

####### 

####### 

####### 

   

n

i

D x x x xn axjj b
1

1 , 2 ,, : ; trong đó a 1 , a 2 ,.., an , b là các số

nguyên dương, xi  {0, 1} j =1, 2, ..,n.

b. Liệt kê các phần tử của tập

####### 

####### 

####### 

####### 

####### 

####### 

####### 

####### 

####### 

####### 

####### 

   

k

i

D x x x xk axjj b
1

1 , 2 ,, : ; trong đó a 1 , a 2 ,.., an , b là các số

nguyên dương, xi  {0, 1} j =1, 2, ..,n.

c. Tính giá trị nhỏ nhất của hàm mục tiêu 

####### 

n

i

xf x xn xc ii
1

( 1 , 2 ,.., ) trong đó

   

####### 

####### 

####### 

####### 

####### 

####### 

     

n

i

x x x xn x x xn xa ii xb i ai Z
1

####### 1 , 2 ,.., 1 , 2 ,.., : ; ,1,

d. Tính giá trị nhỏ nhất của hàm mục tiêu ( xf  x 1 , x 2 ,.., xn )     xC 1 , x 2  xC 1 , x 2 ..  xC n  1 , xn    xC n , x 1 ;

trong đó x 1  ,1 x 1 , x 2 ,.., xn  là tập các hoán vị của 1, 2, .., n. C[i,j]  Z+ (i, j =1, 2,..,n).

Bài 42. Ma trận nhị phân là ma trận mà các phần tử của nó hoặc bằng 0 hoặc bằng 1. Cho A = [aij], B = [bij]

là các ma trận nhị phân cấp m × n (i =1, 2,..,m. j= 1, 2, ..,n). Ta định nghĩa các phép hợp, giao, nhân logic và

phép lũy thừa cho A và B như sau:

  • Hợp của A và B, được kí hiệu là AB là ma trận nhị phân cấp m×n với phần tử ở vị trí (i, j) là aij bij.
  • Giao của A và B, được kí hiệu là AB là ma trận nhị phân cấp m×n với phần tử ở vị trí (i,j) là aijbij.
  • Tích boolean của A và B, được kí hiệu là AB là ma trận nhị phân cấp m×n với phần tử ở vị trí (i,j) là
    cij = (ai1b1j)  (ai2b2j)..( (aikbkj).
  • Nếu A là một ma trận vuông nhị phân cấp n và r là một số nguyên dương. Lũy thừa Boolean bậc r của
    A được kí hiệu là Ar  A  A .. A (r lần).


  





1 1 0

0 1 1

1 1 0
0 1 1

1 1 0
;
1 0

0 1

1 0
A B A B

Hãy viết chương trình thực hiện các thao tác sau:

a. Cho A = [aij], B = [bij]. Tìm C = AB.
b. Cho A = [aij], B = [bij]. Tìm C = AB.
c. Cho A = [aik], B = [bkj]. Tìm C = AB.
d. Cho A = [aij] tìm Ar.

;
0 1 0

0 0 0
;
1 1 0

1 1 1
1 1 0

0 1 1
,
0 1 0

1 0 1



 



  







A  B A B A B

Đáp án tham khảo

Bài 1 :

package bai01;

import java.util;

public class Main {

public static int nhap()
{
Scanner input = new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static int UCLN(int a, int b){
while(a!= b){
if(a>b) a= a-b;
else b= b-a;
}
return (a);
}
public static void main(String[] args) {
System.out(“Nhap a”);
int a = nhap();
System.out(“Nhap b”);
int b= nhap();
System.out(“Uoc chung lon nhat cua “+a+” va “+b+” la: “+UCLN(a,b));
System.out(“Boi chung nho nhat cua “+a+” va “+b+” la: “+((a*b)/UCLN(a,b)));
}

}

Bài 02 :

package bai02;
import java.util;
public class Main {

}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static int tinhTong(long i){
int sum=0;
long n;
while(i!=0){
n= i%10;
sum+= n;
i/=10;
}
return (sum);
}
public static void main(String[] args){
System.out(“Nhap n”);
int n= nhap();
System.out(“Tong cua so “+n+” = ” +tinhTong(n));
}

}

Bài 04 :

package bai04;
import java.util;
public class Main {

public static void phanTich(int n){
int i=2;
while(n>1){
if(cachamchung(i)){
if(n%i==0){
System.out(i+”.”);
n/=i;
}
else i++;
}
else i++;
}
}
public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();

check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static void main(String[] args) {
System.out(“Nhap n”);
int n= nhap();
System.out(“n= ” );
phanTich(n);
}

}

Bài 05 :

package bai05;
import java.util;
public class Main {

public static void lietKe(int n){
System.out(” 2″);
for(int i=3;i<n;i+=2){
if(cachamchung(i))System.out(” “+i);
}
}
public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static void main(String[] args) {
System.out(“Nhap n”);
int n= nhap();
System.out(“Cac so nguyen to nho hon “+n+ ” “);
lietKe(n);

import java.util;
public class Main {

public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static void main(String[] args) {
System.out(“Nhap n”);
int n= nhap();
int[] f= new int[n+1];
f[0]= 1; f[1]= 1;
for(int i=2;i<=n;i++){
f[i]= f[i-1]+f[i-2];
}
System.out(“So Fibonanci thu “+n+” la: f[“+n+”]= “+f[n]);
}

}

Bài 08 :

package bai08;

public class Main {

public static boolean testSoThuanNghich(int n){
StringBuilder xau= new StringBuilder();
String str= “”+n;
xau(str);
String check= “”+xau();
if(str(check)) return true;
else return false;
}
public static void main(String[] args) {
int n,count=0;
for(n=100000 ; n<= 999999 ; n++){

if(testSoThuanNghich(n)){
System.out(n);count++;
}
}
System.out(“Co “+count+” so thuan nghich co 6 chu so”);
}

}

Bài 09 :

package bai09;
import java.util;
public class Main {
public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static void main(String[] args) {
System.out(“Nhap n”);
int n= nhap();
int[] array= new int[n];
int tich;
do{
tich= 1;
//In ra mang va tinh tich cac phan tu trong mang
System.out(“”);
for(int j=0 ; j<n ; j++){
System.out(” ” +array[j]);
tich*= array[j];
}
int i=n-1;
do{
if(array[i]==0){
array[i]=1;
for(int j=n-1 ; j>i ;j–){
array[j]= 0;

int[] array= new int[n+1];
int k;
System.out(“Liet ke tat ca cac tap con k phan tu cua 1,2,..,”+n+” : “);
for(k=1 ; k<=n ; k++){
System.out(“\n Tap con “+k+” phan tu: “);
try_backTrack(array,n,k,1);
}
}

}

Bài 11 :

package bai11;
import java.util;
public class Main {
public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static void main(String[] args) {
System.out(“Nhap n”);
int n= nhap();
int[] array= new int[n+2];
int i,j,k=n-1,temp,check=1;
for(i=0 ; i<n ; i++){
array[i]= i+1;
}
System.out(“Cac hoan vi ke la: “);
try{
i= n-2;
while(check>0){
//In ra hoan vi
System.out(” “);
for(j=0 ; j<n ; j++){
System.out(” “+array[j]);
}
for(i= n-2 ; i>=0 ; i–){
check= 1;
if(array[i] < array[i+1]){

if(i==n-2){
temp= array[i];
array[i]= array[n-1];
array[n-1]= temp;
break;
}
else{
//Tim so a[k] nho nhat ma >a[i] trong cac so ben phai a[i]
k= i+1;
for(j=i+1 ; j<n ; j++){
if(array[i+1]>array[j] && array[j]>array[i]) k=j;

}
//Doi cho a[k] va a[i]
temp= array[i];
array[i]= array[k];
array[k]= temp;
//Sap xep lai tu a[i+1] toi a[n]
for(j=i+1 ; j<n ; j++){
for(int m= i+1 ; m<n ; m++){
if(array[j]<array[m]){
temp= array[j];
array[j]= array[m];
array[m]= temp;
}
}
}
break;
}
}
else {
check=0;
// break;
}
}
//if(i==0)check=0;
}
}catch(Exception e){}
}
}

Bài 12 :

package bai12;
import java.util;
public class Main {
public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;

n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static void inArray(int[] a, int begin , int end){
System.out();
int i;
for(i=begin ; i<end ; i++){
System.out(” “+a[i]);
}
System.out();
}
public static void themPhanTu(int[] a,int n,int pt){
a[0]= pt;
Arrays(a);
}
public static void main(String[] args) {
System.out(“Nhap n”);
int n= nhap();
System.out(“Nhap m”);
int m= nhap();
int i;
int[] a= new int[n+m];
int[] b= new int[m];
//Nhap vao mang A va sap xep theo thu tu tang dan
System.out(“nhap mang A: “);
for(i=0 ; i<n ; i++){
System.out(“\n Nhap phan tu thu “+i+” = “);
a[i]= nhap();
}
Arrays(a);
//Nhap vao mang B va sap xep theo thu tu tang dan
System.out(“nhap mang B: “);
for(i=0 ; i<m ; i++){
System.out(“\n Nhap phan tu thu “+i+” = “);
b[i]= nhap();
}
Arrays(b);
//Gop mang b vao mang a
for(i=0 ; i<m ; i++){
themPhanTu(a, n+m+1, b[i]);
}
inArray(a, 0, n+m);
}}

Bài 14 :

package bai14;
import java.util;
public class Main {

public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static int countElement(int a[], int n, int i){
int count= 0;
for(int j=0 ; j<n ; j++){
if(a[j]== i)
count ++;
}
return (count);
}
public static void main(String[] args) {
int n,i;
System.out(“Nhap n= “);
n= nhap();
int[] array= new int[n];
for(i=0 ; i<n ; i++){
System.out(“Nhap phan tu thu ” +(i+1)+” “);
array[i]= nhap();
}
System.out(“Cac phan tu trong day xuat hien 1 lan: “);
for(i=0 ; i<n ; i++){
if(countElement(array, n, array[i])==1)
System.out(” “+array[i]);
}
}
}

Bài 15 :

package bai16;
import java.util;
public class Main {
public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static int countElement(int a[], int n, int i){
int count= 0;
for(int j=0 ; j<n ; j++){
if(a[j]== i)
count ++;
}
return (count);
}
public static void main(String[] args) {
int n,i;
System.out(“Nhap n= “);
n= nhap();
int[] array= new int[n];
for(i=0 ; i<n ; i++){
System.out(“Nhap phan tu thu ” +(i+1)+” “);
array[i]= nhap();
}
for(i=0 ; i<n ; i++){
if(countElement(array, i, array[i])==0){
System.out(“Phan tu “+array[i]+ ” xuat hien “+countElement(array, n,
array[i])+” lan”);
}
}
}

}

Bài 17 :

package bai17;

import java.util;
public class Main {
public static int nhap(){
Scanner input= new Scanner(System);
boolean check= false;
int n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static float nhapFloat(){
Scanner input= new Scanner(System);
boolean check= false;
float n=0;
while(!check){
System.out(” “);
try{
n= input();
check= true;
}catch(Exception e){
System.out(“Ban phai nhap so! hay nhap lai…”);
input();
}
}
return (n);
}
public static int viTriMinFloat(float a[], int n){
float min= a[0];
int key= 0;
for(int j=0 ; j<n ; j++){
if(min>a[j]){
min= a[j];
key= j;
}
}
return (key);
}
public static float maxFloat(float a[], int n){
float max= a[0];
for(int j=0 ; j<n ; j++){
if(max<a[j]) max= a[j];
}
return (max);
}
public static void main(String[] args) {