Câu lệnh break, continue và goto

Một phần của tài liệu Giáo trình lập trình cc++ cơ bản (Trang 47 - 60)

Chương 3. Các cấu trúc điều khiển

3.4. Câu lệnh break, continue và goto

Thoát ra khỏi các cấu trúc lặp hoặc cấu trúc switch.

Ví dụ 3.11: Viết chương trình nhập vào các số nguyên cho đến khi nào gặp số 0 thì kết thúc nhập. Tính và in ra màn hình tổng các số vừa được nhập vào.

1. #include <iostream>

2. using namespace std;

3. int main() 4. {

5. int s = 0, a;

6. while (1) 7. {

8. cin>>a;

9. s += a;

10. if (a == 0)

11. break;

12. }

13. cout<<s;

14. return 0;

15. }

3.4.2. Câu lệnh continue

Câu lệnh continue chỉ được sử dụng trong các cấu trúc lặp. Nó sẽ chuyển điều khiển chương trình trở lại đầu vòng lặp đang chứa nó và bỏ qua các câu lệnh sau nó.

Ví dụ 3.12: Viết chương trình nhập vào các số nguyên cho đến khi gặp số 0 thì kết thúc. Tính tổng các số dương và đếm xem có bao nhiêu số âm vừa được nhập vào.

1. #include <iostream>

2. using namespace std;

3. int main() 4. {

5. int s = 0, dem = 0, a;

6. while (1) 7. {

8. cin>>a;

9. if (a == 0)

10. break;

11. if (a < 0)

12. {

13. dem++;

14. continue;

15. }

16. s += a;

17. }

18. cou<<"Tong so duong: "<<s<<endl;

19. cou<<"So luong so am duoc nhap vao: "<<dem;

20. return 0;

21. }

3.4.3. Câu lệnh goto

Lệnh goto dùng để chuyển quyền điều khiển tới một câu lệnh nào đó được chỉ định bởi nhãn. Cú pháp như sau:

goto nhãn;

Trong đó nhãn là một tên hợp lệ và tên này phải đặt trước lệnh mà ta muốn nhảy đến, cú pháp như sau :

nhãn : lệnh;

Chú ý:

- Nếu lệnh gotonhãn nằm trong cùng một hàm thì lệnh goto chỉ cho phép nhảy từ vị trí này sang vị trí khác trong thân hàm đó, không được nhảy từ hàm này sang hàm khác.

- Không cho phép dùng lệnh goto để nhảy từ ngoài vào trong một khối lệnh nhưng cho phép nhảy từ trong khối lệnh ra ngoài.

Ví dụ 3.13: Tính tổng S = 1 + 2 + ... + n.

1. #include <iostream>

2. using namespace std;

3. int main() 4. {

5. int n, i=0, s=0;

6. cin>>n;

7. lap:

8. s += i; i++;

9. if(i<=n)

10. goto lap;

11. cout<<s;

12. return 0;

13. }

BÀI TẬP

Bài tập 3.1: (MAXMIN) Viết chương trình tìm số lớn nhất và bé nhất của bốn số nguyên : a, b, c, d (a, b, c, d ≤ 1018).

Input: a, b, c, d Output: Max, Min Ví dụ:

INPUT OUTPUT

1 4 2 3 4 1

Bài tập 3.2: (DATE) Viết chương trình nhập vào ngày, tháng, năm.

Máy sẽ hiện lên ngày, tháng, năm hôm sau.

Input: ngày, tháng, năm

Output: ngày, tháng, năm hôm sau Ví dụ:

INPUT OUTPUT

15 5 2016 16 5 2016

Gợi ý:

Biện luận theo tháng. Gom tháng thành 3 nhóm: tháng có 31 ngày (1,3,5,7,8,10,12), tháng có 30 ngày (4,6,9,11) và tháng 2 (có 28 hoặc 29 ngày tùy theo năm nhuận).

Chú ý: Năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 100 hoặc chia hết cho 400.

Dùng lệnh lựa chọn: Case…of switch (thang)

{

case 1,3,5,7,8,10,12: ...

case 4,6,9,11: ...

case 2: ...

}

Bài tập 3.3: (NTFS) (Olympic 2009, khối Cao đẳng)

