Lập trình căn bản - Chương 4: Các lệnh có cấu trúc

Học xong chương này,sinh viên sẽnắm được các vấn đềsau:

ƒ Khối lệnh trong C.

ƒ Cấu trúc rẽnhánh.

ƒ Cấu trúc lựa chọn.

ƒ Cấu trúc vòng lặp.

ƒ Các câu lệnh “đặc biệt”.

pdf20 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 9450 | Lượt tải: 2download
Tóm tắt nội dung Lập trình căn bản - Chương 4: Các lệnh có cấu trúc, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ết chương trình in ra trên màn hình một ma trận có n dòng m cột như 
sau: 
1 2 3 4 5 6 7 
2 3 4 5 6 7 8 
3 4 5 6 7 8 9 
Trang 56 
Lập trình căn bản 
… 
#include 
#include 
int main () 
{ unsigned int dong, cot, n, m; 
 clrscr(); 
 printf("\n Nhap vao so dong va so cot :"); 
 scanf("%d%d",&n,&m); 
 dong=0; 
 while (dong<n) 
 { 
 printf("\n"); 
 cot=1; 
 while (cot<=m) 
 { 
 printf("%d\t",dong+cot); 
 cot++; 
 } 
 dong++; 
 } 
 getch(); 
 return 0; 
} 
Kết quả khi nhập 3 dòng 6 cột như sau 
IV.3. Vòng lặp do… while 
Vòng lặp do … while giống như vòng lặp for, while, dùng để lặp lại một công 
việc nào đó khi điều kiện còn đúng. 
Cú pháp: 
do 
while () 
Lưu đồ: 
Giải thích: 
Đ kiện 
Công việc 
Đúng
Sai
Thoát 
- : được thể hiện bằng 1 câu lệnh hay 1 
khối lệnh. 
- Trước tiên công việc được thực hiện trước, sau đó 
mới kiểm tra Biểu thức điều kiện. 
- Nếu điều kiện sai thì thoát khỏi lệnh do …while. 
- Nếu điều kiện còn đúng thì thực hiện công việc rồi 
quay lại kiểm tra điều kiện tiếp. 
Trang 57 
Lập trình căn bản 
 Lưu ý: 
- Lệnh do…while thực hiện công việc ít nhất 1 lần. 
- Vòng lặp dừng lại khi điều kiện sai. 
- Khối lệnh thực hiện công việc có thể rỗng, có thể làm thay đổi điều kiện. 
Ví dụ 1: Viết đoạn chương trình in dãy số nguyên từ 1 đến 10. 
#include 
#include 
int main () 
{ int i; 
 clrscr(); 
 printf("\n Day so tu 1 den 10 :"); 
 i=1; 
 do 
 printf("%d ",i++); 
 while (i<=10); 
 getch(); 
 return 0; 
} 
Kết quả chương trình như sau: 
Ví dụ 2: Viết chương trình nhập vào một số nguyên n. Tính tổng của các số 
nguyên từ 1 đến n. 
#include 
#include 
int main () 
{ unsigned int n,i,tong; 
 clrscr(); 
 printf("\n Nhap vao so nguyen duong n:"); 
 scanf("%d",&n); 
 tong=0; 
 i=1; 
 do 
 { 
 tong+=i; 
 i++; 
 } while (i<=n); 
 printf("\n Tong tu 1 den %d =%d ",n,tong); 
 getch(); 
 return 0; 
} 
Nếu chúng ta nhập vào số 9 thì kết quả như sau: 
Ví dụ 3: Viết chương trình in ra trên màn hình một ma trận có n dòng m cột như 
sau (n, m>=1): 
Trang 58 
Lập trình căn bản 
1 2 3 4 5 6 7 
2 3 4 5 6 7 8 
3 4 5 6 7 8 9 
… 
#include 
#include 
int main () 
{ unsigned int dong, cot, n, m; 
 clrscr(); 
 printf("\n Nhap vao so dong va so cot :"); 
 scanf("%d%d",&n,&m); 
 dong=0; 
 do 
 { 
 printf("\n"); 
 cot=1; 
 do 
 { 
 printf("%d\t",dong+cot); 
 cot++; 
 } while (cot<=m); 
 dong++; 
 } while (dong<n); 
 getch(); 
 return 0; 
} 
Kết quả khi nhập 3 dòng 6 cột như sau 
IV.4. So sánh các vòng lặp 
Vòng lặp for, while: 
- Kiểm tra điều kiện trước thực hiện công việc sau nên đoạn lệnh thực hiện 
công việc có thể không được thực hiện . 
- Vòng lặp kết thúc khi nào điều kiện sai. 
Vòng lặp do…while: 
- Thực hiện công việc trước kiểm tra điều kiện sau nên đoạn lệnh thực hiện 
công việc được thực hiện ít nhất 1 lần. 
- Vòng lặp kết thúc khi nào điều kiện sai. 
V. CÁC CÂU LỆNH ĐẶC BIỆT 
V.1. Lệnh break 
Cú pháp: break 
Dùng để thoát khỏi vòng lặp. Khi gặp câu lệnh này trong vòng lặp, chương 
trình sẽ thoát ra khỏi vòng lặp và chỉ đến câu lệnh liền sau nó. Nếu nhiều vòng lặp --> 
break sẽ thoát ra khỏi vòng lặp gần nhất. Ngoài ra, break còn được dùng trong cấu trúc 
lựa chọn switch. 
Trang 59 
Lập trình căn bản 
IV.2. Lệnh continue 
Cú pháp: continue 
- Khi gặp lệnh này trong các vòng lặp, chương trình sẽ bỏ qua phần còn lại 
trong vòng lặp và tiếp tục thực hiện lần lặp tiếp theo. 
- Ðối với lệnh for, biểu thức 3 sẽ được tính trị và quay lại bước 2. 
- Ðối với lệnh while, do while; biểu thức điều kiện sẽ được tính và xét xem có 
thể tiếp tục thực hiện nữa hay không? (dựa vào kết quả của biểu thức 
điều kiện). 
VI. BÀI TẬP 
VI.1 Mục đích yêu cầu 
Làm quen và nắm vững các lệnh có cấu trúc của C, biết cách chọn lựa trong 
trường hợp nào sẽ sử dụng cấu trúc nào. Thực hiện các các chương trình trong phần 
nội dung bằng cách kết hợp các lệnh lặp, các lệnh rẽ nhánh và các lệnh đơn. 
VI.2 Nội dung 
1. Viết chương trình nhập 3 số từ bàn phím, tìm số lớn nhất trong 3 số đó, in kết quả 
lên màn hình. 
2. Viết chương trình tính chu vi, diện tích của tam giác với yêu cầu sau khi nhập 3 số 
a, b, c phải kiểm tra lại xem a, b, c có tạo thành một tam giác không? Nếu có thì tính 
chu vi và diện tích. Nếu không thì in ra câu " Không tạo thành tam giác". 
3. Viết chương trình giải phương trình bậc nhất ax+b=0 với a, b nhập từ bàn phím. 
4. Viết chương trình giải phương trình bậc hai ax2+bx + c = 0 với a, b, c nhập từ bàn 
phím. 
5. Viết chương trình nhập từ bàn phím 2 số a, b và một ký tự ch. 
Nếu: ch là “+“ thì thực hiện phép tính a + b và in kết quả lên màn hình. 
ch là “–“ thì thực hiện phép tính a - b và in kết quả lên màn hình. 
 ch là “*” thì thực hiện phép tính a * b và in kết quả lên màn hình. 
 ch là “/” thì thực hiện phép tính a / b và in kết quả lên màn hình. 
