Tìm số ngày của năm Tên file chương trình: SoNgay.* Nhập vào số năm n, cho biết năm n có bao nhiêu ngày.. Cho biết kết quả của phép toán với 2 số đã nhập Viết chương trình bằng câu lệnh
Trang 1Biên soạn: Phạm Xuân Kiên
TP.HỒ CHÍ MINH, 2015
Trang 3NỘI DUNG
Mỗi bài tập thực hành gồm 3 phần
1 Bài tập MẪU
2 Bài tập CƠ BẢN
3 Bài tập NÂNG CAO
Buổi 1: NHẬP XUẤT VÀ BIẾU THỨC TÍNH TOÁN 2
Buổi 2: CÂU LỆNH CHỌN LỰA IF VÀ SWITCH 7
Buổi 3: CÂU LỆNH CHỌN LỰA IF VÀ SWITCH (Tiếp theo) 10
Buổi 4: CÂU LỆNH LẶP FOR – WHILE 13
Buổi 5: CÂU LỆNH LẶP FOR – WHILE (Tiếp theo) 16
Buổi 6: KẾT HỢP CÂU LỆNH LẶP VÀ CÂU LỆNH CHỌN LỰA 18
Buổi 7: HÀM 20
Buổi 8: HÀM (Tiếp theo) 24
Buổi 9: MẢNG 1 CHIỀU – TÌM KIẾM 25
Buổi 10: MẢNG 1 CHIỀU – BIẾN ĐỔI TRÊN MẢNG 29
Buổi 11: MẢNG 2 CHIỀU – TÌM KIẾM 33
Buổi 12: MẢNG 2 CHIỀU – BIẾN ĐỔI TRÊN MẢNG 41
Buổi 13: CON TRỎ 44
Buổi 14: FILE VĂN BẢN 47
Buổi 15: CHUỖI – XÂU KÝ TỰ 51
Buổi 16: CHUỖI – XÂU KÝ TỰ (Tiếp theo) 54
Buổi 17: CẤU TRÚC - STRUCT 55
Buổi 18: ĐỆ QUY 58 Buổi 19: Ôn tập
Buổi 20: Kiểm tra
Trang 4Buổi 1: NHẬP XUẤT VÀ BIẾU THỨC TÍNH TOÁN
A Mục tiêu
Làm quen với môi trường Visual C++ (Orwell Dev-C++; Code::Blocks): Soạn thảo, biên dịch và thực thi chương trình
Nhập, xuất các biến số nguyên, số thực
Biểu diễn các biểu thức toán học bằng ngôn ngữ C
B Bài tập mẫu
Viết chương trình in ra 1 dòng chữ sau ra màn hình Console:
CHUONG TRINH C DAU TIEN TRONG NGHE LAP TRINH
Viết chương trình in ra 2 dòng chữ sau ra màn hình Console:
Whoever is happy will make others happy too
Bài tập 3 Nhập/Xuất số nguyên Tên file chương trình: NhapXuatSoNguyen.*
Viết chương trình nhập một số nguyên và in lại số đã nhập theo các cách như sau:
Nhap so nguyen a: 5
So ban da nhap la: 5
5 la so ban da nhap
So 5 la so ban da nhap
Trang 5printf("So ban da nhap la: %d \n", a);
printf("%d la so ban da nhap \n", a);
printf("So %d la so ban da nhap \n", a);
}
Bài tập 4 Nhập/Xuất số thực Tên file chương trình: NhapXuatSoThuc.*
Viết chương trình nhập vào 2 số thực và in lại 2 số đã nhập
scanf("%lf%lf", &a, &b);
printf("So ban da nhap a: %lf va b: %lf\n", a, b);
}
Nhập 2 số nguyên a và b Tính tổng của 2 số này
Trang 6Nhập vào số thực a Hãy tính căn bậc 2 của a
Viết chương trình in ra nhãn gồm nhiều dòng như sau:
Bài tập 2 Tính diện tích và chu hình tròn Tên file chương trình: HinhTron.*
Nhập vào bán kính R của một hình tròn Hãy tính diện tích và chu vi hình tròn đó theo công thức:
𝑆 = 3.14𝑥𝑅2
𝑃 = 2𝑥3.14𝑥𝑅
In kết quả với 1 số lẻ thập phân
Mẫu chương trình thực thi như sau:
Nhap ban kinh R: 5
Dien tich S = 78.5
Trang 7Chu vi P = 31.4
Bài tập 3 Tính diện tích tam giác Tên file chương trình: DienTichTamGiac.*
Cho 3 số thực a, b, c là độ dài 3 cạnh của một tam giác Hãy tính diện tích tam giác này theo công thức Heron:
In kết quả với 2 số lẻ thập phân
Mẫu chương trình thực thi như sau:
Nhap do dai canh a: 2
Nhap do dai canh b: 4
Nhap do dai canh c: 3
Dien tich tam giac S = 2.90
Một thiết bị hoạt động được h giờ, m phút và s giây Hãy viết chương trình chuyển thời gian đó sang tổng số giây
Mẫu chương trình thực thi như sau:
Nhap so h, m, n: 1 20 10
Tong so giay la: 4810
Bài tập 6 Đổi sang giờ phút giây Tên file chương trình: DoiSangGioPhutGiay.*
Một thiết bị hoạt động được t giây Hãy viết chương trình chuyển số giây đó dưới dạng số giờ,
số phút và số giây
Cho số nguyên x có 4 chữ số Hãy tìm số y là số đảo của số x, tức là số có các chữ số viết theo thứ tự ngược lại của x
Ví dụ: x = 1234
y = 4321
Bài tập 8 Tìm hiểu / thu thập những thông báo lỗi thường gặp
Ví dụ:
Gõ chương trình thiếu dấu “;”
Viết chương trình không khai báo biến
Một biến được khai báo 2 lần, …
D Bài tập nâng cao
Tính khoảng cách giữa 2 điểm A(𝑥1, 𝑦1) và B(𝑥2, 𝑦2)
Trang 8Bài tập 2 Độ sang Radian Tên file chương trình: DoSangRadian.*
Tìm công thức và viết chương trình chuyển một góc từ độ sang radian
Nhập số nguyên x và tính giá trị biểu thức:
2 / 3
5 | |
!
5 x
x x
x
f
Bài tập 4 Chu vi đa giác đều Tên file chương trình: ChuViDaGiacDeu.*
Tìm công thức và lập trình tính chu vi của đa giác đều n cạnh nội tiếp đường tròn bán kính R
Nhập số thực a và số nguyên n Hãy tính n
a
Nhập 3 số nguyên a, b và m với điều kiện (1 a b, 2.000.000.000 và 1 m 45.000) Hãy tính số dư r = (a.b) mod m
Bài tập 7 Tiếp tục về nhà Tìm hiểu / thu thập những thông báo lỗi thường gặp (Tạo một bộ
sưu tập các thông báo lỗi thông dụng)
Trang 9Buổi 2: CÂU LỆNH CHỌN LỰA IF VÀ SWITCH
A Mục tiêu
Hiểu các phép toán so sánh, logic: >, <, >= <=, ==, !=, &&, ||, !
Xây dựng chương trình có sử dụng câu lệnh chọn lựa if, if-else, if lồng nhau
B Bài tập mẫu
Bài tập 1 Biểu thức so sánh đơn giản Tên file chương trình: Max2So.*
Viết chương trình nhập vào 2 số thực a, b Tìm giá trị lớn nhất của 2 số đó
Trang 10return 0;
}
Bài tập 2 Biểu thức so sánh phức tạp Tên file chương trình: PhepToanLogic.*
Nhập số nguyên n Kiểm tra xem n có thỏa 100 ≤ 𝑛 ≤ 1000 hay không?
Nếu n thỏa điều kiện thì in ra thông báo “n thuoc doan [100, 1000]”
Nếu không thỏa thì in ra thông báo “n khong thuoc doan [100, 1000]”
printf("n thuoc doan [100, 1000]");
printf("n khong thuoc doan [100, 1000]");
}
Bài tập 3 Giải phuơng trình bậc 1 Tên file chương trình: PhuongTrinhBac1.*
Nhập 2 số thực a, b Tìm nghiệm của phương trình bậc 1
ax + b = 0 Chương trình mẫu
Trang 11Nhập vào 4 số thực a, b, c, d Hãy tìm giá trị lớn nhất trong 4 số đó
Nhập vào 4 số thực a, b, c, d Hãy tìm giá trị nhỏ nhất trong 4 số đó
Bài tập 3 Tìm số ngày của năm Tên file chương trình: SoNgay.*
Nhập vào số năm n, cho biết năm n có bao nhiêu ngày Biết rằng năm nhuần là năm chia hết cho 400 hay chia hết cho 4 nhưng không chia hết cho 100 Ví dụ: năm 2004, 2008, 2012 là năm nhuần và có số ngày là 366, năm 1945 không phải là năm nhuần và có số ngày là 365
Bài tập 4 Kiểm tra 3 cạnh tam giác Tên file chương trình: KiemTra3CanhTamGiac.*
Nhập 3 số thực a, b, c Kiểm tra xem a, b, c có phải là giá trị của 3 cạnh của một tam giác hay không
Bài tập 5 Giải phương trình bậc 2 Tên file chương trình: PhuongTrinhBac2.*
Nhập 3 số thực a, b, c Hãy tìm nghiệm của phương trình bậc 2:
2
0
ax bx c
Trang 12Buổi 3: CÂU LỆNH CHỌN LỰA IF VÀ SWITCH (Tiếp theo)
A Mục tiêu
Luyện tập thêm cách viết câu lệnh chọn lựa if và switch
B Bài tập mẫu
Viết chương trình nhập vào 1 số từ 0 đến 5 Cho biết tên gọi tiếng Anh của từ vừa nhập
Trang 13Viết chương trình nhập vào 2 số thực và một phép toán (+, -, *, /) Cho biết kết quả của phép toán với 2 số đã nhập (Viết chương trình bằng câu lệnh if, sau đó viết chương trình bằng câu lệnh switch để so sánh)
Bài tập 2 Điểm trung bình Tên file chương trình: DiemTrungBinh.*
Viết chương trình nhập vào 3 điểm: Toán, Lý, Hóa Tính điểm trung bình và phân loại học sinh như sau:
DTB = (Toán * 2 + Lý * 3 + Hóa) / 6
Tiêu chuẩn xếp loại:
Nếu 8 ≤ DTB ≤ 10 thì xếp loại “Giỏi”
Nếu 6.5 ≤ DTB < 8 thì xếp loại “Khá”
Nếu 5≤ DTB < 6.5 thì xếp loại “Trung bình”
Nếu DTB < 5 thì xếp loại “Yếu”
Trang 14Mẫu thực thi chương trình như sau:
Toan: 8
Ly: 7
Hoa: 10
Diem trung binh la: 7.83
Xep loai: Kha
Bài tập 3 Giải hệ phương trình Tên file chương trình: HePhuongTrinh.*
Nhập 6 số thực a, b, c, d, e, f Hãy tìm nghiệm của hệ phương trình sau:
Hoán đổi a, b, c với nhau sao cho a b c
Kiểm tra xem bộ (a, b, c) có lập thành 3 cạnh của một tam giác không
Nếu là tam giác, kiểm tra xem đó làm tam giác gì (thường, cân, vuông, vuông cân, đều)
D Bài tập nâng cao
Bài tập 1.Giải phương trình trùng phương
Tên file chương trình: PhuongTrinhTrungPhuong.*
Nhập 3 số thực a, b, c Hãy tìm nghiệm của phương trình trùng phương
0
ax bx c
Bài tập 2 Tìm ngày số ngày của tháng Tên file chương trình: TimNgayTrongThang.*
Nhập vào tháng (m) và năm (y) Hãy cho biết trong tháng của năm đó có bao nhiêu ngày (dmax)
Bài tập 3 Kiểm tra ngày hợp lệ Tên file chương trình: KiemTraNgayHopLe.*
Nhập vào 3 số nguyên: d (ngày), m (tháng), y (năm) Kiểm tra xem ngày được tạo bởi 3 số đó
có phải ngày hợp lệ không
Ví dụ:
Ngày 31/10/2013
Hợp lệ Ngày 32/10/2013
Không hợp lệ
Nhập vào 3 số nguyên: d (ngày), m (tháng), y (năm) biểu diễn một ngày hợp lệ Hãy cho biết ngày kế tiếp của ngày đã nhập là ngày gì
Nhập vào 3 số nguyên: d (ngày), m (tháng), y (năm) biểu diễn một ngày hợp lệ Hãy cho biết ngày trước đó 1 ngày là ngày mấy
Trang 15Buổi 4: CÂU LỆNH LẶP FOR – WHILE
A Mục tiêu
Xây dựng chương trình có sử dụng câu lệnh lặp for
Nhận biết vòng lặp với số lần lặp biết trước và vòng lặp với số lần lặp không biết trước
B Bài tập mẫu
Bài tập 1 [ Lặp với số lần lặp biết trước] Tên file chương trình: LapXacDinh.*
Viết chương trình nhập vào số thực a và tính tổng sau:
Trang 16for (i=100; i>=1; i )
Nhập số nguyên dương n Xuất các số từ 1 đến n ra màn hình giống như ví dụ sau
Ví dụ:
Nhap n: 8
Cac so: 1 2 3 4 5 6 7 8
Bài tập 2 Tính tổng phân số Tên file chương trình: TongPhanSo.*
Nhập số nguyên dương n Tính tổng biểu thức sau:
Nhập số nguyên dương n (1≤n≤12) Hãy tính n! theo công thức sau:
n! = 1 x 2 x 3 x … x n
Nhập số nguyên n và số thực a Tính 𝑎𝑛 bằng vòng lặp (không dùng hàm pow(…))
Bài tập 5 Tính tổng đan dấu Tên file chương trình: TongDanDau.*
Bài tập 6 Liệt kê các số Fibonacci Tên file chương trình: LietKeSoFibonacci.*
Nhập số nguyên n (2≤n≤47) In ra n số Fibonacci đầu tiên
Công thức tính số Fibonacci:
𝐹0 = 1
𝐹1 = 1
𝐹𝑛 = 𝐹𝑛−1+ 𝐹𝑛−2
D Bài tập nâng cao
Bài tập 1 Tính số Fibonacci thứ n Tên file chương trình: SoFibonacciN.*
Nhập số nguyên n (2≤n≤47) Tính số Fibonacci thứ n
Nhập số nguyên dương n Tính biểu thức sau:
𝑆 = √2 + √2 + √2 + ⋯ + √2 (n dấu căn)
Trang 17Ví dụ:
n=2 n=3 n=4 n=5 S=1.84776 S=1.96157 S=1.99037 S=1.99759
Cho số thực x và số nguyên dương n Hãy tính biểu thức sau bằng phương pháp Horner:
𝑓(𝑥) = 1 + 2𝑥 + 3𝑥2+ ⋯ + (𝑛 + 1)𝑥𝑛
Nhập số nguyên dương n Hãy in các tam giác sau có chiều cao là n
Bài tập 5 In bảng cửu chương Tên file chương trình: CuuChuong.*
In bảng cửu chương từ 2 đến 9 như sau:
Hiện trên màn hình bảng nhân được trình bày như sau
Trang 18Buổi 5: CÂU LỆNH LẶP FOR – WHILE (Tiếp theo)
A Mục tiêu
Xây dựng chương trình có sử dụng câu lệnh lặp while
Nhận biết vòng lặp với số lần lặp biết trước và vòng lặp với số lần lặp không biết trước
B Bài tập mẫu
Bài tập 1 Lặp với số lần lặp không biết trước
Tên file chương trình: LapKhongXacDinh.*
Viết chương trình nhập vào số thực a và tính tổng sau:
Viết chương trình tính số như sau:
Bài tập 2 Tổng phân số giai thừa Tên file chương trình: TongPSGT.*
Trang 19Viết chương trình tính tổng sau:
Bài tập 3 Phân tích thừa số Tên file chương trình: PhanTichThuaSo.*
Phân tích số nguyên n thành tích các thừa số nguyên tố
Mẫu thực thi chương trình như sau:
Nhap n = 100
100 = 2 x 2 x 5 x 5
Tìm ước số chung lớn nhất của 2 số nguyên a, b
Một khách hàng đến ngân hàng gởi tiết kiệm không kì hạn với số tiền A đồng, lãi suất 0.7% mỗi tháng Hãy cho biết khách hàng cần gởi bao nhiêu tháng để khi khách hàng rút hết tiền ra được ít nhất là B đồng Biết rằng khi gởi tiết kiệm không kì hạn thì lãi không được cộng vào vốn
D Bài tập nâng cao
Nhập vào số thực a Hãy tìm số nguyên dương n bé nhất sao cho:
12
11
Nhập số nguyên n (0≤n≤109) Tìm số m là số đảo của số n
Ví dụ:
n=1253 n=32543225
m = 3521 m = 52234523
Trang 20Buổi 6: KẾT HỢP CÂU LỆNH LẶP VÀ CÂU LỆNH CHỌN
LỰA
A Mục tiêu
Luyện tập cách viết chương trình kết hợp giữa câu lệnh lặp với câu lệnh điều kiện
Nhận biết vòng lặp với số lần biết trước và lặp với số lần không biết trước
B Bài tập mẫu
Bài tập 1 Các số chia hết cho 3 Tên file chương trình: ChiaHet3.*
Nhập số nguyên n Hãy liệt kê các số từ 1 đến n mà chia hết cho 3
Bài tập 1 Tính tổng trong đoạn Tên file chương trình: Tong57.*
Nhập 2 số nguyên N1 và N2 (N1<N2) Hãy tính tổng các số nguyên trong đoạn [N1, N2] mà chia hết cho 5 hay 7
Bài tập 2 Kiểm tra số nguyên tố Tên file chương trình: KiemTraSoNguyenTo.*
Nhập số nguyên n Kiểm tra n có phải là số nguyên tố hay không
Bài tập 3 Các số nguyên tố Tên file chương trình: CacSoNguyenTo.*
Nhập số nguyên n Tìm các số nguyên tố nhỏ hơn n
Nhập số nguyên n, m Hãy in ra hình chữ nhật có chiều cao là n và chiều rộng là m như hình sau:
Ví dụ:
n = 15
m = 4
***************
Trang 21D Bài tập nâng cao
Bài tập 1 Kiểm tra số Fibonacci Tên file chương trình: KiemTraSoFibonacci.*
Nhập số nguyên n (1≤n≤109) Cho biết n có phải là số Fibonacci hay không
Bài tập 2 Số nguyên tố thứ n Tên file chương trình: SoNguyenToN.*
Nhập số nguyên n (1≤n≤50.000) Hãy tìm số nguyên tố thứ n
Ví dụ:
n = 1 Kết quả là: 2
n = 2 Kết quả là: 3
n = 5 Kết quả là: 11
Trang 22Viết đoạn mã xuất hình chữ nhật trên
Copy đoạn mã trên làm 3 lần
Cách 2:
Viết đoạn mã xuất hình chữ nhật trên
Cho đoạn mã trên vào 1 vòng lặp để lặp lại 3 lần
Cách 3:
Đưa đoạn mã xuất hình chữ nhật vào 1 hàm
Gọi hàm đó 3 lần trong hàm main (có thể dùng vòng lặp chạy 3 lần)
Trang 23HinhChuNhat();
printf("\n\n");
}
Bài tập 2 In hình chữ nhật tùy ý Tên file chương trình: HCN2.*
Vẽ hình chữ nhật với các kích thước khác nhau
Viết hàm hoán đổi giá trị của 2 biến số nguyên
Trang 25Bài tập 2 USCLN Tên file chương trình: USCLN.*
Viết hàm tìm ước số chung lớn nhất của 2 số nguyên dương a, b
Viết hàm tìm số đảo của số nguyên n ( 9
0 n 10 )
Viết hàm tính tổ hợp chập k của n phần tử theo công thức
)!
(
!)
,(
k n k
n k
n C
Yêu cầu cài đặt hàm tính n!
Viết hàm kiểm tra số nguyên n có là số nguyên tố hay không
Bài tập 6 Liệt kê các số nguyên tố Tên file chương trình: LietKeNguyenTo.*
Viết hàm in các số nguyên tố nhỏ hơn số nguyên dương N cho trước (sử dụng hàm kiểm tra số nguyên tố đã cài đặt ở trên )
Trang 26Buổi 8: HÀM (Tiếp theo)
A Mục tiêu
Tập phân tích một bài toán thành các hàm
B Bài tập cơ bản
Phân tích thành các hàm để giải bài toán: Tính biểu thức với x là số thực và n là số nguyên n (1≤n≤12)
Phân tích thành các hàm để giải bài toán: Tìm bội số chung nhỏ nhất của 2 số nguyên dương a,
b
Bài tập 3 Menu diện tích các hình Tên file chương trình: CacDienTich.*
Phân tích thành các hàm để giải bài toán: Tính diện tích các hình theo menu sau:
Bài tập 4 Rút gọn phân số Tên file chương trình: RutGonPhanSo.*
Phân tích thành các hàm để giải bài toán: Rút gọn phân số a/b thành phân số tối giản
Phân tích thành các hàm để giải bài toán sau: Cho số nguyên n ( 9
0 n 10 ) hãy đọc số nguyên n
Ví dụ:
n = 2579
Kết quả: hai ngàn năm trăm bảy mươi chín
Trang 27Buổi 9: MẢNG 1 CHIỀU – TÌM KIẾM
A Mục tiêu
Xây dựng chương trình có sử dụng cấu trúc mảng 1 chiều
Học cách chia bài toán thành nhiều hàm giải quyết
Nắm vững các cách tìm kiếm trên mảng 1 chiều
B Bài tập mẫu
Bài tập 1 Nhập xuất mảng Tên file chương trình: NhapXuatMang1C.*
Viết 2 hàm nhập, xuất mảng 1 chiều có n phần tử các số nguyên a a0, , ,1 a n1 (n100):
Trang 28Viết hàm tính tổng các phần tử của mảng n phần tử số nguyên a a0, , ,1 a n1(n1.000)
Cho mảng số nguyên gồm n phần tử (n≤10.000) Viết hàm tìm và in ra màn hình các số chẵn trong mảng
void NhapMang1C(int a[], int &n)
Trang 29Cho số nguyên n (n10.000) và dãy n số nguyên a a0, , ,1 a n1, mỗi số có giá trị tuyệt đối không quá 200.000 Hãy tính tổng các phần tử chia hết cho số k cho trước
Cho số nguyên n (n10.000) và dãy n số nguyên a a0, , ,1 a n1 Cho biết trong dãy có bao nhiêu số dương, bao nhiêu số âm và bao nhiêu số bằng 0
Cho số nguyên n (n10.000) và dãy n số nguyên a a0, , ,1 a n1 Hãy tìm chỉ số và giá trị của phần tử lớn nhất trong dãy (nếu có nhiều phần tử lớn nhất chỉ cần đưa ra 1 trong số chúng)
Cho số nguyên n (n10.000) và dãy n số nguyên a a0, , ,1 a n1 Với giá trị x cho trước, tìm vị trí của phần tử đầu tiên trong mảng có giá trị bằng x
Trang 30Bài tập 5 Liệt kê các số nguyên tố Tên file chương trình: CacSoNguyenTo.*
Cho số nguyên n (n10.000) và dãy n số nguyên a a0, , ,1 a n1 Liệt kê trên màn hình các số nguyên tố trong dãy
D Bài tập nâng cao
Bài tập 1 Tìm các vị trí Tên file chương trình: TimKiemCacViTri.*
Cho số nguyên n (n10.000) và dãy n số nguyên a a0, , ,1 a n1 Với giá trị x cho trước, tìm tất
cả các vị trí của các phần tử trong mảng có giá trị bằng x
Cho số nguyên n (n10.000) và dãy n số nguyên a a0, , ,1 a n1.Tìm các cặp ai, aj (i<j) sao cho
ai+aj = k (k là số nguyên cho trước)
Cho số nguyên n (n1.000) và dãy n số nguyên a a0, , ,1 a n1.Tìm đoạn [i, j] (i≤j) dài nhất sao cho các số ai, ai+1, …, aj chứa nhiều số âm nhất
Cho số nguyên n (n1.000) và dãy n số nguyên a a0, , ,1 a n1 Với số nguyên x cho trước, hãy cho biết số x xuất hiện bao nhiêu lần trong dãy số
Cho số nguyên n (n1.000) và dãy n số nguyên a a0, , ,1 a n1 Hãy cho biết các phần tử trong dãy xuất hiện bao nhiêu lần
Cho số nguyên n (n1.000) và dãy n số nguyên a a0, , ,1 a n1 Kiểm tra xem dãy có tăng dần hay không
Cho số nguyên n (n1.000) và dãy n số nguyên a a0, , ,1 a n1 Hãy tính giá trị của đa thức sau theo phương pháp Horner:
2
0 1 2
P x a a x a x a x