
Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA
1
Bảng nội dung
1, LẬP TRÌNH SỬ DỤNG NGÔN NGỮ C ............................................................. 2
1.1, Toán hạng ....................................................................................................... 2
1.2, Thực thi điều kiện sử dụng lệnh If-Else ......................................................... 2
1.3, Switch và Break ............................................................................................. 3
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
lệnh Break và câu lệnh Continue .......................................................................... 4
1.4.1, Vòng lặp While ....................................................................................... 4
1.4.2, Vòng lặp Do-While ............................................................................... 10
1.4.3, Vòng lặp For ......................................................................................... 11
1.4.4, Câu lệnh Break ...................................................................................... 21
1.4.5, Câu lệnh Continue ................................................................................. 21
1.5, Bài tập .......................................................................................................... 21
2. MẢNG VÀ CON TRỎ ....................................................................................... 22

Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA
2
1, LẬP TRÌNH SỬ DỤNG NGÔN NGỮ C
1.1, Toán hạng
Ví dụ 1: Viết một chương trình C so sánh hai cách sử dụng toán tử ++
(hoặc --)?
Chú ý:
Để hiểu hơn về toán hạng ++ (hoặc --) ta xét hai câu lệnh sau:
cnt = count++;
cnt = ++count;
Ở 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
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
đó giá trị này sẽ được gán vào cnt.
Giải:
#include<stdio.h>
void main() {
int counter, precount, postcount;
counter = 24;
precount = ++counter;
postcount = counter++;
printf("\n%d %d", precount, postcount);
counter = 50;
postcount = counter--;
precount = --counter;
printf("\n%d %d", postcount, precount);
}
Kết quả:
25 25
50 48
1.2, Thực thi điều kiện sử dụng lệnh If-Else
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
nó có phải là số dương hay không?
Giải:
#include <stdio.h>
void main() {
int numb;

Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA
3
printf("Nhap vao so can kiem tra: ");
scanf("%d", &numb);
if (numb >= 0) {
printf("So vua nhap la so duong.");
}
}
Kết quả:
Nhap vao so can kiem tra:2912
2912
So vua nhap la so duong.
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
nhuận hay không?
Thuật giải:
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.
Giải:
#include <stdio.h>
void main() {
int y;
printf("Nhap vao nam can kiem tra: ");
scanf("%d", &y);
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
printf("Nam vua nhap la nam nhuan.");
} else {
printf("Nam vua nhap khong phai nam nhuan.");
}
}
Kết quả:
Nhap vao nam can kiem tra:2000
2000
Nam vua nhap la nam nhuan.
1.3, Switch và Break

Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA
4
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 lệnh Break và câu lệnh Continue
1.4.1, Vòng lặp While
Ví dụ 1: Viết một chương trình C in ra đảo ngược của một số.
Giải:
#include <stdio.h>
void main() {
int n, k;
printf("Nhap vao mot so: ");
scanf("%d", &n);
printf("Dao nguoc cua so la: ");
while (k != 0) {
int m = n % 10;
k = n / 10;
n = k;
printf("%d", m);
}
}
Kết quả:
Nhap vao mot so:9123
9123
Dao nguoc cua so la: 3219
Ví dụ 2: Viết một chương trình tìm ước số chung lớn nhất của hai số
dương?
Thuật giải 1:
Ướ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
số cùng chia hết, ví dụ USCLN của 24 và 36 có thể hiểu:
Các số chia hết của 24 là: 1, 2, 3, 4, 6, 8, 12, 24
Các số chia hết của 36 là: 1, 2, 3, 4, 6, 9, 12, 18, 36
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
24 và 36 là 12.
Thuật giải 2:
Chúng ta sử dụng thuật toán Euclid như sau để tìm USCLN của hai số:
WHILE m lớn hơn 0
DO
IF n lớn hơn m THEN hoán vị m và n.

Tổng hợp ví dụ và bài tập ngôn ngữ lập trình C – Vũ Phát K58TDHB - VNUA
5
trừ đi n từ m.
END
Cuối cùng n là USCLN.
Thuật giải 3:
Một thuật toán khác để tìm USCLN của hai số như sau:
1, Đọc 2 số a và b.
2, Lặp lại bước 5 trong khi a khác 0.
3, Đặt USCLN = a
4, a = b % a
5, b = USCLN
6, In USCLN
8, Thoát
Giải 1:
#include <stdio.h>
void main() {
int n1, n2;
printf("Nhap vao hai so: ");
scanf("%d %d", &n1, &n2);
int greaterNumber = n2;
int gcd = 1;
if (n1 > n2) greaterNumber = n1;
int index = 2;
while (index <= greaterNumber && greaterNumber > 2) {
if ((n1 % index == 0) && (n2 % index == 0)) {
gcd = index;
}
index++;
}
printf("Uoc so chung lon nhat cua hai so la: %d", gcd);
}
Giải 2:
#include <stdio.h>
int gcd(int m1, int n1) {
int m = m1;
int n = n1;
int temp;
while (m > 0) {
if (n > m) {
temp = n;