6. Viết chương trình nhập vào 2 số là tháng và năm của một năm. Xét xem tháng đó 
có bao nhiêu ngày? Biết rằng: 
Nếu tháng là 4, 6, 9, 11 thì số ngày là 30. 
Nếu tháng là 1, 3, 5, 7, 8, 10, 12 thì số ngày là 31. 
Nếu tháng là 2 và năm nhuận thì số ngày 29, ngược lại thì số ngày là 28. 
7. Có hai phương thức gửi tiền tiết kiệm: gửi không kỳ hạn lãi suất 2.4%/tháng, mỗi 
tháng tính lãi một lần, gửi có kỳ hạn 3 tháng lãi suất 4%/tháng, 3 tháng tính lãi một 
lần. 
Trang 60 
Lập trình căn bản 
Viết chương trình tính tổng cộng số tiền cả vốn lẫn lời sau một thời gian gửi 
nhập từ bàn phím. 
8. Một số nguyên dương chia hết cho 3 nếu tổng các chữ số của nó chia hết cho 3. Viết 
chương trình nhập vào một số có 3 chữ số, kiểm tra số đó có chia hết cho 3 dùng tính 
chất trên.( if ) 
9. Trò chơi "Oẳn tù tì": trò chơi có 2 người chơi mỗi người sẽ dùng tay để biểu thị một 
trong 3 công cụ sau: Kéo, Bao và Búa. 
Nguyên tắc: Kéo thắng bao. 
 Bao thắng búa. 
 Búa thắng kéo. 
