Tải bản đầy đủ (.pdf) (18 trang)

Tut2 solution

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (310.61 KB, 18 trang )

Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính

KỸ THUẬT LẬP TRÌNH
Bài tập 2
Các cấu trúc rẽ nhánh
Bài mẫu
Viết chương trình tính đường kính, chu vi, diện tích tạo bởi của đường trịn bán kính R.
Prototype: float duongtron(float R);
Flowchart:
Start

Input R

d  2*R
p  2*3.14*R
s  R*R

Print d,p,s

Stop
Hình 0. Tính đường kính, chu vi, diện tích hình trịn bán kính R

1


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính

Bài tập bắt buộc
Xây dựng prototype và vẽ flow chart cho các bài tập sau:


Bài 1.
Cho 2 số nguyên dương a và b. Kiểm tra xem a có chia hết cho b không?
Lưu ý số nguyên dương là số lớn hơn hoặc bằng 0.
Prototype: int chiahet(int a, int b)
Flowchart:
Start

Input a, b

a ≥ 0 && b ≥ 0

No

Yes
b≠0

No

Yes
a mod b = 0
Yes
Print Lổi
dữ liệu
nhập

No
Print Chia
có dư

Print Chia

hết

Stop
Hình 1. Kiểm tra tính chia hết

2

Print Lổi
chia cho 0


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 2.
Cho 2 người chơi kéo bao búa. Viết chương trình kiểm tra kết quả trị chơi.

Prototype: int keo_bao_bua(char P1, char P2)
“K”: Kéo
“B”: Búa
“G”: Giấy
Flowchart:
Start

Stop

Input P1, P2

(P1=’B’ && P2=’K’)
||(P1=’K’ && P2=’G’)
||(P1=’G’ && P2=’B’)


Yes
Print P1 thắng

No
(P1=’K’ && P2=’K’)
||(P1=’B’ && P2=’B’)
||(P1=’G’ && P2=’G’)

Yes
Print Hòa

No
(P1=’K’ && P2=’B’)
||(P1=’G’ && P2=’K’)
||(P1=’B’ && P2=’G’)

Yes
Print P2 thắng
No
Print Ký tự khơng hợp lệ

Hình 2. Kiểm tra kết quả trị chơi oản tù tì
3


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 3.
Nhập vào phương trình bậc hai. Kiểm tra phương trình có mấy nghiệm (khơng tính nghiệm

phức).

Prototype: int so_nghiem_ptb2(float a, float b, float c)
Flowchart:
Start

Input a, b, c

No

a=0

∆  b2 - 4ac

Yes
Yes

c=0
Yes

No

No

Print Vơ số
nghiệm

∆=0

b=0


No

∆>0

No
Yes

Print Vơ
nghiệm

Print Một
nghiệm

Yes

Print Hai
nghiệm

Stop
Hình 3. Tính số nghiệm trong phương trình bậc hai

4


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 4.
Cho một đoạn mã hốn vị giá trị 2 biến như sau:
bien_trung_gian = bien1;

bien1 = bien2;
bien2 = bien_trung_gian;
Hãy viết 1 chương trình hốn vị 2 số ngun dương không sử dụng biến trung gian.

Prototype: void hoanvi(int x, int y)
Flowchart: Có 2 cách.
Start

Start

Input x, y

Input x, y

a<0 || b<0

No

xx+y

a<0 || b<0

xx-y
Yes

xx-y
yx+y

Yes
yx-y


Print lổi dữ liệu

No

Print x, y

xy-x

Print lổi dữ liệu

Print x, y

Stop

Stop
Hình 4. Hai phương pháp hốn vị khơng cần biến trung gian
*** Lưu ý: cách 1 có thể bị tràn số nếu x và y quá lớn

5


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 5.
Cho 2 đường trịn. Tính số điểm mà chúng cắt nhau.
Lưu ý: Một đường tròn bao gồm tâm (x, y) và bán kính R > 0.

Prototype: int tinh_so_diem_trung(float x1, float y1, float R1, float x2, float y2, float R2)
Flowchart:

