Tng hp ví d và bài tp ngôn ng lp trình C Phát K58TDHB - VNUA
1
Bng ni dung
1, LP TRÌNH S DNG NGÔN NG C ............................................................. 2
1.1, Toán hng ....................................................................................................... 2
1.2, Thc thi điu kin s dng lnh If-Else ......................................................... 2
1.3, Switch và Break ............................................................................................. 3
1.4, Vòng lp While, vòng lp Do-While, vòng lp For, vòng lp lng nhau, câu
lnh Break và câu lnh Continue .......................................................................... 4
1.4.1, Vòng lp While ....................................................................................... 4
1.4.2, Vòng lp Do-While ............................................................................... 10
1.4.3, Vòng lp For ......................................................................................... 11
1.4.4, Câu lnh Break ...................................................................................... 21
1.4.5, Câu lnh Continue ................................................................................. 21
1.5, Bài tp .......................................................................................................... 21
2. MNG VÀ CON TR ....................................................................................... 22
Tng hp ví d và bài tp ngôn ng lp trình C Phát K58TDHB - VNUA
2
1, LP TRÌNH S DNG NGÔN NG C
1.1, Toán hng
Ví d 1: Viết mt chương trình C so sánh hai cách s dng toán t ++
(hoặc --)?
Chú ý:
Để hiu hơn v toán hng ++ (hoc --) ta xét hai câu lnh sau:
cnt = count++;
cnt = ++count;
câu lnh đu tiên, giá tr ca 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 lnh th hai, giá tr ca biến count s đưc tăng lên 1, sau
đó giá tr này s đưc gán vào cnt.
Gii:
#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, Thc thi điu kin s dng lnh If-Else
Ví d 1: Viết mt chương trình C đc mt số t bàn phím và kiểm tra xem
nó có phải là s dương hay không?
Gii:
#include <stdio.h>
void main() {
int numb;
Tng hp ví d và bài tp ngôn ng lp trình C 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 mt chương trình C kiểm tra năm bất kỳ xem có phi năm
nhuận hay không?
Thut gii:
Năm nhun là năm chia hết cho 4 nhưng không chia hết cho 100 hoc chia hết cho
400.
Gii:
#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
Tng hp ví d và bài tp ngôn ng lp trình C Phát K58TDHB - VNUA
4
1.4, Vòng lp While, vòng lp Do-While, vòng lp For, vòng lp lng nhau,
câu lnh Break và câu lnh Continue
1.4.1, Vòng lp While
Ví d 1: Viết một chương trình C in ra đảo ngưc ca mt số.
Gii:
#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 ca hai số
dương?
Thut gii 1:
Ước s chung ln nht ca hai s đưc đnh nghĩa là s b chia ln nht mà c hai
s cùng chia hết, ví d USCLN ca 24 và 36 có th hiu:
Các s chia hết ca 24 là: 1, 2, 3, 4, 6, 8, 12, 24
Các s chia hết ca 36 là: 1, 2, 3, 4, 6, 9, 12, 18, 36
Như vy, s b chia ln nht mà c hai s 24 và 36 chia hết là 12. Vy USCLN ca
24 và 36 là 12.
Thut gii 2:
Chúng ta s dng thut toán Euclid như sau đ tìm USCLN ca hai s:
WHILE m ln hơn 0
DO
IF n ln hơn m THEN hoán v m và n.
Tng hp ví d và bài tp ngôn ng lp trình C Phát K58TDHB - VNUA
5
tr đi n t m.
END
Cui cùng n là USCLN.
Thut gii 3:
Mt thut toán khác đ tìm USCLN ca hai s như sau:
1, Đc 2 s a và b.
2, Lp li 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
Gii 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);
}
Gii 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;