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”); }