Start

Stop

Input x1, y1, R1, x2, y2,
R2
d  sqrt((x2-x1)2 – (y2-y1)2)

Yes

x1=x2&&y1=y2
&&R1=R2

Print Vô số điểm
(Trùng nhau)

No
Yes

R1+R2 > d
&& |R1-R2| < d

Print 2 điểm
(Cắt nhau)

No
Yes

(|R1-R2| = d)
||(R1+R2 = d)


Print 1 điểm
(Tiếp xúc nhau)

No

Print 0 điểm
(Khơng cắt nhau)

Hình 5. Tính số điểm giao nhau giữa 2 dường tròn

6


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 6.
Giả sử hơm nay là ngày 31-12-1999.
Nhập vào ngày sinh của một người. Tính số lần sinh nhật của người đó cho tới thời điểm hiện
tại (31-12-1999). Ví dụ: Một người sinh vào ngày 31-12-1969 => Anh ta có 31 lần sinh nhật.
Giới hạn: Chỉ cho phép nhập năm sinh trong khoảng 1901-1999.
Lưu ý: Dữ liệu đầu vào luôn hợp lệ (không cần kiểm tra).

Prototype: int tinh_so_lan_sinh_nhat(int ngay, int thang, int nam)
Trường hợp đặc biệt: Người sinh 29-2 năm nhuần, giữa 2 lần sinh nhật cách nhau 4 năm.
Flowchart:
Start

Input ngay, thang, nam


ngay=29 && thang=2
Yes

No
L  2000-nam

L  (2000-nam) div 4

Print L

Stop
Hình 6. Tính số lần sinh nhật dựa vào ngày sinh

7


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính

Bài tập làm thêm
Bài 7.
Chuyển đổi giữa mét và inch.
Hướng dẫn: 1 inch = 2,54 cm.

Prototype: float convert(float a,int sel);
//sel=1: inch sang mét, sel ≠1: mét sang inch
Flowchart:
Start

Input sel


Yes

sel=1?

Input a

No
Input a

m  a*2.54/100

inch  a*100/2.54

Print Chieu dai met: m

Print Chieu dai inch: icnh

Stop
Hình 7. Đổi đơn vị mét và inch

8


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 8.
Viết chương trình nhận vào là một đường trịn tâm O(x0, y0) và bán kính R. Kiểm tra
xem một điểm A(x, y) là nằm trên, trong hay ngồi đường trịn đó.
Prototype: int diemduongtron(float x0, float y0, float R, float Ax, float Ay);

Flowchart:
Start

Input
x0,y0,R,Ax,Ay
dist  sqrt(sqr(Ax-x0)+sqr(Ay-y0))

Yes

distNo
dist=R?

No

Yes
Print Trong
ĐT

Print Trên ĐT

Print Ngồi
ĐT

Stop
Hình 8. Xác định vị trí tương đối của điểm và đường tròn

9



Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 9.
Cho độ dài 3 cạnh a, b, c, kiểm tra xem nó có phải là 3 cạnh của một tam giác cân, tam
giác đều, tam giác vuông hay tam giác vuông cân không.
Prototype: int tamgiac(int a,int b,int c);
Flowchart:
Start

Input a,b,c