Trong hệ thống NTFS, bộ nhớ phân phối cho các file theo đơn vị cluster, mỗi cluster là 4KB (tức là 4096 byte). Như vậy dù file của bạn có kích thước là 1 byte nó vẫn chiếm bộ nhớ 4KB trên đĩa.

Yêu cầu: Cho số nguyên dương n là kích thước của file trong đơn vị byte. Hãy xác định số KB mà file đó chiếm trên đĩa trong hệ thống NTFS.

Input: Số nguyên n (0 < n ≤ 109).

Output: Một số nguyên là số KB mà file đó chiếm trên đĩa trong hệ thống NTFS.

Ví dụ:

INPUT OUTPUT

4097 8

Bài tập 3.4: (TIME) (Olympic 2010, khối Cao đẳng)

Bảng của đồng hồ điện tử gồm một dãy ba số h, ps thể hiện tương ứng giờ, phút và giây của thời điểm hiện tại. Cứ sau mỗi giây giá trị của bộ ba số h, ps này sẽ thay đổi thành ba số h1, p1s1 tương ứng với thời điểm mới.

Yêu cầu: Cho ba số h, ps, hãy tìm ba số h1, p1s1.

Input: Ba số nguyên không âm h, p và s (0 ≤ h ≤ 23, 0 ≤ p, s ≤ 59).

Output: Ba số nguyên h1, p1 và s1 tìm được.

Ví dụ:

INPUT OUTPUT

8 30 0 8 30 1

Bài tập 3.5: (SONGSONG) Cho 2 đoạn thẳng AB và CD với các đỉnh A(x1,y1), B(x2,y2), C(x3,y3) và D(x4,y4) không trùng nhau. Hãy cho biết AB có song song với CD?

Input: Tọa độ 4 điểm A(x1,y1), B(x2,y2), C(x3,y3) và D(x4,y4) mỗi điểm trên 1 dòng

Output: TRUE/FALSE tương ứng với tích chất song song hoặc không.

Ví dụ:

INPUT OUTPUT

0 0 1 1 1 0 2 1

TRUE

Bài tập 3.6: (VUONGGOC) Cho 2 đoạn thẳng AB và CD với các đỉnh A(x1,y1), B(x2,y2), C(x3,y3) và D(x4,y4) không trùng nhau. Hãy cho biết AB có vuông góc với CD?

Input: Tọa độ 4 điểm A(x1,y1), B(x2,y2), C(x3,y3) và D(x4,y4) mỗi điểm trên 1 dòng

Output: TRUE/FALSE tương ứng với tích chất vuông góc hoặc không.

Ví dụ:

INPUT OUTPUT

0 0 1 1 1 0 0 1

TRUE

Bài tập 3.7: (THREEPNT) Cho 3 điểm A(x1,y1), B(x2,y2), C(x3,y3) không trùng nhau. Hãy cho biết A, B, C có thẳng hàng?

Input: Tọa độ 3 điểm A(x1,y1), B(x2,y2), C(x3,y3) mỗi điểm trên 1 dòng

Output: TRUE/FALSE tương ứng với tích chất thẳng hàng hoặc không.

Ví dụ:

INPUT OUTPUT

0 0 1 1 2 2

TRUE

Bài tập 3.8: (TRICHECK) Cho 3 đoạn thẳng có độ dài 0 ≤ a,b,c <106. Hãy cho biết các đoạn a,b,c có thể ghép thành một tam giác?

Input: a, b, c

Output: TRUE/FALSE tương ứng với việc ghép được hoặc không.

Ví dụ:

INPUT OUTPUT

3 4 5 TRUE

Bài tập 3.9: (ANGLE) Cho 3 điểm A(x1,y1), B(x2,y2), C(x3,y3) không trùng nhau. Hãy cho biết góc 𝐴𝐵𝐶̂ là góc nhọn, vuông hay góc tù?

Input: Tọa độ 3 điểm A(x1,y1), B(x2,y2), C(x3,y3) mỗi điểm trên 1 dòng

Output: 1/2/3 tương ứng với góc nhọn/vuông/tù.

Ví dụ:

INPUT OUTPUT

0 0 1 1 2 0

2

Bài tập 3.10: (CIRCHECK) Cho đường tròn tâm O(xc,yc) bán kính R và điểm P(x,y). Hãy cho biết điểm P ở trong/trên/ngoài đường tròn?

