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”.
ế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:
Phan2Chuong4.pdf