((a>|b-c|)&&(a((b>|a-c|)&&(b((c>|b-a|)&&(c
No

Yes

Yes

(a==b)&&
(b==c)?
No

(a*a==b*b+c*c)||
(b*b==a*a+c*c)||
(c*c==b*b+a*a)?

Yes


(a==b)||(b==c)
||(c==a)?

No

No

(a==b)||(b==c)
||(c==a)?

Yes
Print
Khơng là
tam giác

Print
Đều

Print
VngCân

Yes
Print
Vng

Print
Cân

Stop

Hình 9. Xác định đặc điểm tam giác tạo thành từ 3 cạnh a,b,c
10

No

Print
Thuờng


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 10.
Viết chương trình nhận vào năm hợp lệ, kiểm tra xem đó có phải là năm nhuận hay
khơng, ghi kết quả ra màn hình.
Hướng dẫn: một năm là nhuận khi mà nó chia hết cho 4 nhưng khơng chia hết cho 100,
hoặc là nó chia hết cho 400.
Prototype : int kiemtranhuan(int year);
Flowchart :
Start

Input year

mod4  year%4
mod100  year%100
mod400  year%400

Yes

(mod4==0&&mod100<>0)|
|(mod400==0)?


No

Print Khơng nhuận

Print Nhuận

Stop
Hình 10. Kiểm tra một năm là nhuận.

11


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 11.
Tính tốn cước taxi với giá dịch vụ được tính theo các điều kiện sau của quãng đường đi d:
 d <= 1km: giá 15 000 VND/km,
 1 km < d <= 10 km: 8 000 VND/km,
 10 km < d <= 30 km: 6 000 VND/km,
 d > 30 km: 4 000 VND/km.
Prototype: float tientaxi(float d);
Flowchart:
Start

Input d

d>30?

tien  d*4000


Yes

No
d>10?

tien  d*6000

Yes
No
d>1?
Yes

tien  d*8000

No
tien  d*15000

Print tien

Stop
Hình 11. Tính tiền taxi.

12


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 12.
Tính tốn cước taxi ứng với điều kiện sau về quãng đường đi:

 10 km đầu tiên 10 000 VND/km,
 Từ km 11 tới 30, giá thành 6 000 VND/km,
 Sau 30 km, giá thành là 4 000 VND/km.
Prototype: float tientaxib7(float d);
Flowchart:
Start

Input d

d>30?

Yes

No
d>10?
Yes

tien  (d-30)*4000 + 20*6000 +
10*10000
tien  (d-10)*6000+10*10000

No
tien  d*10000

Print tien

Stop
Hình 12. Tính tiền taxi.

13



Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 13.
Tính tiền điện (nước) phải trả với chi phí tăng tuyến tính từng đoạn theo số kilowatt (hay mét
khối) sử dụng trong một tháng.
Giả sử giá điện tính theo hàm tuyến tính từng đoạn:
1242 khi x  100
1369 khi 100  x  150

f ( x)  
1734 khi 150  x  200
1877 khi 200  x
Ví dụ: Tiền điện cho 102kWh là 100*1242 + 2*1369 = 126 938VNĐ
Prototype: float tiendiennuoc(float d);
Flowchart:
Start

Input d

d>200?

Yes

tien  (d-200)*1877 + 50*1734
+ 50*1369+100*1242

Yes


tien  (d-150)*1734 +
50*1369+100*1242

No
d>150?
No
d>100?
Yes

tien  (d-100)*1369+100*1242

No
tien  d*1242

Print tien

Stop
Hình 13. Tính tiền điện
14


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 14.
Sử dụng cấu trúc lựa chọn switch để viết chương trình cho người dùng nhập vào tháng hợp lệ
và in ra số ngày trong tháng đó (giả sử đó khơng phải là năm nhuận).
Prototype: int songay(int thang);
Flowchart:
Start


Input thang

Yes

(thang<1)||(than
g >12)?
No
Yes
(thang ==2)?

Print Tháng 28 ngày

No

thang
{4,6,9,11}?

Yes
Print Tháng 30 ngày

No
Print Tháng 31 ngày

Stop

Hình 1. Tính số ngày trong tháng

15



Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Bài 15.
Tính thuế thu nhập cá nhân.
Thuế thu nhập cá nhân có thể được giảm cho các tình huống gia gia cảnh. Từ 01/01/2009,
thu nhập cá nhân từ lợi nhuận kinh doanh, tiền lương, tiền thù lao sẽ thấp hơn so với hồn
cảnh gia đình chịu thuế. Các khoản khấu trừ điển hình là 4 triệu đồng mỗi tháng thu nhập
đối với người có thu nhập và 1,6 triệu mỗi tháng cho mỗi người phụ thuộc. (Chú ý: thu
nhập chịu thuế, các khoản khấu trừ cho bản thân là 4 triệu đồng mỗi tháng nhưng được
bao gồm trong mức chịu thuế với thuế suất 0%).
Người phụ thuộc bao gồm:
1.Con chưa thành niên;
2. Vợ hoặc chồng và các con đã thành niên nhưng khơng có khả năng làm việc;
3. Con của bạn là một sinh viên hoặc có thu nhập từ 500 nghìn đồng mỗi tháng hoặc ít
hơn;
4. Ơng bà, cha, mẹ,. . . khơng có khả năng lao động với thu nhập của
500.000 đồng một tháng hoặc ít hơn.
Nhưng số tiền giảm trừ nhiều nhất là 10 triệu, đủ cho 5-6 người phụ thuộc.
Sự tăng dần một phần thuế quan áp dụng với thu nhập từ lợi nhuận kinh doanh, tiền
lương, và tiền thu lao như sau:
- Mức 1: 4 triệu VND một tháng, thuế suất 0%.
- Mức 2: trên 4 triệu đến 6 triệu VND một tháng - thuế suất 5%.
- Mức 3: trên 6 triệu đến 9 triệu VND một tháng - thuế suất 10%.
- Mức 4: trên 9 triệu đến 14 triệu VND một tháng – thuế suất 15%.
- Mức 5: trên 14 triệu đến 24 triệu VND một tháng – thuế suất 20%.
- Mức 6: trên 24 triệu đến 44 triệu VND một tháng – thuế suất 25%.
- Mức 7: trên 44 triệu đến 84 triệu VND một tháng – thuế suất 30%.
- Mức 8: trên 84 triệu VND một tháng – thuế suất 35%.
Ví dụ: thu nhập 10 triệu bị đánh thuế như sau, 6 triệu bị đánh thuế 5%, 3 triệu đánh thuế
10%, 1 triệu bị đánh thuế 15%.

Bảng thuế suất đầy đủ như sau:
- Lãi vay, lợi tức, thu nhập từ tiền vốn góp kinh doanh, tiền lãi.
- Tiết kiệm hơn 5 triệu một tháng là 5%.
- Thu nhập từ chuyển nhượng vốn góp là 25%.
- Thu nhập từ hốn đổi tài sản là 25%.
Những thu nhập khác:
- Thu nhập từ tiền bản quyền tác giả trên 10 triệu VND/lần: 5 %.
- Trúng xổ số, trúng thưởng trên 10 triệu/giải : 10%.
- Thu nhập từ thừa kế, quà tặng trị giá 10 triệu/ lần: 10%.
Ví dụ 1: Thu nhập của ơng A là 6 triệu một tháng, và anh ấy nuôi dưỡng 2 đứa con dưới
18 tuổi. Bởi vậy, anh ấy được chấp nhân khấu trừ theo hồn cảnh gia đình.
Mức thu nhập chịu thuế của ông A sẽ giảm theo hồn cảnh gia đình anh ấy là 4 triệu
VND một tháng. Hai đứa trẻ là người phụ thuộc, thuế thu nhập khấu trừ liên quan là
16


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
(1.6+1.6) = 3.2 triệu một tháng. Như vậy, tổng giảm trừ của ông A là (4 triệu + 1.6 triệu
+1.6 triệu)= 7.2 triệu, cao hơn mức thu nhập của anh ấy (6 triệu).Ơng A sẽ khơng phải trả
thuế ( Với 2 con nhỏ được tính như người phụ thuộc, thuế thu nhập phải trả được giảm là
1.6 triệu một tháng).
Ví dụ 2: Ơng B có thu nhập khoảng 10 triệu 1 tháng, nuôi dưỡng một con nhỏ, bởi vậy
anh ấy được chấp nhận giảm trừ theo hoàn cảnh gia đình.
Ơng B sẽ được giảm theo hồn cảnh gia đình khoảng 4 triệu/ 1 tháng. Một con nhỏ là
người phụ thuộc đem lại sự giảm trừ thuế thu nhập phải nộp là 1.6 triệu/ 1 tháng.
Tổng giảm trừ của ông B là: (4 triệu + 1.6 triệu) = 5,6 triệu.
Khoản thuế mang lại ảnh hưởng từ ông B là 10tr – 5,6tr =4,4tr.
(Mức 2 và mức 3 cho ít hơn 4 triệu được giảm, nhưng vẫn được tính như mức chịu thuế
của thuế suất thu nhập chịu thuế là 0%. (ít hơn 4 triệu + 4.4 triệu )=8.4 triệu.

Tổng tiền thuế phải trả của ông B là: ( 2tr x 5% )+ (2.4tr x 10%)=340.000VND.
Ví dụ 3: Ơng C có vợ, bà D, và một đứa con nhỏ là E: ông ấy là đối tượng để giảm thuế
thu nhập theo hồn cảnh gia đình. Thu nhập của ơng C là 5 triệu 1 tháng. Thu nhập của
bà D khoảng 6 triệu/ 1 tháng. Đứa con chưa đến tuổi vị của bà D là đối tượng phụ thuộc
không chỉ một mà cả 2 vợ chồng để giảm thuế thu nhập phải trả khoảng 1.6 triệu một
tháng. (Phụ thuộc vào sự khai báo của ông C và bà D với tổ chức quản lý thuế, nhưng cả
hai vợ chồng đó khơng được khai báo cùng một người phụ thuộc).
Nếu ông C khai rằng E là người phụ thuộc của ông ấy, tổng giảm trừ sẽ là: 4 triệu + 1.6
triệu = 5,6 triệu >5 triệu thu nhập 1 tháng. Bởi vậy, ông C không phải trả thuế!
Thuế thu nhập phải trả của bà D là: 6 triệu – 4 triệu ( một phần giảm trừ của bà ấy)= 2
triệu. Thuế thu nhập phải trả của bà D là: 2 triệu x 5% = 100.000VND/1 tháng.
Prototype: float ThueTNCN(int sel, float a, int b);
/*a:thu nhập, b: số người phụ thuộc,sel có các giá trị:
1: tính thuế từ lợi nhuận kinh doanh, tiền lương, và tiền thù lao (8 mức) có xét gia cảnh
2: Lãi vay, lợi tức, thu nhập từ tiền vốn góp kinh doanh, tiền lãi tiết kiệm hơn 5 triệu một
tháng (5%)
3: Thu nhập từ chuyển nhượng vốn góp (25%)
4: Thu nhập từ hoán đổi tài sản (25%)
5: Thu nhập từ tiền bản quyền tác giả trên 10 triệu VND/lần (5 %)
6: Trúng xổ số, trúng thưởng trên 10 triệu/giải (10%)
7: Thu nhập từ thừa kế, quà tặng trị giá 10 triệu/ lần (10%)
*/
Flowchart: (thứ nguyên [triệu đồng] cho biến a)

17


Khoa Khoa học và Kỹ thuật Máy tính
Bộ mơn Khoa học Máy tính
Start


Hình 15. Tính thuế TNCN

Input sel,a

sel{2,5}?

Yes

thue  a*0.05

Yes

thue  a*0.1

Yes

thue  a*0.25

No
sel{6,7}?
No
sel{3,4}?

Print thue

No
b*1.6>10?

Input b

a  a – b*1.6

a>84?

No

Yes
a  a – 10

Yes

thue  (a - 84)*0.35 + 40*0.3 + 20*0.25 +
10*0.2 + 5*0.15 + 3*0.1 + 2*.05

Yes

thue  (a – 44)*0.3 + 20*0.25 + 10*0.2 +
5*0.15 + 3*0.1 + 2*.05

Yes

thue  (a – 24)*0.25 + 10*0.2 + 5*0.15 +
3*0.1 + 2*.05

Yes

thue  (a – 14)*0.2 + 5*0.15 + 3*0.1 + 2*.05

Yes


thue  (a – 9)*0.15 + 3*0.1 + 2*.05

Yes

thue  (a – 6)*0.1 + 2*.05

Yes

thue  (a – 4)*.05

No
a>44?
No
a>24?
No
a>14?
No
a>9?
No
a>6?
No
a>4?
No
thue  0

18

Stop




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×