Input: xc, yc, R <106

Output: 1/2/3 tương ứng với vị trí của P.

Ví dụ:

INPUT OUTPUT

0 0 1 2 2 3

Bài tập 3.11: Viết chương trình tính các tổng sau, làm tròn đến 2 chữ số thập phân:

(FACT) S0 = n! = 1*2*...*n {n<23}

Ví dụ:

INPUT OUTPUT

3 6

(SUMS1) S1 = 1 + 1/2 + ... + 1/n Ví dụ:

INPUT OUTPUT

2 1.50

(SUMS2) S2 = 1 + 1/2! + ... + 1/n!

Ví dụ:

INPUT OUTPUT

2 1.50

(SUMS3) S3 = 1 + x + x2/2! + x3/3! + ... + xn/n!

Ví dụ:

INPUT OUTPUT

1 2 2.50

(SUMS4) S4 = 1 - x + x2/2! - x3/3! + ... + (-1)nxn/n!

Ví dụ:

INPUT OUTPUT

1 2 0.50

Bài tập 3.12: (TONGCHAN) Viết chương trình nhập vào N số nguyên từ bàn phím. Hãy tính và in ra màn hình tổng của các số chẵn vừa được nhập vào (các số nhập vào < 106).

Input:

- Dòng đầu chưa số nguyên dương n - Dòng sau chứa các số a1,…,an

Output: S là tổng các số chẵn.

Ví dụ:

INPUT OUTPUT

5

1 2 3 4 5

6

Bài tập 3.13: (DEMLE) Viết chương trình nhập vào các số nguyên cho đến khi nào gặp số 0 thì kết thúc. Hãy đếm xem có bao nhiêu số lẻ vừa được nhập vào (các số nhập vào < 106).

Input: Nhập a cho đến khi a=0 thì dừng Output: S là tổng các số lẻ.

Ví dụ:

INPUT OUTPUT

1 2 3 4 5 0 3

Bài tập 3.14: (LISTUS) Viết chương trình nhập vào số nguyên dương N < 106. In ra màn hình tất cả các ước số của N.

Input: n

Output: u1,…,uk là các ước của n.

Ví dụ:

INPUT OUTPUT

6 1 2 3 6

Ý tưởng:

Cho biến i chạy từ 1 tới N. Nếu N MOD i=0 thì viết i ra màn hình.

Bài tập 3.15: (UOCBOI) Viết chương trình tìm UCLN và BCNN của 2 số a, b được nhập vào từ bàn phím (a,b < 106).

Input: a, b

Output: UCLN và BCNN.

Ví dụ:

INPUT OUTPUT

20 12 4 60

Ý tưởng:

- Tìm UCLN: Lấy số lớn trừ số nhỏ cho đến khi a=b thì dừng.

Lúc đó: USCLN=a.

- BCNN(a,b) = a*b / UCLN(a,b).

Bài tập 3.16: (PRIME) Viết chương trình nhập vào số tự nhiên N <

106 rồi thông báo lên màn hình số đó có phải là số nguyên tố hay không (TRUE: là số nguyên tố, FALSE: không phải).

Input: N

Output: TRUE/FALSE tương ứng với N có phải là số nguyên tố?

Ví dụ:

INPUT OUTPUT

5 TRUE

Ý tưởng:

N là số nguyên tố nếu N không có ước số nào từ 2  √𝑵. Từ định nghĩa này ta đưa ra giải thuật:

- Đếm số ước số của N từ 2  √𝑵 lưu vào biến d.

- Nếu d=0 thì N là số nguyên tố.

Bài tập 3.17: (PERFECT) Số hoàn thiện là số tự nhiên có tổng các ước của nó (không kể chính nó) bằng chính nó. Viết chương trình kiểm tra số nguyên dương N < 106 được nhập vào từ bàn phím có phải là số hoàn thiện hay không? Ví dụ: 6, 28 là các số hoàn thiện. (TRUE: là số hoàn thiện, FALSE: không phải).

Input: N

Output: TRUE/FALSE tương ứng với N có phải là số hoàn thiện?

Ví dụ:

INPUT OUTPUT

6 TRUE

