Tính tổng, trung bình cộng và tìm giá trị lớn nhất của các số nguyên vừa nhập.. Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số đó.. d Tìm và in ra tất cả các số nguyên tố nh
Trang 1Chương 1: BÀI TẬP
1 Các phép toán – PHÉP GÁN:
1.1 Nhập vào bán kính hình tròn Tính chu vi và diện tích hình tròn
import java.util.Scanner;
public class Bai1_1 {
public static void main(String[] args) {
// Input
Scanner in = new Scanner(System.in);
System.out.print( "Nhap ban kinh hinh tron:" );
double r = in.nextDouble();
// Process
double d = 2 * Math.PI * r;
double s = Math.PI * r * r;
// Output
System.out.println( "Chu vi la " + d);
System.out.println( "Dien tich la " + s);
}
}
1.2 Nhập vào một góc có số đo độ Đổi góc đó ra đơn vị radian và tính sin, cosin, tg, cotg của góc
đó
1.3 Nhập vào tổng số giây Hãy chuyển đổi sang giờ, phút, giây và in ra theo dạng h:m:s
Ví dụ: 1999 giây => 5:3:19
public class Bai1_3 {
public static void main(String[] args) {
// Input
Scanner in = new Scanner(System.in);
System.out.print( "Nhap so giay :" );
int second = in.nextInt();
// Process
int hour = second / 3600;
second = second % 3600;
int minute = second / 60;
second = second % 60;
// Output
System.out.println(hour + ":" + minute + ":" + second);
}
}
1.4 Nhập vào độ cao h của một vật rơi tự do Tính thời gian và vận tốc của vật lúc chạm đất theo công thức sau: Thới gian t =
g
h
và vận tốc v = gt
1.5 Nhập vào các số thực xA, yA, xB, yB là hoành độ và tung độ của 2 điểm A, B Tính khoảng cách d giữa 2 điểm theo công thức d = (xAxB)2 (yAyB)2
Trang 22 CÂU LỆNH RẼ NHÁNH
1.6 Cho 2 số thực a và b Tìm số lớn nhất giữa 2 số đó
1.7 a)Cho vào 1 năm dương lịch Xét năm đó có phải là năm nhuận không b) Cho vào tháng và năm Tính số ngày trong tháng
public class Bai2_2 {
static void cauA(){
Scanner in = new Scanner(System.in);
System.out.print( "Nhap nam: " );
int year = in.nextInt();
if ((year % 4 == 0 && year % 100 != 0)
|| (year % 400 == 0))
System.out.println(year + " la nam nhuan" );
else
System.out.println(year + " khong la nam nhuan" );
}
static void cauB(){
Scanner in = new Scanner(System.in);
System.out.print( "Nhap thang: " );
int month = in.nextInt();
System.out.print( "Nhap nam: " );
int year = in.nextInt();
int days = 0;
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0)
|| (year % 400 == 0))
days = 29;
else days = 28;
break;
}
System.out.println( "So ngay la : " + days);
}
public static void main(String[] args) {
cauA();
cauB();
}
}
1.8 Cho các hệ số a và b của phương trình ax + b = 0 Tìm nghiệm của phương trình
1.9 Cho các hệ số a, b và c của phương trình ax2 + bx + c = 0 Tìm nghiệm của phương trình
Trang 3public class GiaiPTB2 {
public static void main(String[] args) {
float a, b, c, x1, x2;
// Nhap du lieu
Scanner in = new Scanner(System.in);
System.out.print( "Hay so cac he so a, b, c:" );
a = in.nextFloat();
b = in.nextFloat();
c = in.nextFloat();
if (a == 0) {
System.out.println( "Day la phuong trinh bac 1" );
if (b != 0) {
System.out.println( "Nghiem cua phuong trinh x = " + -c / b); } else if (c != 0) {
System.out.println( "Phuong trinh vo nghiem" );
} else {
System.out.println( "Phuong trinh co vo so nghiem" );
}
} else { // a !=0
float delta = b * b - 4 * a * c;
if (delta < 0) {
System.out.println( "Phuong trinh vo nghiem" );
} else if (delta == 0) {
System.out.println( "Phuong trinh co nghiem kep x=" + -b/(2*a)); } else {
x1 = (-b + (float) Math.sqrt(delta)) / (2 * a);
x2 = (-b - (float) Math.sqrt(delta)) / (2 * a);
System.out.println( "Phuong trinh có 2 nghiem" );
System.out.println( "x1 = " + x1);
System.out.println( "x2 = " + x2);
}
}
}
}
1.10 Cho a1, b1, a2, b2 là các điểm đầu mút của 2 đoạn [a1, b1] và [a2, b2] trên trục số Tìm độ dài phần giao và phần hợp của 2 đoạn
public class DoanChung {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print( "Nhap a1 va b1: " );
int a1 = in.nextInt();
int b1 = in.nextInt();
System.out.print( "Nhap a2 va b2: " );
int a2 = in.nextInt();
int b2 = in.nextInt();
int d1 = a1 < a2 ? a2 : a1;
int d2 = b1 < b2 ? b1 : b2;
if (d1 <= d2)
System.out.println( "Doan chung la [" + d1 + "," + d2 + "]" );
else
System.out.println( "Doan chung la []" );
}
}
Trang 41.11 Cho 3 số a, b, c Xét 3 số đó có là 3 cạnh của tam giác Nếu đúng, thì tính chu vi, diện tích, và
số đo độ của các góc của tam giác
Hướng dẫn:
Để 3 số là các cạnh của một tam giác thì tổng 2 số bất kỳ phải lớn hơn số còn lại
Diện tích tam giác là S = p(pa)(pb)(pc) với p là nửa chu vi
Tính số đo góc A: cosA =
bc
a c b
2
2 2
2
, tgA = 1
cos
1
2
A
, A = arctg(tgA)
public class Triangle {
private double , b , c ;
public Triangle(double a, double b, double c) {
this = a;
this = b;
this = c;
}
public boolean isTriangle() {
if( + b > c && b + c > a && c + a > b ) return true;
else return false;
}
public double perimeter() {
return + b + c ;
}
public double area() {
double p = ( a + b + c ) / 2;
return Math.sqrt(p*(p-a )*(p- b )*(p- c ));
}
public double angleA() {
double cosA = ( b b + c c - a * a )/(2* b c );
double tgA = Math.sqrt(1/(cosA*cosA) - 1);
return (Math.atan(tgA) * 180) / Math PI;
}
public static void main(String[] args) {
Triangle triangle = new Triangle(5, 4, 3);
if (!triangle.isTriangle())
System.out.println( "Day khong la tam giac" );
else {
System.out.println( "Day la tam giac" );
System.out.printf( "Chu vi = %.2f\n" , triangle.perimeter());
System.out.printf( "Dien tich = %.2f\n" , triangle.area());
System.out.printf( "Goc A = %.2f\n" , triangle.angleA());
}
}
}
1.12 Cho 3 số a, b, c Xét 3 số đó có là 3 cạnh của tam giác Nếu đúng, thì kiểm tra tam giác đó là tam giác gì? (đều, cân, vuông, vuông cân,thường)
1.13 Cho năm dương lịch n Xác định năm âm lịch tương ứng Ví dụ: 1998 là năm Mậu Dần
1.14 Cho số tự nhiên n < 1000 Tính ra cách viết số đó bằng chữ Ví dụ: 125 đọc là Một trăm hai mươi lăm
Trang 51.15 Cho 3 số nguyên d, m, y Xét xem ngày được tạo bởi 3 số đó theo dạng d/m/y có hợp lệ không? Nếu hợp lệ, thì in ra ngày hôm sau của ngày đó Ví dụ: Ngày 29/2/1996 hợp lệ và ngày hôm sau là 1/3/1996
Trang 63 CẤU TRÚC VÒNG LẶP for, while, do while
1.16 Nhập từ bàn phím vào các số nguyên và dừng lại khi nhập giá trị 0 Tính tổng, trung bình cộng
và tìm giá trị lớn nhất của các số nguyên vừa nhập
1.17 Cho số tự nhiên n
a) Đếm số chữ số của số nguyên đó
b) Tìm số đảo ngược của số n
public class CountNumber {
public int countDigit(int n) {
int count = 0;
int t = n;
while (t != 0) {
t = t / 10;
count++;
}
return count;
}
public int revert(int n) {
int result = 0;
int t = n;
while (t != 0) {
// lay chu so cuoi cung
int du = t % 10;
// noi du vao cuoi result
result = result * 10 + du;
// bo bot chu so cuoi cua t
t = t / 10;
}
return result;
}
public static void main(String[] args) {
CountNumber countNumber = new CountNumber();
System.out.println( "Nhap so:" );
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println( "So chu so la " + countNumber.countDigit(n));
System.out.println( "So dao nguoc la " + countNumber.revert(n));
}
}
1.18 Năm nay cha 35 tuổi, con 4 tuổi Tính xem sau bao nhiêu năm nữa tuổi cha gấp đôi tuổi con 1.19 Cho 2 số tự nhiên a và b Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số đó 1.20 Cho số tự nhiên n
a) Tìm ước lẻ lớn nhất của n
b) Kiểm tra xem số đó có là số nguyên tố không
c) Phân tích số n ra các thừa số nguyên tố
d) Tìm và in ra tất cả các số nguyên tố nhỏ hơn n
1.21 In ra màn hình các giá trị sin, cos, tang, cotang của các góc 00, 50, 100, …, 900
1.22 In ra màn hình bảng cửu chương (8 bảng từ 2 đến 9)
1.23 a) Cho số tự nhiên n Tính tổng S = 1 + 2 + … + n
Trang 7b) Cho số tự nhiên n Tính giai thừa n! = 1 x 2 x … x n
1.24 Cho số tiền gởi ngân hàng P, lãi suất tiền gởi từng tháng r, số tháng gởi n Tính và xuất số tiền
sẽ được rút ra F sau n tháng theo công thức F = P(1 + r)n
1.25 Cho số tự nhiên n và số thực x
a) Tính P = 1 + x + x2 + … + xn
b) Tính P = 1 – x + x2 – x3 + … + xn
c) Cho số tự nhiên n và số thực x Hãy tính tổng S =
!
! 2
! 1 1
2
n
x x
1.26 Số Amstrong là số có tổng lập phương các chữ số bằng chính số đó Tìm các số Amstrong có 3 chữ số Ví dụ: 153 = 13
+ 53 + 33 1.27 Số hoàn hảo là số bằng tổng các ước của nó (không kể chính nó) Tìm các số hoàn hảo <1000
Ví dụ: 6 = 1 + 2 + 3
1.28 Vừa gà vừa chó có 36 con, 100 chân Hỏi có mấy con gà mấy con chó?
1.29 100 con trâu ăn 100 bó cỏ Mỗi trâu đứng ăn 5 bó, mỗi trâu nằm ăn 3 bó, 3 con trâu già ăn 1
bó Hỏi mỗi loại có mấy con
1.30 Dãy Fibonacci là dãy số được định nghĩa như sau:
U0 = U1 = 1
Un = Un – 2 + Un – 1 , với n >= 2
a) Cho số tự nhiên n In ra Fibonacci thứ n
b) Cho số tự nhiên n In ra n số Fibonacci dầu tiên
1.31 Cho số nguyên dương n (3 <= n <= 9)
a) Liệt kê các chỉnh hợp lặp chập 3 của n phần tử 1, 2, , n
Số chỉnh hợp lặp chập k của n phần tử là nk
b) Liệt kê các chỉnh hợp không lặp chập 3 của n phần tử 1, 2, , n
Số chỉnh hợp lặp chập k của n phần tử là Ak
n =n(n – 1)(n – 2) (n – k + 1) c) Liệt kê các tổ hợp chập 3 của n phần tử 1, 2, , n
Ví dụ với n = 4: 123 124 134 234
1.32 Cho số nguyên dương n Tìm các tam giác có độ dài 3 cạnh là số nguyên và chu vi là n
1.33 Tìm tất cả các số nguyên a, b (0 < a < b < 100) sao cho a2 + b2 là số chính phương
1.34 4.38 (Enforcing Privacy with Cryptography) The explosive growth of Internet communications 1.35 and data storage on Internet-connected computers has greatly increased privacy concerns The field of cryptography is concerned with coding data to make it difficult (and hopefully—with the most advanced schemes—impossible) for unauthorized users to read In this exercise you’ll investigate a simple scheme for encrypting and decrypting data A company that wants to send data over the Internet has asked you to write a program that will encrypt it so that it may be transmitted more securely All the data is transmitted as four-digit integers Your application should read a four-digit integer entered by the user and encrypt it as follows: Replace each digit with the result of adding 7 to the digit and getting the remainder after dividing the new value by 10 Then swap the first digit with the third, and swap the second digit with the fourth Then print the encrypted integer Write a separate application that inputs an encrypted four-digit integer and decrypts it (by reversing the encryption scheme) to form the original number
Trang 81.36 Cho 2 số thực x và (với là giá trị sai số rất nhỏ) Viết chương trình tính:
a) Hằng số e =
!
1
! 2
1
! 1
1 1
n
!
1
n < b) ex =
!
! 2
! 1 1
2
n
x x
)!
1 (
1
n
x n
<
c) sin(x) =
( 1) 3! 5! 7! (2 1)!
n n
x
n
cho đến khi (2 1)!
1 2
n
x n
<
4 Phương thức
1.37 Viết hàm int freheit(int c) để đổi từ độ Celsius (bách phân) sang độ Frenheit theo công thức F
= 9*C/5 + 32 và in ra bảng chuyển đổi từ -500
đến 500
1.38 Viết hàm boolean laNguyenTo(int n) để kiểm tra 1 số có là số nguyên tố không (bằng true
nếu n là nguyên tố, ngược lại là false) Sử dụng hàm để liệt kê các số nguyên tố nhỏ hơn N nhập từ bàn phím
1.39 Viết hàm int uscln(int a, int b) để tìm ước số chung lớn nhất của 2 số nguyên dương Dùng
hàm này để tìm ước số chung lớn nhất của 3 số a, b, c nhập từ bàn phím
1.40 Viết hàm double toHop(int n, int k) để tính tổ hợp chập k của n phần tử theo công thức
)!
(
!
k n k
n
C n k
và dùng hàm này in ra tam giác Pascal như sau:
0 0
0 1
0 2
0 3
1.41 Viết hàm làm tròn double round(double x, int n) với x là số thực cần làm tròn và n>0 là vị trí
muốn làm tròn
1.42 Hãy viết phương thức void inLich(byte thu, byte songay) để in lịch của 1 tháng với dữ liệu
vào là thứ của ngày đầu tháng và số ngày trong tháng
Ví dụ: nếu thu = 3 và songay = 30 thì in ra:
5 Kiểu chuỗi
1.43 Nhập vào chuỗi s
a) Đếm số từ trong chuỗi
b) In các từ trong chuỗi s mỗi từ một dòng
c) Đảo ngược thứ tự các từ trong chuỗi
1.44 Nhập vào chuỗi s
a) Đổi chuỗi s ra chữ in
Trang 9b) Đổi ký tự đầu của mỗi từ trong chuỗi s thành chữ in, các ký tự còn lại thành chữ thường c) Xóa các khoảng trắng thừa trong chuỗi s: các khoảng trắng trước và sau, xóa bớt các khoảng trắng ở giữa các từ chỉ để lại một
1.45 Cho 2 chuỗi s và s1 Tìm vị trí đầu tiên chuỗi s1 xuất hiện trong chuỗi s
1.46 Cho 3 chuỗi s, s1 và s2 Tìm và thay thế tất cả các chuổi s1 trong chuỗi s bằng chuỗi s2
1.47 Cho chuỗi s Mã hóa chuỗi s bằng cách dịch chuyển các ký tự trong chuỗi s tiến tới 3 vị trí trong bảng chữ cái Chỉ mã hóa với các kí tự trong khoảng: a-z; A-Z và 0-9 Các kí tự khác giữ nguyên
1.48 Cho 2 số nguyên k và l và chuỗi thông điệp s Mã hóa thông điệp theo qui luật mã hóa:
Từ thứ nhất trong thông điệp => Các kí tự trong từ này +k
Từ thứ hai trong thông điệp => Các kí tự trong từ này –l
Từ thứ ba trong thông điệp => Các kí tự trong từ này +k
Từ thứ tư trong thông điệp => Các kí tự trong từ này –l
Chỉ mã hóa với các kí tự trong khoảng: a-z; A-Z và 0-9 Các kí tự khác giữ nguyên
Các từ cách nhau bằng một khoảng trắng
1.49 Vị Giám đốc công ty XYZ cần gửi một văn bản quan trọng tới một đối tác của mình Đễ bảo mật văn bản.Giám đốc quyết định mã hóa văn bản trước khi gửi, Văn bản là một xâu S các chử
cái la tinh in thường, Ông ta chia văn bản thành 2 xâu liên tiếp Sb và Se Lần lượt viết lại 2 xâu
Sb và Se nhưng theo thứ tự ngược lại ông ta nhận được xâu mã hóa Q.Bức thư thứ nhất gửi cho đối tác có nội dung là Q Để đối tác đọc được văn bản,Ông ta gửi thêm một bức thư thứ 2 trong đó chứa khóa để giải mã :độ dài k xâu Sb
Ví dụ nội dung bức thư S="programming" được chia thành 2 đoạn: Sb="progam", Se="ming",
nhận được xâu mã hóa Q="margorpgnim" với khóa k=7
Yêu cầu: Cho xâu mã hóa Q và khóa k, hãy xác định xâu S (k ≥0 và không vượt quá độ dài
xâu S)
Dữ liệu: Vào từ file văn bản LETTER.INP, trong đó dòng đầu chứa xâu mã hóa Q có độ dài từ
1 đến 250, dòng thứ 2 chứa khóa k
Kết quả: Ghi ra file văn bản LETTER.OUT xâu S tìm được
Ví dụ:
LETTER.INP
margorpgnim
7
1.50 Cho chuỗi S chỉ gồm các kí tự 0 hoặc 1 Người ta mã hóa chuỗi S thu được chuỗi S1 theo quy tắc: đầu tiên là kí tự đầu tiên của chuỗi S, tiếp theo lần lượt là độ dài của các chuỗi con gồm các kí tự giống nhau liên tiếp Khi đó S1 được gọi là mã hóa của S, S được gọi là giải mã của S1
Ví dụ:
S = 1111100000000111110000011111 S1 = 1 5 8 5
Yêu cầu nhận một chuỗi S hãy in ra màn hình mã hóa S1 tương ứng Và nhận một chuỗi mã hóa S1 hãy in ra giải mã của n
1.51 Một thuật toán mã hóa một thông điệp như sau: viết chuỗi thông điệp theo dòng có n=5 cột, dòng cuối cùng được thêm các khoảng trắng cho đầy dòng, rồi viết lại các ký tự của thông điệp
đó theo cột
Trang 10Ví dụ: Thông điệp "I am student"
s t u d e
Thông diệp mã hóa > "Isn-ttau-md e-"
a) Cho một chuỗi s, mã hóa chuỗi s theo thuật toán trên
b) Giải mã lại chuỗi s
6 KIỂU DỮ LIỆU MẢNG
1.1 MẢNG 1 CHIỀU
1.52 Cho n số nguyên
a) Tìm vị trí và giá trị phần tử lớn nhất của dãy
b) Tìm vị trí và giá trị phần tử nhỏ nhất của dãy
a) Tính tổng các phần tử của dãy
1.53 Cho n số nguyên Tìm xem phần tử lớn nhất xuất hiện trong dãy mấy lần
1.54 Nhập vào n số nguyên
a) Đếm số phần âm, dương, bằng 0 của dãy
b) Xác định số âm lớn nhất và số dương nhỏ nhất
c) Cho biết | tổng âm| có bằng tổng dương không
1.55 Cho n số Đảo thứ tự của dãy theo nguyên tắc sau: A[1] đổi cho với A[n], A[2] đổi cho với A[n-1], In kết quả ra màn hình
1.56 Cho n số Xếp các số nhỏ nhất về đầu dãy In dãy kết quả ra màn hình
1.57 Cho n số và số x
a) Xác định xem số x có xuất hiện trong dãy không?
b) Cho biết số x xuất hiện trong dãy bao nhiêu lần và tại các vị trí nào?
c) Cho n số và số x Loại bỏ khỏi dãy tất cả các phần tử bằng x In cả 2 dãy ra màn hình 1.58 Cho một dãy gồm n số
a) Kiểm tra xem dãy có tăng dần hay không
b) Sắp xếp dãy theo thứ tự tăng dần In dãy kết quả ra màn hình
1.59 Cho một dãy gồm n số
a) Kiểm tra xem dãy có đối xứng hay không Ví dụ dãy sau là đối xứng: 4 2 7 3 7 2 4 b) Kiểm tra xem dãy có đan dấu hay không Ví dụ dãy sau là đan dấu: 2 -1 7 -3 4 -5 6 1.60 *Cho một dãy gồm n số
a) Tìm các phần tử xuất hiện đúng một lần trong dãy
b) Tìm các phần tử xuất hiện nhiều hơn 1 lần trong dãy
Ví dụ dãy 8 2 7 3 7 2 4 5 2 4
Câu a) 8 3 5 Câu b) 2 7 4 1.61 *Cho một dãy gồm n số Hãy tạo ra một dãy mới gồm các phần tử khác nhau trong dãy và sắp xếp theo thứ tự tăng dần In dãy kết quả ra màn hình
1.62 Cho số nguyên dương n Dùng sàng Eratosthene để tìm các số nguyên tố nhỏ hơn n
(Sieve of Eratosthenes) A prime number is any integer greater than 1 that’s evenly divisible only by itself and 1 The Sieve of Eratosthenes is a method of finding prime numbers It operates as follows: