1
bàn phím. . Gi i ph
BÀI T P LUY N THU T GI I Ả Ậ Ệ ng trình b c 2 v i 3 h s a, b, c đ c nh p t ớ
Ậ ậ
ệ ố ượ ậ ừ 1. L nh if ệ ả ươ
2. L nh switch. Vi t ch ng trình: ệ ế ươ
a) Nh p vào 3 s nguyên t ng ng ngày, tháng, năm c a m t ngày nào đó. ậ ố ươ ứ ủ ộ
b) Ki m tra xem ngày nh p vào có h p l hay không? ợ ệ ể ậ
Ví d : Nh p ngày: 30, tháng: 2, năm 2009 -> In ra: Tháng 2 năm 2009 t i đa 29 ngày ụ ậ ố
3. L nh l p. t ch ng trình: ặ Vi ệ ế ươ
a) Nh p m t s nguyên n ộ ố ậ
b) In ra giai th a c a n (n! = 1.2.3….n) b ng: ừ ủ ằ
1. L nh for ệ
2. L nh do … while ệ
3. L nh while ệ
4. Dùng đ quy (recursive) ệ
t ch ng trình th c hi n các công vi c sau: 4. M ngả . Vi ế ươ ự ệ ệ
a) Khai báo m ng 10 s nguyên, các ph n t c (1 <= giá ầ ử ả ấ ượ l y ng u nhiên ẫ ố <=100), i không l p l ả tr m i ph n t ầ ử ị ỗ m ng đ ặ ạ (Tìm hi u l p Math) ể ớ
b) In các ph n t v a l y theo th t c v i th t ng gán. ầ ử ừ ấ ứ ự ượ ớ ứ ự
c) In m ng đã s p x p theo th t tăng và gi m ắ ế ứ ự ả ả
d) Ki m tra m ng có đ i x ng? ả ố ứ ể
5. Chuy n đ i h đ m ể ổ ệ ế
a) Nh p vào m t s nguyên d ng ộ ố ậ ươ
In ra bi u di n nh phân và Hexa Decimal c a s đó ủ ố ể ễ ị
2 65 = (41)16
Ví d : Nh p n =65; In ra: 65 = (1000001) ụ ậ
2 = (10)10
b) Nh p m t s nh phân, in ra s th p phân t ng ng. VD: (1010) ố ậ ộ ố ậ ị ươ ứ
6. String. Vi t ch ng trình th c hi n các công vi c sau: ế ươ ự ệ ệ
a) Nh p vào m t chu i ỗ ậ ộ
b) Đ m sô t ế ừ trong chu i nh p ậ ỗ
c) In chu i đã chu n hóa. ẩ ỗ
Ví d : Chu i nh p: “ nGuyEN vAN biNh “ ụ ậ ỗ
Chu i chu n hóa: “Nguyen Van Binh” ẩ ỗ
hay d) Ki m tra xem chu i nh p có ph i là m t danh hi u (identifier) h p l ả ợ ệ ệ ậ ỗ ộ ể không?
CHÚ Ý: V i Java và C# - M i bài là 1 class, m i yêu c u trong bài là 1 method ầ ớ ỗ ỗ
2
H
ƯỚ
NG D N GI I THU T CÁC BÀI T P LUY N THU T GI I Ả
Ẫ
Ả
Ậ
Ậ
Ậ
Ệ
a*x2 + b*x + c = 0 1. GI I THU T GI I PTB2 Ậ Ả Ả
BEGIN
double a, b, c, d, x, x1, x2
1. a = 0, b = 0, c = 0 => PTVSN - OK 2. a = 0, b = 0, c = 2 => PTVN - OK 3. a = 0, b = 2, c = 4 => x = - 2 - OK 4. a = 1, b = 2, c = 2 => PTVN (d < 0) 5. a = 1, b = 2, c = 1 => x = -1 (d = 0) 6. a = 1, b = 4, c = 1 => x1 = … (d > 0) x2 = … Input(a, b, c)
N Y a = 0? d < 0? d = b*b– 4*a*c Out(“PT VN”)
Y N N Y
b = 0? d = 0? x = - b / (2*a) x = - c / b
Y N Out(x) Out(x) N
c = 0? Out(“PT VN”)
Y x1 = (-b + sqrt(d)) / (2*a) x2 = (-b - sqrt(d)) / (2*a) Out(“PT VSN”)
Out(x1, x2)
END
3
s ữ ố
max
2. GI I THU T KI M TRA NGÀY NH P Ả Ậ Ậ Ể
d l u gi ư ngày max c a 1 ủ tháng trong năm
BEGIN
; max byte (char) day, month, d int year;
Input (year); // year > 0 Input (month); // 0 < month < 13 Input (day); // 0 < day < 32
month
month = 1, 3, 5, 7, 8, 10 , 12 month = 4, 6, 9, 11 month = 2
= 31 = 30 N Y d max d max
year % 4 == 0
Y
= 29 = 28 d max d max
Output (“Input Date is invalid”)
Y Y
Output (“Input Date is valid”)
day > d max N Y
END
4
3. GI I THU T TÍNH GIAI TH A Ừ Ậ Ả
BG
int i = 0, n; long int result = 1;
Input (n)
Y
n == 0 || 1 result = 1
N
i = 1
N
i <= n
Y Output (result) result = result * i
i++ END
5
4. GI I THU T V CÁC THAO TÁC TRÊN M NG Ậ Ả Ả Ề
6
5. GI I THU T CHUY N Đ I H TH NG S Ể Ổ Ệ Ố Ậ Ả Ố
BG
int i = 0, n, m, r; int arr_bin[64];
Input (n)
m = n
r = m %2; arr_bin[i++] = r; m = m / 2;
N
m == 0
Y
i--
N
END i >= 0
Y
Output (arr_bin[i])
i--
7
6. GI I THU T V CÁC THAO TÁC TRÊN CHU I Ỗ Ậ Ả Ề
hay không? 6.4 Ki m tra xem chu i nh p có ph i là m t danh hi u (identifier) h p l ả ợ ệ ể ệ ậ ỗ ộ
BEGIN
char id[50] , c; int i = 0; String id; char keywords[ ][30] = {“include”, “main”, “if”, “else”, “for”, “do”, “while”, …};
Input (id); //
c = id[0];
N Y
(c >= ‘A’ && c <= ‘Z’) || (c >= ‘a’ && c <= ‘z’) || c == ‘_’ || c ==
Output (“id is invalid”); // Y Y i = 1; c = id[i];
END Y
i < length(id)
Y
N Y Y Y i++; c = id[i];
Output (“id is invalid”);
(c >= ‘A’ && c <= ‘Z’) || (c >= ‘a’ && c <= ‘z’) || (c >= ‘0’ && c <= ‘9’) || c == ‘_’
END
Y
id == any key words
Output (“Id is invalid”)
N
Output (“Id is valid”)
END
for(int i = 1; i < len; i++) {
if((c <= 'Z' && c >= 'A')||(c <= 'z' && c >=
{
//flag = true;
} else{
return false;
}
} // Kiem tra xem co trung voi keywords? for(int j = 0; j < keywords.Length; j ++) {
if(keywords[j].Equals(st)) {
return false;
}
}
return false; // st khong phai la danh hieu cua Java
// Program writen in c# public bool CheckId(string st) { string [] keywords = {"if", "else", "class", "interface", "for", "do", "final"}; // Kiem tra ky tu dau tien int len = st.Length; char[] chars = st.ToCharArray(); char c = chars[0]; if((c <= 'Z' && c >= 'A')||(c <= 'z' && c >= 'a')||(c == '_')||(c == '$')) { 'a')||(c == '_')||(c == '$')||(c <= '9' && c >= '0')) Console.WriteLine(st + " trung voi tu khoa."); } else{ } return true; }
8
9
Gi i thích gi i thu t in ra tam giác vuông các ‘*’: ả ả ậ
ố ế ặ c a hàng ớ ố ầ ặ ổ ế ư ị ộ ữ ặ ằ ố ứ ự ủ ự S hàng nh p vào h = 4 ậ Bi n l p m i l n thay đ i hàng r = 1 -> 4 ỗ ầ - Trên m i hàng,dùng bi n l u tr giá tr c t c, l p v i s l n l p b ng s th t ỗ r, th c hi n in ‘*’ ệ - Khi đ n cu i hàng, di chuy n con tr xu ng hàng d ế i ướ ể ố ỏ ố
int h = 4, r, c; for(r = 1; r < = h; r++) {
for(c = 1; c <= r; c++) { printf(“* ”);
} printf(“\n”); }
* * * * * * * * * *
c
2 2 2 r 1 2 3 4 1 1 1 1 3 3 4
ố ế ặ c a hàng ớ ố ầ ặ ị ộ ữ ặ ằ ố ứ ự ủ ỗ ệ ự S hàng nh p vào h = 4 ậ Bi n l p m i l n thay đ i hàng r = 1 -> h ỗ ầ - Trên m i hàng,dùng bi n l u tr giá tr c t c, l p v i s l n l p b ng s th t r, th c hi n in: giá tr c a c t c (STT c t) ộ - Khi đ n cu i hàng, di chuy n con tr xu ng hàng d ỏ ổ ế ư ị ủ ộ ể i ướ ế ố ố
int h = 9, r, c; for(r = 1; r < = h; r++) {
for(c = 1; c <= r; c++) { printf(“%d ”, c);
} printf(“\n”); }