Bài tập 3.18: (COUNTSUM) Viết chương trình nhập vào số tự nhiên N < 1018 rồi thông báo lên màn hình số đó có bao nhiêu chữ số và tổng của các chữ số của N.

Input: N

Output: D và S là số chữ số và tổng các chữ số của N.

Ví dụ:

INPUT OUTPUT

2016 4 9

Bài tập 3.19: (GATHO) Viết chương trình để tìm lời giải cho bài toán sau:

Trong giỏ vừa thỏ vừa gà,

Một trăm cái cẳng, bốn ba cái đầu.

Hỏi có mấy gà, mấy thỏ?

Input: hai số nguyên dương m và n là tổng số đầu gà+thỏ và tổng số chân gà+thỏ (0 ≤ m, n ≤ 106).

Output: x và y là số lượng gà và thỏ. Nếu không có đáp án thì OUTPUT -1.

Ví dụ:

INPUT OUTPUT

43 100 36 7

INPUT OUTPUT

10 7 -1

Bài tập 3.20: (CONGDON) Viết chương trình nhập vào các số nguyên từ bàn phím cho đến khi nào gặp số nguyên tố thì kết thúc nhập (các số nhập vào < 106). Tính tổng các số chẵn vừa được nhập vào.

Input: Nhập a cho đến khi a là số nguyên tố thì dừng Output: S là tổng các số chẵn.

Ví dụ:

INPUT OUTPUT

4 6 9 10 5 20

Bài tập 3.21: (PRIMEFACT) Viết chương trình phân tích một số nguyên dương N < 106 ra thừa số nguyên tố.

Input: N

Output: f1,f2,...,fn là các thừa số nguyên tố Ví dụ:

INPUT OUTPUT

100 2 2 5 5

11 11

Bài tập 3.22: (FLOWER) Thầy Phương muốn mua một đóa hoa thật đẹp để tặng Khoa Tin học nhân ngày 20/11 trong phạm vi số tiền mà thầy Phương có. Thầy Phương có c đồng, ở chợ có bán 2 loại hoa: hoa Hồng với giá a đồng một nhánh, hoa Cúc với giá b đồng một nhánh.

Thầy Phương muốn mua được càng nhiều hoa càng tốt với giá trị của đóa hoa phải là lớn nhất (dĩ nhiên, không vượt quá số tiền hiện có của Thầy).

Các em hãy giúp thầy Phương mua được đóa hoa có giá trị lớn nhất.

Yêu cầu: Cho 3 số nguyên a, b, c (1 ≤ a , b ≤ 104, 0 ≤ c ≤ 106).

Hãy xác định giá trị của bó hoa mua được.

Input: một dòng chứa 3 số nguyên dương a, bc.

Output: một số nguyên là giá trị của đóa hoa mua được.

Ví dụ:

INPUT OUTPUT

2 3 11 11

Bài tập 3.23: (SNAIL) Con ốc sên đang ở gốc của một cái cây cao v mét tính từ gốc. Ốc sên muốn bò lên ngọn cây để ăn những lá non trên đó. Ban ngày ốc sên bò được a mét lên trên, nhưng ban đêm, khi ngủ nó bị trôi xuống dưới b mét.

Yêu cầu: Cho các số nguyên v, ab (1 ≤ b < av ≤ 109). Hãy xác định số ngày cần thiết để ốc sên lên tới ngọn cây.

Input: Ba số nguyên a, bv.

Output: Đưa ra một số nguyên - kết quả tìm được.

Ví dụ:

INPUT OUTPUT

2 1 5 4

Bài tập 3.24: (SPECNUM) Một số nguyên dương N được gọi là số đặc biệt nếu tổng các chữ số lẻ của N bằng tổng các chữ số chẵn của N.

Ví dụ: 1289, 134 là các số đặc biệt.

Yêu cầu: Cho hai số nguyên dương A và B, hãy đếm số lượng các số đặc biệt từ A tới B.

Input: gồm 1 dòng chứa hai số nguyên dương A và B (102 ≤ A<B <106).

Output: một số nguyên K là số lượng các số đặc biệt.

Ví dụ:

INPUT OUTPUT

100 150 4

Một phần của tài liệu Giáo trình lập trình cc++ cơ bản (Trang 47 - 60)

Tải bản đầy đủ (PDF)

(176 trang)