Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA<br />
<br />
Bảng nội dung<br />
1, LẬP TRÌNH SỬ DỤNG NGÔN NGỮ C ............................................................. 2<br />
1.1, Toán hạng ....................................................................................................... 2<br />
1.2, Thực thi điều kiện sử dụng lệnh If-Else......................................................... 2<br />
1.3, Switch và Break ............................................................................................. 3<br />
1.4, Vòng lặp While, vòng lặp Do-While, vòng lặp For, vòng lặp lồng nhau, câu<br />
lệnh Break và câu lệnh Continue .......................................................................... 4<br />
1.4.1, Vòng lặp While ....................................................................................... 4<br />
1.4.2, Vòng lặp Do-While ............................................................................... 10<br />
1.4.3, Vòng lặp For ......................................................................................... 11<br />
1.4.4, Câu lệnh Break ...................................................................................... 21<br />
1.4.5, Câu lệnh Continue................................................................................. 21<br />
1.5, Bài tập .......................................................................................................... 21<br />
2. MẢNG VÀ CON TRỎ ....................................................................................... 22<br />
<br />
1<br />
<br />
Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA<br />
<br />
1, LẬP TRÌNH SỬ DỤNG NGÔN NGỮ C<br />
1.1, Toán hạng<br />
Ví dụ 1: Viết một chương trình C so sánh hai cách sử dụng toán tử ++<br />
(hoặc --)?<br />
Chú ý:<br />
Để hiểu hơn về toán hạng ++ (hoặc --) ta xét hai câu lệnh sau:<br />
cnt = count++;<br />
cnt = ++count;<br />
Ở câu lệnh đầu tiên, giá trị của biến count sẽ được gán vào cnt trước sau đó count<br />
sẽ bị tăng lên 1. Còn câu lệnh thứ hai, giá trị của biến count sẽ được tăng lên 1, sau<br />
đó giá trị này sẽ được gán vào cnt.<br />
Giải:<br />
#include<br />
void main() {<br />
int counter, precount, postcount;<br />
counter = 24;<br />
precount = ++counter;<br />
postcount = counter++;<br />
printf("\n%d %d", precount, postcount);<br />
counter = 50;<br />
postcount = counter--;<br />
precount = --counter;<br />
printf("\n%d %d", postcount, precount);<br />
}<br />
<br />
Kết quả:<br />
25 25<br />
50 48<br />
<br />
1.2, Thực thi điều kiện sử dụng lệnh If-Else<br />
Ví dụ 1: Viết một chương trình C đọc một số từ bàn phím và kiểm tra xem<br />
nó có phải là số dương hay không?<br />
Giải:<br />
#include <br />
void main() {<br />
int numb;<br />
<br />
2<br />
<br />
Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA<br />
<br />
printf("Nhap vao so can kiem tra: ");<br />
scanf("%d", &numb);<br />
if (numb >= 0) {<br />
printf("So vua nhap la so duong.");<br />
}<br />
}<br />
<br />
Kết quả:<br />
Nhap vao so can kiem tra:2912<br />
2912<br />
So vua nhap la so duong.<br />
<br />
Ví dụ 2: Viết một chương trình C kiểm tra năm bất kỳ xem có phải năm<br />
nhuận hay không?<br />
Thuật giải:<br />
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<br />
400.<br />
Giải:<br />
#include <br />
void main() {<br />
int y;<br />
printf("Nhap vao nam can kiem tra: ");<br />
scanf("%d", &y);<br />
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {<br />
printf("Nam vua nhap la nam nhuan.");<br />
} else {<br />
printf("Nam vua nhap khong phai nam nhuan.");<br />
}<br />
}<br />
<br />
Kết quả:<br />
Nhap vao nam can kiem tra:2000<br />
2000<br />
Nam vua nhap la nam nhuan.<br />
<br />
1.3, Switch và Break<br />
<br />
3<br />
<br />
Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA<br />
1.4, Vòng lặp While, vòng lặp Do-While, vòng lặp For, vòng lặp lồng nhau,<br />
câu lệnh Break và câu lệnh Continue<br />
1.4.1, Vòng lặp While<br />
Ví dụ 1: Viết một chương trình C in ra đảo ngược của một số.<br />
Giải:<br />
#include <br />
void main() {<br />
int n, k;<br />
printf("Nhap vao mot so: ");<br />
scanf("%d", &n);<br />
printf("Dao nguoc cua so la: ");<br />
while (k != 0) {<br />
int m = n % 10;<br />
k = n / 10;<br />
n = k;<br />
printf("%d", m);<br />
}<br />
}<br />
<br />
Kết quả:<br />
Nhap vao mot so:9123<br />
9123<br />
Dao nguoc cua so la: 3219<br />
<br />
Ví dụ 2: Viết một chương trình tìm ước số chung lớn nhất của hai số<br />
dương?<br />
Thuật giải 1:<br />
Ước số chung lớn nhất của hai số được định nghĩa là số bị chia lớn nhất mà cả hai<br />
số cùng chia hết, ví dụ USCLN của 24 và 36 có thể hiểu:<br />
Các số chia hết của 24 là: 1, 2, 3, 4, 6, 8, 12, 24<br />
Các số chia hết của 36 là: 1, 2, 3, 4, 6, 9, 12, 18, 36<br />
Như vậy, số bị chia lớn nhất mà cả hai số 24 và 36 chia hết là 12. Vậy USCLN của<br />
24 và 36 là 12.<br />
Thuật giải 2:<br />
Chúng ta sử dụng thuật toán Euclid như sau để tìm USCLN của hai số:<br />
WHILE m lớn hơn 0<br />
DO<br />
IF n lớn hơn m THEN hoán vị m và n.<br />
4<br />
<br />
Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA<br />
trừ đi n từ m.<br />
END<br />
Cuối cùng n là USCLN.<br />
Thuật giải 3:<br />
Một thuật toán khác để tìm USCLN của hai số như sau:<br />
1, Đọc 2 số a và b.<br />
2, Lặp lại bước 5 trong khi a khác 0.<br />
3, Đặt USCLN = a<br />
4, a = b % a<br />
5, b = USCLN<br />
6, In USCLN<br />
8, Thoát<br />
Giải 1:<br />
#include <br />
void main() {<br />
int n1, n2;<br />
printf("Nhap vao hai so: ");<br />
scanf("%d %d", &n1, &n2);<br />
int greaterNumber = n2;<br />
int gcd = 1;<br />
if (n1 > n2) greaterNumber = n1;<br />
int index = 2;<br />
while (index 2) {<br />
if ((n1 % index == 0) && (n2 % index == 0)) {<br />
gcd = index;<br />
}<br />
index++;<br />
}<br />
printf("Uoc so chung lon nhat cua hai so la: %d", gcd);<br />
}<br />
<br />
Giải 2:<br />
#include <br />
int gcd(int m1, int n1) {<br />
int m = m1;<br />
int n = n1;<br />
int temp;<br />
while (m > 0) {<br />
if (n > m) {<br />
temp = n;<br />
<br />
5<br />
<br />