Viết chương trình mô phỏng trò chơi này cho hai người chơi và người chơi với 
máy. (switch) 
10. Viết chương trình tính tiền điện gồm các khoản sau: 
Tiền thuê bao điện kế : 1000 đồng / tháng. 
Định mức sử dụng điện cho mỗi hộ là 50 Kw 
Phần định mức tính giá 450 đồng /Kwh 
Nếu phần vượt định mức <= 50 Kw tính giá phạt cho phần này là 700 
đồng/Kwh . 
Nếu phần vượt định mức lớn 50 Kw và nhỏ hơn 100Kw tính giá phạt cho phần 
này là 910 đồng/Kwh 
Nếu phần vượt định mức lớn hơn hay bằng 100 Kw tính giá phạt cho phần này 
là 1200 đồng/Kwh . 
Với : chỉ số điện kế cũ và chỉ số điện kế mới nhập vào từ bàn phím. In ra màn 
hình số tiền trả trong định mức, vượt định mức và tổng của chúng. (if) 
11. Viết chương trình nhận vào giờ, phút, giây dạng (hh:mm:ss ), từ bàn phím. Cộng 
thêm một số giây vào và in ra kết quả dưới dạng ( hh:mm:ss ). 
12.Viết chương trình nhập vào ngày tháng năm của một ngày, kiểm tra nó có hợp lệ 
không. 
13. Kiểm tra một ký tự nhập vào thuộc tập hợp nào trong các tập ký tự sau: 
Các ký tự chữ hoa: 'A' ...'Z' 
Các ký tự chữ thường: 'a' ... 'z' 
Các ký tự chữ số : '0' ... '9' 
Các ký tự khác. 
14. Hệ thập lục phân dùng 16 ký số bao gồm các ký tự 0 .. 9 và A, B, C, D, E ,F. 
Các ký số A, B, C, D, E, F có giá trị tương ứng trong hệ thập phân như sau: 
A 10 
B 11 
C 12 
D 13 
E 14 
F 15 
Trang 61 
Lập trình căn bản 
Hãy viết chương trình cho nhập vào ký tự biểu diễn một ký số của hệ thập lục 
phân và cho biết giá trị thập phân tương ứng. Trường hợp ký tự nhập vào không thuộc 
các ký số trên, đưa ra thông báo lỗi : 
 "Hệ thập lục phân không dùng ký số này" 
15. Viết chương trình nhập vào ngày tháng năm của ngày hôm nay, in ra ngày tháng 
năm của ngày mai. 
16. Viết chương trình tính các tổng sau: 
 a) S=1 + 2 + ... + n 
 b) S=1/2 + 2/3 + ... +n/(n+1) 
 c) S= - 1 +2 - 3 +4 - ... + (-1)nn 
17. Viết chương trình nhập vào một dãy n số, tìm số lớn nhất của dãy và xác định vị trí 
của số lớn nhất trong dãy. 
18. Fibonacci là một dãy số được định nghĩa như sau: 
 Fn = ⎪⎩
⎪⎨
⎧
>+
=
=
− 2n nÕu ,FF
2 n nÕu 2,
1n nÕu 1,
2n1-n
Viết chương trình in ra màn hình dãy Fibonacci có n số hạng, n nhập từ bàn 
phím khi cho chạy chương trình. 
19. Viết chương trình đếm số chữ số của một số nguyên n. 
20. Tìm số nguyên dương k nhỏ nhất sao cho 2k > n với n là một số nguyên dương 
nhập từ bàn phím. 
21. Viết chương trình in ra số đảo ngược của một số nguyên n, với n nhập từ bàn phím. 
22. Tính giá trị trung bình của một dãy số thực, kết thúc dãy với -1. 
23. Viết chương trình mô phỏng phép chia nguyên DIV 2 số nguyên a và b như sau: để 
chia nguyên a và b ta tính trị a-b, sau đó lấy hiệu tìm được lại trừ cho b... tiếp tục cho 
đến khi hiệu của nó nhỏ hơn b. Số lần thực hiện được các phép trừ ở trên sẽ bằng trị 
của phép chia nguyên. 
24. Tìm số nguyên dương N nhỏ nhất sao cho 
 1+1/2+ ...+1/N > S, với S nhập từ bàn phím. 
25. Viết chương trình tính P=2*4*6*...*(2n), n nhập từ bàn phím. 
26. Viết chương trình tìm UCLN và BCNN của hai số a và b theo thuật toán sau (Ký 
hiệu UCLN của a, b là (a,b) còn BCNN là [a,b]) 
- Nếu a chia hết cho b thì (a,b) = b 
- Nếu a = b*q + r thì (a,b) = (b,r) 
- [a,b] = a*b/(b,r) 
27. Viết chương trình nhập vào một số nguyên dương n, in ra màn hình các số nguyên 
tố p <= n. Số nguyên p gọi là số nguyên tố nếu p chỉ chia hết cho một và chia hết cho 
bản thân nó. 
28. Viết chương trình tính gần đúng căn bậc hai của một số dương a theo phương pháp 
Newton : Trước hết cho x0=(1 + a)/2 sau đó là công thức truy hồi: xn+1=( xn + a/xn)/2 
 xn+1 - xn
 xn
 < e thì căn bậc hai của a bằng xn+1Nếu: 
Trang 62 
Lập trình căn bản 
Trong đó e là một hằng số cho trước làm độ chính xác. 
29. Viết chương trình tính gần đúng căn bậc n của một số dương a theo phương pháp 
Newton : Trước hết cho x0= a/n sau đó là công thức truy hồi: 
 (n-1) xkn +a 
 nxkn-1
xk+1 = 
Nếu |a- xnn| < e thì xn là căn bậc n của a. Trong đó e là một hằng số cho trước 
làm độ chính xác. Nếu a < 0 và n chẵn thì không tồn tại căn. 
Trang 63 

File đính kèm:

  • pdfPhan2Chuong4.pdf
Tài liệu liên quan