Bài tập thực hành lập trình cơ bản - Công nghệ thông tin | Trường đại học Hồng Đức

Bài tập thực hành lập trình cơ bản - Công nghệ thông tin | Trường đại học Hồng Đức được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

TRƯỜNG ĐẠI HỌC HỒNG ĐỨC THANH HÓA
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TRỊNH THỊ PHÚ
BÀI TẬP THỰC HÀNH
LẬP TRÌNH CƠ BẢN
3TC (25, 0, 40)
Thanh Hóa, năm 2022
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
1
MỘT SỐ QUY ĐỊNH CHUNG
1. Sinh viên “ ” phải in bài thực hành và mang theo khi đến buổi thực hành. Không chấp bắt buộc
nhận cho sinh viên vào phòng máy nếu không có bài thực hành.
2. Sinh viên phải mang thêm bài giảng lý thuyết, tài liệu tham khảo của học phần.
3. Để thuận tiện cho các bạn trong thi giữa kì và cuối kì, các bạn lưu ý khi thực hành:
- Sử dụng môi trường lập trình Code::Block
- Đọc kỹ tài liệu, bài học.
- Lưu file chương trình theo yêu cầu.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
2
BÀI THỰC HÀNH SỐ 1
Nội dung kiến thức thực hành:
- Làm quen với Code::Block: Hướng dẫn cài đặt và sử dụng
- Viết một chương trình đơn giản và thực thi,
- Cài đặt các bài tập với các câu lệnh vào ra cơ bản.
I. Cài đặt và viết chương trình C++ trên Code::Blocks
Trong phần này, ta sẽ đề cập về việc cài đặt và viết chương trình C++ trên Code::Blocks.
CodeBlocks là một ứng dụng ở dạng mã nguồn mở, hỗ trợ các nền tảng khác nhau như Windows,
Linux, MacOS và bao gồm IDE dành cho C/C ++ miễn phí. Nó hỗ trợ cho nhiều trình biên dịch, chẳng
hạn như GNU GCC (MinGW và Cygwin) và MS Visual C ++.
1. Cài đặt Code::Blocks
Bước 1: Tải phần mềm.
Các bạn truy cập vào đường link tại đây. Nhấp chuột vào . "Download the binary release"
Sau đó, thực hiện chọn nền tảng điều hành mà bạn đang sử dụng dụ như Windows 2000 / XP /
Vista / 7.
Tải xuống file xuống. Trong bài viết này, ta sẽ sử dụng codeblocks-20.03mingw-setup.exe.
Bước 2: Cài đặt
Chạy file bạn đã tải xuống. Chấp nhận các tùy chọn mặc định cuối cùng nhấn vào " . Install"
Và đợi nó chạy là xong.
Bước 3: Kiểm tra đường dẫn
Tiến hành kiểm tra đường dẫn của trình biên dịch và trình gỡ lỗi.
1. Kiểm tra đường dẫn của trình biên dịch.
Chọn Trong , chọn "Settings" "Compiler ..." "Selected Compiler" "GNU GCC
Compiler" Chọn tab "Toolchain Executables" Kiểm tra . "Compiler's Installation Directory"
Các bạn hãy đảm bảo nó có dạng như sau . "E:\Programs\Programs\CodeBlocks\MinGW”
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
3
2. Kiểm tra đường dẫn của trình gỡ lỗi.
"Settings" "GDB/CDB debugger" "Debugger..." Mở rộng Chọn "Default"
Trong , cung cấp đầy đủ tên đường dẫn của , ví dụ như sau: "Executable path" "gdb.exe"
"E:\Programs\Programs\CodeBlocks\MinGW\gdb32.exe ".
Chú ý: Các bạn hãy đảm bảo kiểm tra đúng đường dẫn cho trình gỡ lỗi như trên để chúng ta có thể
sử dụng nó trong việc sửa lỗi (debug) trên Code::Blocks trong phần sau.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
4
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
5
2. Viết chương trình C++ trên codeblock
Bước 1: File → New → Empty File Các bạn vào Codeblock. Chọn
Bước 2: Viết một đoạn mã Code. Ví dụ một đoạn mã như sau:
#include <iostream>
using namespace std;
int main() {
cout << "Xin chao!" << endl;
return 0;
}
Tiếp theo, các bạn lưu file lại với tên do bạn tự đặt.
Bước 3: Thực hiện xây dựng chương trình
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
6
Các bạn nhấn vào biểu tượng bánh răng bên trên thanh menu công cụ.
Bước 4: Thực hiện chạy chương trình
Cuối cùng, chọn biểu tượng mũi tên màu xanh bên trên thanh menu công cụ.
3. Viết chương trình trình theo một Project
Ta có thể tạo một project cho một ứng dụng cần được lập trình. Một Project sẽ chứa các file liên
quan với nhau ví dụ như các đoạn mã nguồn, các header và các đoạn mã khác.
Bước 1 "File" "New" "Project…" "Console Application" "Go": Chọn
Bước 2: "Console Application", "Next", Sau khi chọn Thực hiện chọn Chọn "C++""Next"
Trong Project Titile, bạn thể nhập tên Project theo ý của mình. Trong , "Folder to create project in"
bạn có thể đặt thư mục mà mình muốn lưu. Sau đó chấp nhận các thiết lập mặc định và nhấn "Next".
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
7
Trong trường , chọn mặc định là và chọn " "Compiler" "GNU GCC Compiler" Finish".
Ở trong phần bên tay trái, chọn "Management" "Projects"
Các bạn nhấn vào dấu + và nhấn đúp chuột vào , là một chương trình mẫu có sẵn in ra chuỗi "main.cpp"
ký tự "Hello, world!"
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
8
Để xây dựng một chương trình, các bạn chọn vào biểu tượng bánh răng màu vàng trong menu công cụ.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
9
Và để thực hiện chương trình, các bạn nhấn mũi tên màu xanh trong menu công cụ.
Để tạo các file nguồn hoặc header file trong cùng một project.
Chọn và tiếp theo chọn "File" "New"
"File…"
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
10
Tiếp theo, chọn hoặc . Sau đó chọn " "C/C++ source" "C/C++ header" "Go" Next"
Chọn " và màn hình hiện ra như sau: "C++" Next"
Trong phần , nhấn vào dấu Sau đó, tìm đến thư mục của Project và nhập tên "Filename with full path"
cho file mới. Nhấn vào và nhấn "All" "Finish"
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
11
Các bạn có thể tạo nhiều Project khác nhau, do đó, để chạy được một Project cụ thể mà bạn muốn, các bạn
cần phải kích hoạt cho Project đó như sau. Giả sử có 2 Project là abc và abcd. Nhấn chuột phải vào Project
cần thực hiện và chọn "Activate project"
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
12
Mở một Project
Để mở một Project, ta có thể thực hiện như sau
Cách 1: Chọn trên menu công cụ Chọn một Project cần mở. "File" "Recent Projects"
Cách 2: Chọn trên menu công cụ "File" "Open…" Tìm đến thư mục mà lưu trữ Project của bạn
Chọn tên Project.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
13
4. Sửa lỗi trong Codeblock
Giả sử chương trình bên dưới đây là một chương trình lỗi. Do đó, ta sẽ tìm lỗi theo từng bước.
#include <iostream>
using namespace std;
int main() {
int a = 6;
int b = 5;
int i = 1;
while (i <= a) {
b = b * i;
i++;
}
cout << "Gia tri cua b la: "<<b << endl;
return 0;
}
Bước 1: Đặt điểm Breakpoint
Đặt điểm Breakpoint ban đầu tại hàm main () bằng cách nhấp vào bên lề trái của chương trình. Một
vòng tròn màu đỏ xuất hiện cho biết một điểm breakpoint đã được đặt tại dòng đó. Điểm breakpoint sẽ tạm
dừng thực hiện chương trình để cho phép người lập trình kiểm tra trạng thái bên trong.
Bước 2: Thực hiện kiểm tra lỗi
Từ trên thanh menu công cụ, chọn " . Chương trình sẽ bắt đầu thực thi nhưng "Debug" Start (F8)"
sẽ tạm dừng lại tại điểm Breakpoint, trong dụ này ta đặt tại main(). Một mũi tên màu vàng sẽ xuất
hiện và trỏ vào câu lệnh sau main(), cho biết rằng đây là câu lệnh sẽ được thực thi tiếp theo.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
14
Bước 3: Thực hiện theo dõi hoạt động của chương trình
Nhấp vào trên thanh menu công cụ và chọn "Debug" "Debugging Windows" "Watches"
Nhấp vào nút "Next line" trên thanh công cụ để thực hiện từng bước trong chương trình. "Debug"
Tại mỗi bước, ta có thể kiểm tra trạng thái bên trong chương trình của mình, chẳng hạn như giá trị của các
biến.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
15
ta thực hiện từng bước như vậy để kiểm tra lỗi trong chương trình. Như đã đề cập, một điểm
Breakpoint sẽ tạm dừng thực thi chương trình cho phép kiểm tra các trạng thái bên trong của chương
trình.
"Continue" sẽ tiếp tục thực hiện chương trình, cho đến điểm Breakpoint tiếp theo hoặc cho đến
khi kết thúc chương trình.
"Stop" sẽ kết thúc quá trình gỡ lỗi. Chúng ta thể kết thúc phiên gỡ lỗi hiện tại bằng cách sử
dụng hoặc cho đến khi kết thúc chương trình. "Stop" "Continue"
Trên đây là Cài đặt và viết chương trình C++ trên Code::Blocks
II. CHƯƠNG TRÌNH MINH HỌA
Bài tập 1: Viết chương trình in ra các dòng chữ sau đây:
“Xin chao cac ban!
Chung toi la sinh vien khoa CNTT&TT!”
#include <iostream>
using namespace std;
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
16
int main(){
cout<<”Xin chao cac ban! ”<<endl;
cout<<”Chung toi la sinh vien khoa CNTT&TT! ”<<endl;
return 0;
}
Bài tập 2: Viết chương trình tính ra kết quả của phép trừ 15 cho 87, và xuất kết quả ra màn hình.
#include <iostream>
using namespace std;
int main(){
int x = 15;
int y = 87;
int z = x – y;
cout<< x <<” - ”<< y <<” = ”<<z);
return 0;
}
Bài tập 3: Viết đoạn chương trình sau đây và dự đoán kết quả của chương trình. Sau đó biên dịch và chạy
chương trình để xem kết quả chính xác. Nếu kết quả khác với mình dự đoán thì phân tích xem tại sao lại
như vậy.
#include <iostream>
using namespace std;
int main(){
int answer, result;
answer = 100;
result = answer - 10;
cout<<"The result is "<<result + 5;
return 0;
}
The result is 95
Bài tập 4: Viết chương trình tính giá trị biểu thức sau và giải thích kết quả.
3 - 5 + 6
x
3
x
2
Với = 2.55. x
#include <iostream>
using namespace std;
int main(){
float x = 2.55;
float y = 3*x*x*x - 5*x*x + 6;
cout<< y;
return 0;
}
23.231623
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
17
III – BÀI TẬP TỰ LÀM
Bài 1: Viết chương trình in lên màn hình như sau:
*************************
* THAO CHUONG BANG *
* NGON NGU C *
*************************
Bài 2: Viết một chương trình nhập vào một số thực. Ðơn vị tính cho số này là centimet (cm). Hãy in ra số
tương đương tính bằng foot (số thực, có 1 số lẻ thập phân) và inch (số thực, có 1 số lẻ thập phân). Ðộ chính
xác của foot và inch là một số lẻ thập phân.
Hướng dẫn: 2.54 centimeters = 1 inch, và 12 inches = 1 foot.
Nếu giá trị nhập vào là 333.3, kết quả là:
333.3 centimeters tương đương 10.9 feet.
333.3 centimeters tương đương 131.2 inches.
Bài 3
: Viết chương trình nhập vào một số a bất kỳ và in ra giá trị bình phương (a ), lập phương (a ) của a
2 3
và giá trị a
4
Bài 4: Viết chương trình đọc từ bàn phím 3 số nguyên biểu diễn ngày, tháng, năm và xuất ra màn hình
dưới dạng "ngay/thang/nam" (chỉ lấy 2 số cuối của năm)
Bài 5: Viết chương trình nhập vào số giây từ 0 đến 86399, đổi số giây nhập vào thành dạng
"gio:phut:giay", mỗi thành phần là một số nguyên có 2 chữ số.
Bài 6: Viết chương trình nhập vào năm sinh, in ra tuổi.
Ví dụ nhập 2004 in ra:
Ban sinh nam 2004 vay ban 18 tuoi.
Bài 7: Nhập vào bán kính của hình tròn, tính và in ra chu vi, diện tích của hình tròn đó.
Bài 8: Nhập vào chiều dài, chiều rộng của hình chữ nhật, tính và in ra chu vi, diện tích của hình chữ nhật
đó.
Bài 9: Nhập vào cạnh của hình vuông, tính và in ra chu vi, diện tích của hình vuông đó.
Bài 10: Tìm hiểu ý nghĩa các thông báo lỗi thường gặp
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
18
BÀI THỰC HÀNH SỐ 2
Nội dung thực hành:
- Cài đặt các bài tập với cấu trúc rẽ nhánh.
Nhắc lại cú pháp một số câu lệnh rẽ nhánh:
Mệnh đề if-else trong C được sử dụng để kiểm tra một biểu thức điều kiện nào đó có đúng hay
không, nếu đúng thì thực thi những câu lệnh bên trong khối lệnh if và ngược lại nếu sai thì nó sẽ bỏ qua
những câu lệnh đó. Có ba dạng của câu lệnh if trong C.
Mệnh đề if.
Mệnh đề if-else.
Mệnh đề if-elseif-else.
Ngoài ra, còn có dạng mệnh đề if lồng nhau.
Mệnh đề if trong C
Mệnh đề if được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối lệnh sau if được
thực thi nếu giá trị của điều kiện là True. Cú pháp:
if (condition) {
// khối lệnh này được thực thi nếu condition = true
}
Mệnh đề if-else trong C
Mệnh đề if được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối lệnh sau if được
thực thi nếu giá trị của điều kiện là True, nếu là False thì chỉ có khối lệnh sau else được thực hiện. Cú
pháp:
if (condition) {
// khối lệnh này được thực thi nếu condition = true
} else {
// khối lệnh này được thực thi nếu condition = false
}
Mệnh đề if-else if-else trong C
Mệnh đề if-elseif-else cũng kiểm tra giá trị dạng boolean của điều kiện. Nếu giá trị điều kiện if là
True thì chỉ có khối lệnh sau if sẽ được thực hiện. Nếu giá trị điều kiện else if nào là True thì chỉ có khối
lệnh sau if else đó sẽ được thực hiện… Nếu tất cả điều kiện của if và if else là False thì chỉ có khối lệnh
sau else sẽ được thực hiện. Cú pháp:
if (condition1) {
// khối lệnh này được thực thi nếu condition1 = true
} else (condition2) { if
// khối lệnh này được thực thi nếu condition1 = false và condition2 = true
...
} else {
// khối lệnh này được thực thi nếu nếu tất cả những điều kiện trên = false
}
Mệnh đề switch trong C cho phép một biến được kiểm tra xem giá trị của nó có bằng một giá trị trong
một danh sách hay không. Mỗi giá trị được gọi là một trường hợp (case).
Cú pháp cho câu lệnh switch trong ngôn ngữ lập trình C như sau:
switch (bieu_thuc) {
case gia_tri_1:
// Khối lệnh 1
break; //tùy chọn
case gia_tri_2:
// Khối lệnh 2
break; //tùy chọn
......
case gia_tri_n:
// Khối lệnh n
break; //tùy chọn
default:
// Khối lệnh này được thực thi
// nếu tất cả các điều kiện trên không thỏa mãn
}
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
19
I. BÀI TẬP MINH HỌA
Bài tập 1: Viết chương trình nhập vào một số x, nếu x = 100 thì xuất ra thông báo “Gia tri cua x la
100”, ngược lại, xuất ra thông báo “Gia tri của x khac 100”.
Bài tập minh hoạ sử dụng cấu trúc if
#include <iostream>
using namespacestd
int main(){
int x;
cout<<"Nhap x = ";
cin>>x;
if(x == 100)
cout<<"Gia tri cua x la 100";
if(x != 100)
cout<<"\nGia tri cua x khac 100";
return 0;
}
Bài tập minh hoạ sử dụng cấu trúc if ... else
#include <iostream>
using namespace std
int main(){
int x;
cout<<"Nhap x = ";
cin>>x;
if(x == 100)
cout<<"Gia tri cua x la 100";
else
cout<<"\nGia tri cua x khac 100";
return 0;
}
Bài tập 2: Giải phương trình bậc 1: ax + b = 0
#include <iostream>
using namespace std
int main(){
float a, b;
cout<<"Nhap a = ";
cin>>a;
cout<<"Nhap b = ";
cin>>b;
if(a == 0)
{
if(b == 0)
cout<<"\nPhuong trinh co vo so nghiem.\n";
else
cout<<"\nPhuong trinh vo nghiem.\n";
}
else
{
cout<<"\nPhuong trinh co nghiem duy nhat: x =", -b/a;
}
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
20
return 0;
}
Bài tập 3
Nhập vào 1 tháng, năm, cho biết tháng đó có bao nhiêu ngày.
// Thang co 31 ngay: 1, 3, 5, 7, 8, 10, 12
// Thang co 30 ngay: 4, 6, 9, 11
// Thang 2 co 28 hoac 29 ngay
#include <iostream>
using namespace std
int main(){
//khai bao bien
int ngay, thang, nam;
int nhuan;
//nhap du lieu
cout<<"Nhap vao mot thang: ";
cin>>thang;
cout<<"Nhap vao mot nam: ";
cin>>nam;
//kiem tra nam nhuan
nhuan = 0;
if ((nam%400 == 0) || (nam%4 == 0 && nam%100 != 0))
nhuan = 1;
ngay = 0;
switch (thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
ngay = 31;
break;
case 4:
case 6:
case 9:
case 11:
ngay = 30;
break;
case 2:
if (nhuan == 1) ngay = 29;
else ngay = 28;
break;
}
cout<<"So ngay cua thang ”<< thang<<” cua nam “<<nam<< “ la ”<<ngay);
}
II. BÀI TẬP TỰ LÀM
Bài 1: Viết chương trình nhập vào số nguyên dương, in ra thông báo số đó là số chẵn hay lẻ
Bài 2: Viết chương trình yêu cầu người dùng nhập vào tuổi của mình. Nếu tuổi nhỏ hơn 18 thì xuất ra câu
“Bạn là trẻ con”, nếu lớn hoặc bằng 18 và nhỏ hơn 65 thì xuất ra câu “Bạn là người lớn”, ngược lại xuất ra
câu “Bạn già rồi”.
Bài 3: Một học viên được kiểm tra 3 môn học. Mỗi bài kiểm tra tối đa là 100 điểm. Điểm trung bình của
học viên được tính, và học viên được xếp loại tùy thuộc vào kết quả của điểm trung bình theo qui luật sau:
Điểm trung bình Loại
>= 90 E+
80 - < 90 E
70 - < 80 A+
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
21
60 - < 70 A
50 - < 60 B+
< 50 RỚT
Để thực hiện:
Bước 1: Nhập vào điểm của 3 môn học và lưu trong 3 biến khác nhau là M1, M2 và M3.
Bước 2: Tính điểm trung bình (avg = (M1 + M2 + M3)/3).
Bước 3: Xác định loại của học viên dựa trên điểm trung bình đã tính.
Bước 4: Hiển thị loại.
Bài 4: Khai báo hai biến x và y. Gán trị cho các biến này. Số x được in ra màn hình chỉ khi x nhỏ hơn
2000 hoặc lớn hơn 3000, và số y chỉ được in ra màn hình khi y nằm giữa 100 và 500.
Bài 5: Viết chương trình yêu cầu người dùng nhập vào một ký tự, kiểm tra nếu ký tự đó là chữ hoa thì đổi
thành chữ thường và ngược lại. Xuất kết quả ra màn hình.
Bài 6: Viết chương trình nhập vào 2 số thực. Kiểm tra xem chúng có cùng dấu hay không.
Bài 7: Viết chương trình nhập vào 2 số nguyên dương. Kiểm tra xem số này chia hết cho số kia hay
không.
Bài 8: Viết chương trình yêu cầu người dùng nhập vào 3 số nguyên. Xuất ra màn hình số có giá trị lớn nhất
và nhỏ nhất.
Bài 9
: Viết chương trình giải phương trình bậc hai: ax + bx +c = 0, với a,b,c được nhập vào từ bàn phím.
2
Bài 10: Nhập ba số a, b, c vào từ bàn phím. Đưa ra màn hình số lớn nhất và số bé nhất trong ba số đã nhập.
Áp dụng cho bài toán 4 số.
Bài 11: 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".
Bài 12: 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.
Bài 13: 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.
Bài 14: 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. 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.
Bài 15: 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.
Bài 16: 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.
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.
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"
Bài 17: Viết chương trình nhập o ngày tháng năm của một ngày, kiểm tra nó có hợp lệ không? Thông
báo ra màn hình trong các trường hợp.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
22
Bài 18: Viết chương trình nhập vào 3 số nguyên, kiểm tra xem 3 số đó có phải là độ dài của 3 cạnh của 1
tam giác hay không. Trong trường hợp là 3 cạnh của một tam giác, hãy tính chu vi và diện tích của tam giác
đó.
Bài 19: Viết chương trình trình bày khả năng của máy tính của bạn. Người dùng nhập và một ký tự trong
bảng chữ cái và chương trình hiển thị ngôn ngữ lập trình tương ứng. Một vài ví dụ nhập và xuất như sau:
Nhập Xuất
A hoặc a Ada
B hoặc b Basic
C hoặc c Code::Block
D hoặc d dBASE III
F hoặc f Fortran
P hoặc p Pascal
V hoặc v Visual C++
Sử dụng lệnh ‘switch’ để chọn và hiển thị thông điệp thích hợp. Sử dụng nhãn default để hiển thị
thông điệp nếu ký tự nhập không nằm trong danh sách liệt kê trên.
Bài 20: Viết chương trình nhập vào ngày, tháng, năm. Hãy cho biết ngày kế tiếp ngày trước của ngày
đó. (có code tham khảo bên dưới)
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
23
BÀI THỰC HÀNH SỐ 3
Nội dung kiến thức thực hành:
- Luyện tập các câu lệnh điều kiện,
- Các bài tập với cấu trúc lặp.
I. Nhắc lại cú pháp lệnh lặp:
1) Vòng lặp For trong C là một cấu trúc điểu khiển lặp được sử dụng để thực thi số lần lặp cụ thể.
Cú pháp của vòng lặp for trong ngôn ngữ lập trình C là:
for (khoi_tao_bien ; check_dieu_kien ; tang/giam_bien) {
// Khối lệnh được thực thi
}
Luồng điều khiển trong vòng lặp for:
Bước khoi_tao_bien được thực thi đầu tiên, và chỉ một lần. Bước này cho phép bạn khai báo và
khởi tạo bất kỳ biến điều khiển vòng lặp nào. Bạn cũng có thể không cần phải đặt một khai báo ở
đây, miễn là khai báo dấu chấm phảy (;).
Tiếp theo, check_dieu_kien được đánh giá. Nếu nó là true, phần thân của vòng lặp được thực thi.
Nếu nó là false, phần thân của vòng lặp không thực thi và luồng điều khiển nhảy đến câu lệnh kế
tiếp ngay sau vòng lặp for.
Sau khi phần thân của vòng lặp for được thực thi, luồng điều khiển nhảy ngược lại lên câu
lệnh tang/giam_bien. Câu lệnh này cho phép bạn cập nhật bất kỳ biến điều khiển vòng lặp nào.
Câu lệnh này có thể để trống, miễn là khai báo dấu chấm phảy (;)
check_dieu_kien được đánh giá lại. Nếu nó là true, vòng lặp thực hiện và quá trình lặp lại chính
nó (phần thân của vòng lặp, sau đó là bước tang/giam_bien, và sau đó lại check_dieu_kien). Sau
khi điều kiện là false, vòng lặp for kết thúc.
2) Vòng lặp while trong C được sử dụng để lặp một phần của chương trình một vài lần. Nếu số lần lặp
không được xác định trước thì vòng lặp lặp while được khuyến khích sử dụng trong trường hợp này.
Cú pháp:
while(condition) {
// Khối lệnh được lặp lại cho đến khi condition = False
}
3) vòng lặp do-while trong C
Không giống như vòng lặp for và while, trong đó kiểm tra điều kiện lặp ở đầu vòng lặp, vòng lặp
do-while trong C kiểm tra điều kiện lặp của nó ở dưới cùng của vòng lặp.
Vòng lặp do-while tương tự như một vòng lặp while, ngoại trừ nó được đảm bảo để thực hiện ít
nhất một lần.
Cú pháp của vòng lặp do-while trong ngôn ngữ lập trình C là:
do {
// Khối lệnh được thực thi
} while(condition);
4) Câu lệnh break trong C có hai cách sử dụng như sau:
Khi gặp câu lệnh break trong một vòng lặp, vòng lặp bị kết thúc ngay lập tức và câu lệnh kế tiếp
sau vòng lặp được thực thi.
Lệnh break có thể được sử dụng để kết thúc một case trong câu lệnh switch.
Nếu bạn sử dụng vòng lặp lồng nhau, câu lệnh break sẽ dừng việc thực hiện vòng lặp trong cùng
và bắt đầu thực hiện cấu lệnh kế tiếp sau vòng lặp trong cùng.
Cú pháp:
break;
5) Câu lệnh continue trong C hoạt động giống như câu lệnh break. Thay vì buộc kết thúc vòng lặp, nó
buộc trở về kiểm tra điều kiện để thực hiện vòng lặp tiếp theo và bỏ qua các lệnh bên trong vòn lặp hiện
tại sau lệnh continue.
Đối với vòng lặp for, câu lệnh continue làm cho điều khiển chương trình tăng hoặc giảm biến đếm
của vòng lặp. Đối với vòng lặp while và do-while, câu lệnh continue làm cho điều khiển chương trình
quay về đầu vòng lặp và kiểm tra điều kiện của vòng lặp.
Cú pháp:
continue;
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
24
II. Bài tập tự luyện
Bài 1: Viết chương trình đưa ra màn hình các ký tự từ A .. Z
Bài 1’: Viết chương trình đưa ra màn hình các số từ 1 đến 500 và in thành các dòng
Bài 2: Khai báo một biến lưu tuổi của một người. In ra tên của người đó với số lần in bằng số tuổi.
Bài 3: Tính lãi suất tiền gửi
Vấn đề: Giả sử tiền gửi tiết kiệm được tính với lãi suất là m% mỗi tháng, sau n tháng thì tiền lãi
được cộng vào gốc. Viết chương trình cho phép tính và in ra màn hình số tiền có được sau K tháng gửi
tiết kiệm với số tiền gốc ban đầu là T.
Bài 4: Viết chương trình tính dân số của một thành phố sau 10 năm nữa, biết rằng dân số hiện nay là
6.000.000, tỉ lệ tăng dân số hàng năm là 1.8%.
Bài 5: Tìm giai thừa của một số nguyên nhập vào từ bàn phím.
Gợi ý: Xem công thức tính giai thừa của một số :
n! = n * (n-1) * (n-2) * ... * 1
4! = 4 * 3 * 2 * 1
1! = 1
0! = 1
Gợi ý:
Nhập vào một số.
Khởi đầu, thiết đặt giai thừa của một số là 1.
Trong khi số còn lớn hơn 1.
Tính giai thừa của một số bằng giai thừa nhân với số đó.
Giảm số xuống một đơn vị.
In ra giai thừa.
Bài 6: Viết chương trình sinh dãy số theo dạng sau:
1
12
123
1234
12345
123456
1234567
12345678
123456789
Bài 7: Viết chương trình đếm số chữ số của một số nguyên nhập vào từ bàn phím.
Bài 8: Viết chương trình tính các tổng sau:
a) Tổng S = 1+2+….+n
b) S(n) = 1.3.5…(2n+1) với n là một số nguyên dương được nhập từ bàn phím.
c) S(n) = 1 + 1.2 + 1.2.3 + … + 1.2.3..n với n<100 là một số nguyên dương được nhập từ bàn phím.
d) S(n) = 1 + (1+2) + (1+2+3) + … + (1+2+3+…+n) với n là một số nguyên dương được nhập từ bàn
phím.
e)
222
...321 nS
với n là một số nguyên dương được nhập từ bàn phím.
f)
n
S
1
...
3
1
2
1
1
với n là một số nguyên dương được nhập từ bàn phím.
g)
222
1
...
3
1
2
1
1
n
S
với n là một số nguyên dương được nhập từ bàn phím.
h)
333
1
...
3
1
2
1
1
n
S
với n là một số nguyên dương được nhập từ bàn phím.
i)
333
...321 nS
với n > 0 và n được nhập từ bàn phím.
Bài 9: 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)
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
25
BCNN[a,b] = a*b/(b,r).
Bài 10: Viết chương trình kiểm tra một số nguyên dương n có phải là số nguyên tố hay không?
(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ó)
Bài 11: Viết chương trình nhập vào N rồi tính giai thừa của N.
Bài 12: Viết chương trình lặp lại nhiều lần công việc nhập một ký tự và in ra mã ASCII của ký tự đó, khi
nào nhập số 0 thì dừng.
Bài 14: Viết chương trình tìm các số nguyên gồm 3 chữ số sao cho tích của 3 chữ số bằng tổng 3 chữ số.
Ví dụ: 1*2*3 = 1+2+3.
Bài 15: Viết chương trình tìm các số nguyên a, b, c, d khác nhau trong khoảng từ 0 tới 10 thỏa mãn điều
kiện:
a*d*d = b*c*c*c
Bài 16: Viết chương trình tính tổ hợp N chập K (với K <= N)
C=((N-k+1) * (N-k+2)*…N)/1*2*3*…*k
Bài 17: Viết chương trình giải bài toán cổ điển sau:
Trăm trâu, trăm cỏ
Trâu đứng ăn năm
Trâu nằm ăn ba,
Ba trâu già ăn một
Hỏi mỗi loại trâu có bao nhiêu con.
Bài 18: Viết chương trình giải bài toán cổ điển sau:
Vừa gà vừa chó 36 con
Bó lại cho tròn, đếm đủ 100 chân
Hỏi có bao nhiêu gà, bao nhiêu chó
Bài 19: Viết chương trình in ra bảng cửu chương
Bài 20: Viết chương trình in ra màn hình tam giác vuông cân đặc có độ cao h (h nhập từ bàn phím).
Ví dụ: Nhập h=4
*
* *
* * *
* * * *
Bài 21: Viết chương trình in ra màn hình hình chữ nhật đặc có kích thước m hàng, n cột (m,n nhập từ bàn
phím).
Ví dụ: Nhập m=4, n=6
* * * * * *
* * * * * *
* * * * * *
* * * * * *
Bài 22: Viết chương trình in ra màn hình hình chữ nhật rỗng có kích thước m hàng, n cột (m,n nhập từ
bàn phím).
Ví dụ: Nhập m=4, n=6
* * * * * *
* * * * * *
* * * * * *
* * * * * *
Bài 23: Viết chương trình nhập vào các số nguyên dương và tính tổng của chúng, kết thúc khi số nhập
vào là số 0.
Bài 24: Viết chương trình nhập vào một số nguyên n gồm ba chữ số. Cho biết chữ số lớn nhất ở vị trí
nào?
Ví dụ: n=291. Chữ số lớn nhất nằm ở hàng chục (9).
Bài 25: Viết chương trình đếm số ước số không tầm thường (ước số tầm thường là số 1chính số đó) của
số nguyên dương N.
Ví dụ: Nhập N=12. Đưa ra màn hình:
- Các ước của 12 là 2, 3, 4, 6
- Số ước số của 12 là 4
Bài 26: Đưa ra màn hình bảng cửu chương.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
26
Bài 27: 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.
Bài 28: Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình
một số đảo ngược có dạng cba.
Bài 29: 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
Bài 30: Viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) .
Tính tổng s = 1^2 + 2^2+.... + n^2
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
27
BÀI THỰC HÀNH SỐ 4
Nội dung kiến thức thực hành:
- Luyện tập các cấu trúc cơ bản,
- Bài tập về hàm.
I. Bài tập tự luyện
Bài 1: Viết hàm tính n!
Bài 2: Viết hàm tính:
a) tổng S = 1+2+….+n
b) S(n) = 1.3.5…(2n+1) với n là một số nguyên dương được nhập từ bàn phím.
c) S(n) = 1 + 1.2 + 1.2.3 + … + 1.2.3..n với n<100 là một số nguyên dương được nhập từ bàn phím.
d) S(n) = 1 + (1+2) + (1+2+3) + … + (1+2+3+…+n) với n là một số nguyên dương được nhập từ bàn
phím.
e)
222
...321 nS
với n là một số nguyên dương được nhập từ bàn phím.
f)
n
S
1
...
3
1
2
1
1
với n là một số nguyên dương được nhập từ bàn phím.
g)
222
1
...
3
1
2
1
1
n
S với n là một số nguyên dương được nhập từ bàn phím.
h)
333
1
...
3
1
2
1
1
n
S với n là một số nguyên dương được nhập từ bàn phím.
i)
333
...321 nS
với n > 0 và n được nhập từ bàn phím.
hàm số f(x):
x với x<=-1
f(x) = arcsin x với -1< x <=1
cox(x)+ e
x
với x>1
j) trong đó x được nhập từ bàn phím. Viết chương trình có xây dựng hàm tính f(x).
hàm số f(x):
2x với x<-1
f(x) = arccos x với -1<= x <=1
sin(x)+ e
x
với x>1
k) trong đó x được nhập từ bàn phím. Viết chương trình có xây dựng hàm tính f(x).
l) hàm số f(x):
2x với x<-1
f(x) = arccos x với -1<= x <=1
sin(x)+ e
x
với x>1
m) hàm số f(x):
Bài 3: a) Viết hàm kiểm tra một số có phải là số nguyên tố hay không?
b) Nhập số nguyên dương n (n >0). Liệt kê n số nguyên tố đầu tiên
Bài 4: a) Viết hàm kiểm tra xem một số nguyên dương n có phải là số chính phương hay không?
b) Nhập số nguyên dương n (n >0). Liệt kê n số chính phương đầu tiên.
Bài 5: Nhập số nguyên dương n (n >0). Viết hàm trả về số chính phương lớn nhất là số lẻ nhỏ hơn n. Nếu
không có trả về -1.
Bài 6: a) Viết hàm tính số hạng thứ n trong dãy Fibonacci.
b) Đưa ra màn hình n số hạng đầu tiên của dãy Fibonacci, với n nhập vào từ bàn phím.
c) Nhập vào số M, đưa ra màn hình số Fibonacci lớn nhất bé hơn M
1x2- khi 28cosx |sinx -12x |
1 xkhi (x)
10
log
2 xkhi
3
)(
x
xf
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
28
d) Nhập vào số M, đưa ra màn hình số Fibonacci bé nhất lớn hơn M.
Ví dụ: Dãy gồm 11 số Fibonacci đầu tiên: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
Nếu nhập M=50 thì ta có: số Fibonacci lớn nhất bé hơn 50 là 34,
số Fibonacci bé nhất lớn hơn 50 là 55,
Bài 7: Viết hàm tìm số lớn nhất trong 2 số.
Bài 8: Viết hàm tìm ước chung lớn nhất của 2 số nguyên dương
Bài 9: Viết hàm tìm bội chung lớn nhất của 2 số nguyên dương
Bài 10: xây dựng hàm đếm xem n có bao nhiêu chữ số chẵn, với n gồm k chữ số (0 <k ≤ 5) là số nguyên
dương được nhập từ bàn phím.
Bài 11: Viết chương trình có xây dựng hàm nhập vào một số nguyên n gồm tối đa 5 chữ số. In ra màn
hình giá trị nhị phân của số trên.
Bài 12: Viết chương trình có xây dựng hàm in ra màn hình hình chữ nhật rỗng kích thước m x n (m,n
nhập từ bàn phím)
Bài 13: Viết chương trình có xây dựng hàm in ra màn hình tam giác cân rỗng có độ cao h (h nhập từ bàn
phím)
Bài 14: Viết chương trình có xây dựng hàm nhập vào ngày, tháng, năm, kiểm tra xem ngày, tháng năm đó
có hợp lệ không? In kết quả ra màn hình.
Bài 15: Viết chương trình có sử dụng hàm nhập vào 2 số a, b sao cho: số lớn nhất trong 2 số phải là một
số dương và chia hết cho 7. Nếu nhập sai phải yêu cầu nhập lại cho đến khi nhập đúng và in ra kết quả
đúng
Bài 16: Viết chương trình nhập số nguyên dương n gồm k chữ số ) 5 0 ( ≤ < k , tính tổng các ước số
dương của n.
Ví dụ: Nhập n=6
Tổng các ước số từ 1 đến n: 1+2+3+6=12.
Bài 17: Viết chương trình nhập vào số nguyên dương n. Kiểm tra xem n có phải là số chính phương hay
không? (số chính phương là số khi lấy căn bặc 2 có kết quả là nguyên).
Bài 18: Viết chương trình nhập số nguyên dương n gồm k chữ số 0≤k≤5, đếm xem n có bao nhiêu chữ số
chẵn và bao nhiêu chữ số lẻ.
Bài 19: Viết chương trình nhập số nguyên dương n gồm k chữ số 0≤k≤5, đếm xem n có bao nhiêu chữ số
là số nguyên tố.
Bài 20: Viết chương trình có xây dựng hàm nhập vào một số nguyên n gồm ba chữ số. Xuất ra màn hình
chữ số lớn nhất ở vị trí nào? Ví dụ: n=291. Chữ số lớn nhất nằm ở hàng chục (9).
Bài 21: Viết chương trình có xây dựng hàm nhập vào số nguyên n gồm ba chữ số. Xuất ra màn hình theo
thứ tự tăng dần của các chữ số. Ví dụ: n=291. Xuất ra 129.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
29
BÀI THỰC HÀNH SỐ 5
Nội dung kiến thức thực hành:
- Luyện tập các cấu trúc cơ bản,
- Bài tập về hàm, viết các hàm theo kiểu đệ quy.
Bài 1:
a) Viết hàm đệ qui và không đệ qui tính ước số chung lớn nhất của hai số tự nhiên.
b) Viết chương trình nhập vào một dãy gồm n số nguyên dương (1<n 100) và cho biết ước số chung lớn
nhất của dãy số này.
Bài 2:
a) Hãy viết hàm đệ quy và không đệ quy tìm số hạng thứ n của dãy được xác định như sau:
a = 1; và a = 2
1 n *
a
n-1
với n = 2, 3, 4, 5, ….
b) Viết chương trình đưa ra màn hình dãy gồm n phần tử đầu tiên của dãy số trên (sử dụng hàm ở câu a).
Bài 3:
a) Viết một hàm đệ quy và một hàm không đệ quy tính S(n) = 1 + 1.2 + 1.2.3 + … + 1.2.3….n
b) Viết chương trình nhập vào giá trị n (n ≥10), đưa ra màn hình giá trị S(n).
(Có sử dụng hàm ở câu a)
Bài 4:
a) Viết hàm đệ quy tính số hạng thứ n của một cấp số cộng công sai r, có số hạng đầu là a.
b) Viết một chương trình có sử dụng hàm ở câu a) để đưa ra màn hình n số hạng đầu tiên của cấp số cộng
này.
Bài 5:
a) Viết các hàm đệ quy tính và không đệ quy để tính tổng các bình phương của n số nguyên dương đầu tiên.
(Tính S = 1 + 2 + …. + n )
n
2 2 2
b) Viết một chương trình có sử dụng hàm ở câu a)
Bài 6:
a) Viết các hàm đệ quy và không đệ quy cho biết giá trị lớn nhất trong n phần tử đầu tiên của một mảng.
b) Viết một chương trình có sử dụng hàm ở câu a)
Bài 7:
a) Viết một hàm đệ quy và một hàm không đệ quy tính giá trị của tổ hợp chập k của n phần tử:
k
n
C
(0 ≤ k
≤ n).
b) Sử dụng hàm ở câu a) hãy đưa ra màn hình các hệ số của nhị thức (a+b) , với giá trị n được nhập vào từ
n
bàn phím.
(Gợi ý, ta có công thức:
0 1 1 1 1
.....
n
n n n n n n
n n n n
a b C a C a b C ab C b
)
Bài 8:
a) Hãy viết hàm đệ quy và không đệ quy tìm số hạng thứ n của dãy được xác định như sau:
a = 1; a = 2 và a = a
1 2 n n-1*
a
n-2
với n = 3, 4, 5, ….
b) Viết chương trình nhập vào giá trị n, đưa ra màn hình n phần tử của dãy số trên (có sử dụng hàm ở câu
a)).
Bài 9:
Dãy số Fibonacci được định nghĩa theo công thức truy hồi:
F = F = 1,
1 2
F = F + F , với n=3,4,5,…
n n-1 n-2
a) Viết một hàm đệ quy và một hàm không đệ quy tính số hạng thứ n của dãy Fibonacci.
b) Viết chương trình sử dụng hàm được viết câu a) để đưa ra màn hình n phần tử đầu tiên của dãy
Fibonacci, n được nhập vào từ bàn phím.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
30
Bài 10:
a) Viết một hàm đệ quy và một hàm không đệ quy cho ra tổng của n phần tử đầu tiên của một mảng.
b) Viết chương trình sử dụng hàm được viết ở câu a.
Bài 11:
a) Viết các hàm đệ quy và không đệ quy để tính tổng:
1 ...
2 3
n
S
n
.
b) Viết một chương trình nhập vào từ bàn phím giá trị n, đưa ra màn hình tổng S , có sử dụng hàm ở câu a.
n
Bài 12:
a) Viết hàm đệ quy và không đệ quy tính S(x,n) = x + x + x +....+ x
3 5 2n+1
(x là số thực, n là số nguyên dương)
b) Viết một chương trình nhập vào giá trị x và n, tính và đưa ra màn hình giá trị của S(x,n).
Bài 13:
a) Viết các hàm đệ quy và không đệ quy để tính tổng S(x,n) = x + x + x + x +... + x .
0 1 2 3 n
(b là số thực, n là số nguyên dương)
b) Viết một chương trình có sử dụng hàm ở câu a)
Bài 14 :
a) Hãy viết một hàm đệ quy và một hàm không đệ quy tìm tổng n số nguyên dương lẻ đầu tiên.
b) Viết một chương trình có sử dụng hàm ở câu a)
Bài 15:
a) Hãy viết hàm đệ quy và không đệ quy tìm số hạng thứ n của dãy được xác định như sau:
a = 1; a = 2 và a = 2*a với n = 3, 4, 5, ….
1 2 n n-1
+
a
n-2
b) Viết chương trình nhập vào giá trị n, đưa ra màn hình n phần tử của dãy số trên (có sử dụng hàm ở câu
a).
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
31
BÀI THỰC HÀNH SỐ 6
Nội dung kiến thức thực hành:
- Luyện tập các cấu trúc cơ bản
- Luyện tập về hàm,
- Bài tập về mảng, chuỗi, con trỏ.
Bài 1: Viết chương trình thực hiện các công việc sau:
a) Nhập vào một dãy số
b) Đưa dãy số sau khi nhập ra màn hình
c) Tìm số lớn nhất trong dãy số
d) Tìm số bé nhất trong dãy số
e) Đếm số phần tử dương trong dãy số
f) Đếm số phần tử âm trong dãy số
g) Đếm số phần tử chia hết cho 3 trong dãy số
h) Sắp xếp dãy số theo thứ tự tăng dần. Đưa dãy sau khi sắp xếp ra màn hình.
i) Sắp xếp dãy số theo thứ tự giảm dần. Đưa dãy sau khi sắp xếp ra màn hình.
j) Đọc vào một số, chèn số đó vào dãy số đã sắp thứ tự sao cho không làm mất đi tính sắp xếp của
dãy số. Đưa dãy sau khi chèn ra màn hình.
k) Đọc vào một số, tìm xem trong dãy số đã cho có phần tử bằng giá trị vừa đọc vào hay không? Nếu
có, hãy cho biết vị trí của phần tử đó trong dãy số.
l) Đọc vào một số, hãy xóa phần tử đầu tiên có giá trị bằng số vừa đọc. Đưa dãy sau khi xóa ra màn
hình.
m) Đọc vào một số, hãy xóa các phần tử có giá trị bằng số vừa đọc. Đưa dãy sau khi xóa ra màn hình.
Bài 2: Thực hiện xây dựng các thực hiện các chức năng trong bài số 1 hàm
Bài 3: Viết chương trình nhập vào một dãy các số theo thứ tự tăng, nếu nhập sai quy cách thì yêu cầu
nhập lại. In dãy số sau khi đã nhập xong. Nhập thêm một số mới và chèn số đó vào dãy đã có sao cho dãy
vẫn đảm bảo thứ tự tăng. In lại dãy số để kiểm tra.
Bài 4: Viết chương trình nhập vào một ma trận (mảng hai chiều) các số nguyên, gồm m hàng, n cột. In ma
trận đó lên màn hình. Nhập một số nguyên khác vào và xét xem có phần tử nào của ma trận trùng với số
này không ? Ở vị trí nào ? Có bao nhiêu phần tử ?
Bài 5: Viết chương trình để chuyển đổi vị trí từ dòng thành cột của một ma trận (ma trận chuyển vị)
vuông 4 hàng 4 cột. Sau đó viết cho ma trận tổng quát cấp m*n.
Bài 6: Viết chương trình nhập vào một mảng số tự nhiên. Hãy xuất ra màn hình:
- Dòng 1 : gồm các số lẻ, tổng cộng có bao nhiêu số lẻ.
- Dòng 2 : gồm các số chẵn, tổng cộng có bao nhiêu số chẵn.
- Dòng 3 : gồm các số nguyên tố.
- Dòng 4 : gồm các số không phải là số nguyên tố.
Bài 7: Viết chương trình tính tổng bình phương của các số âm trong một mảng các số nguyên.
Bài 8: Viết chương trình thực hiện việc đảo một mảng một chiều.
Ví dụ : 1 2 3 4 5 7 9 10 đảo thành 10 9 7 5 4 3 2 1 . (Không dùng mảng phụ)
Bài 9: Viết chương trình nhập vào hai ma trận A và B có cấp m, n.
a) In hai ma trận lên màn hình.
b) Tính tổng của hai ma trận
c) Tính hiệu của hai ma trận
Bài 10: Viết chương trình nhập vào hai ma trận A có cấp m, k và B có cấp k, n.
a) In hai ma trận lên màn hình.
b) Tính tích hai ma trận
Bài 11: Xét ma trận A vuông cấp n, các phần tử a[i, i] ( i= 1 ... n ) được gọi là đường chéo chính của ma
trận vuông A. Ma trận vuông A được gọi là ma trận tam giác nếu tất cả các phần tử dưới đường chéo
chính đều bằng 0. Định thức của ma trận tam giác bằng tích các phần tử trên đường chéo chính. Hãy biến
đổi ma trân A về ma trận tam giác. In kết quả từng bước lên màn hình.
Bài 12: Viết chương trình thực hiện việc trộn hai dãy có thứ tự thành một dãy có thứ tự. Yêu cầu không
được trộn chung rồi mới sắp thứ tự. Khi trộn phải tận dụng được tính chất đã sắp của hai dãy con.
Bài 13: Viết một chương trình C nhập một tập hợp số vào trong một mảng và đảo ngược mảng.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
32
Để thực hiện điều này:
Bước 1: Khai báo hai mảng.
Bước 2: Nhập các giá trị vào một mảng.
Bước 3: Thực hiện vòng lặp theo thứ tự ngược trên mảng này để sao chép các giá trị vào mảng
thứ hai. Dùng một chỉ số khác cho mảng thứ hai, chỉ số này chạy từ 0.
Bài 13: Viết một chương trình C để nối hai chuỗi bằng cách sử dụng các con trỏ.
Để thực hiện điều này,
- Khai báo ba biến chuỗi.
- Khai báo ba con trỏ kiểu ký tự.
- Nhập các giá trị của hai chuỗi.
- Tạo ba con trỏ để trỏ đến ba biến chuỗi. Chuỗi thứ ba hiện tại không có bất kỳ giá trị gì.
- Lặp qua chuỗi thứ nhất và sao chép nội dung của chuỗi đó vào chuỗi thứ ba. Sử dụng các biến
con trỏ để sao chép các giá trị.
- Sau khi sao chép chuỗi thứ nhất, lặp qua chuỗi thứ hai và chép nội dung của chuỗi vào cuối
chuỗi ba. Sử dụng các biến con trỏ để sao chép giá trị.
- In ra chuỗi thứ ba.
Bài 14: Viết một chương trình C để đảo một mảng ký tự bằng cách sử dụng con trỏ.
Bài 15: Viết một chương trình để cộng hai ma trận sử dụng các con trỏ.
Bài 16: Hãy tạo ngẫu nhiên một mảng a gồm N phần tử nguyên sau đó thực hiện:
a) Sắp xếp a theo thứ tự tăng dần
b) Loại bỏ bớt các phần tử có giá trị giống nhau sao cho mỗi giá trị chỉ xuất hiện trong a duy nhất
1 lần.
Bài 17: Viết chương trình dạng Menu chọn thực hiện các công việc sau (lưu ý mỗi công việc được thực
hiện trên một hàm):
1. Nhập một số nguyên N (0<N<50).
2. Nhập một mảng gồm N số thực.
3. Tìm số lớn nhất trong mảng.
4. Tìm số nhỏ nhất trong mảng.
5. Tìm số dương chẵn lớn nhất trong mảng.
6. Tìm số âm lẻ nhỏ nhất trong mảng.
7. Tìm các số chính phương trong mảng.
8. Tính tổng mảng.
9. Tính trung bình cộng các phần tử mảng.
10. Tìm những phần tử lớn hơn trung bình cộng.
11. Sắp xếp mảng theo trật tự tăng dần.
12. Sắp xếp mảng theo trật tự giảm dần.
Bài 18: Yêu cầu: Viết chương trình dưới dạng không dùng hàm và dùng hàm.
Cho mảng 2 chiều A, là ma trận vuông cấp n x n, lập chương trình:
a) Tính tổng tất cả các phần tử dương của mảng.
b) Tính tổng các phần tử A[i][j] trong đó (i + j) chia hết cho 5.
c) In ra các số nguyên tố theo từng hàng.
d) Sắp xếp tăng dần theo hàng.
e) Sắp xếp giảm dần theo cột .
f) Sắp xếp tăng dần theo hàng và cột.
g) Tính tổng các phần tử trên đường chéo chính (i = j) và trên đường biên.
h) Tìm phần tử max, phần tử min theo từng hàng, từng cột và toàn bộ ma trận.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
33
BÀI THỰC HÀNH SỐ 7
Nội dung kiến thức thực hành:
- Luyện tập các cấu trúc điều khiển cơ bản,
- Luyện tập về hàm,
- Bài tập về chuỗi.
Bài 1: Viết một chương trình C để hiển thị số lần xuất hiện của một tự nào đó trong một chuỗi. Dùng
một vòng lặp để thực hiện thao tác này 5 lần.
Để làm điều này,
- Khai báo một biến ký tự và một mảng ký tự.
- Khai báo một hàm để nhận vào một mảng ký tự và một biến ký tự, và trả về một giá trị
nguyên.
- Dùng một vòng lặp để nhập vào một chuỗi và một ký tự 5 lần.
- Nhận vào một chuỗi và một ký tự.
- Truyền chuỗi và ký tự vào hàm và nhận giá trị trả về bằng một biến nguyên.
- In giá trị trả về.
- Hàm trên thực hiện so sánh từng kí tự trong chuỗi với kí tụ cần tìm. Tăng biến đếm lên
một mỗi khi tìm thấy kí tự đó trong chuỗi. Cuối cùng, trả về giá trị của biến đếm cho hàm
main().
Bài 2: Viết chương trình nhập một chuỗi ký tự từ bàn phím, xuất ra màn hình mã ASCII của từng ký tự có
trong chuỗi.
Bài 2: Viết chương trình nhập một chuỗi ký tự từ bàn phím, xuất ra màn hình chuỗi đảo ngược của chuỗi
đó. Ví dụ đảo của “abcdx_egh” là “hge_xdcba”.
Bài 3: Viết chương trình nhập một chuỗi ký tự và kiểm tra xem chuổi đó có đối xứng không. Ví dụ :
Chuỗi ABCDEDCBA là chuỗi đối xứng.
Bài 4: Nhập vào một chuỗi bất kỳ, hãy đếm số lần xuất hiện của mỗi loại ký tự.
Ví dụ: Chuoi1[] = “abcdeaabbdca”
Chuoi2[]=”a b c d e”
Số lần xuất hiện[] = 4,3,2,2,1
Bài 5: Viết chương trình nhập vào một chuỗi. In ra màn hình từ bên trái nhất và phần còn lại của chuỗi.
Ví dụ: “Nguyễn Văn Minh” in ra thành:
i. Nguyễn
ii. Văn Minh
Bài 6: In ra màn hình từ bên phải nhất và phần còn lại của chuỗi. Ví dụ: “Nguyễn Văn Minh” in ra thành:
i. Minh
ii. Nguyễn Văn
Bài 7: Viết chương trình nhập vào một chuỗi rồi xuất chuỗi đó ra màn hình dưới dạng mỗi từ một dòng.
Ví dụ: “Nguyễn Văn Minh” in ra :
i. Nguyễn
ii. Văn
iii. Minh
Bài 8: Viết chương trình nhập vào một chuỗi, in ra chuỗi đảo ngược của nó theo từng từ.
Ví dụ : chuỗi “Nguyễn Văn Minh” đảo thành “Minh Văn Nguyễn”
Bài 9: Viết chương trình đổi số tiền từ số thành chữ. Ví dụ: 123 thành chữ là “mot tram hai muoi ba”.
Bài 10: Viết chương trình nhập vào họ và tên của một người, cắt bỏ các khoảng trống không cần thiết
(nếu có), tách tên ra khỏi họ và tên, in tên lên màn hình. Chú ý đến trường hợp cả họ và tên chỉ có một từ.
Bài 10: Viết chương trình nhập vào họ và tên của một người, cắt bỏ các khoảng trắng bên phải, trái và các
khoảng trắng không có nghĩa trong chuỗi. In ra màn hình toàn bộ họ tên người đó dưới dạng chữ hoa, chữ
thường.
Bài 11: Viết chương trình nhập vào một danh sách họ và tên của n người theo kiểu chữ thường, đổi các
chữ cái đầu của họ, tên và chữ lót của mỗi người thành chữ hoa. In kết quả lên màn hình.
Bài 12: Viết chương trình nhập vào một danh sách họ và tên của n người, tách tên từng người ra khỏi họ
và tên rồi sắp xếp danh sách tên theo thứ tự từ điển. In danh sách họ và tên sau khi đã sắp xếp.
Bài 13: Chuyển chuỗi nhập từ bàn phím thành chữ viết hoa, viết thường và viết hoa mỗi chữ cái đầu mỗi
từ.
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
34
Bài 14: Viết một chương trình C để nhập vào 5 tên và một chức danh. Chèn chức danh đó vào phần đầu
mỗi tên trong mảng. Hiển thị các tên đã sửa đổi.
Bài 15: Viết một chương trình C nhập vào nhiệt độ trung bình hằng năm của 5 năm qua cho 5 thành phố.
Bài 16: Hiển thị nhiệt độ lớn nhất và nhỏ nhất của mỗi thành phố. Sử dụng hàm để xác định các nhiệt độ
lớn nhất và nhỏ nhất.
Bài 17: Bài tập phần chuỗi:
1. Nhập một chuỗi a bất kỳ từ bàn phím có kích thước trong khoảng (0-50).
2. Kiểm tra xem trong chuỗi a có ký tự là chữ số hay không.
3. Kiểm tra xem trong chuỗi a có ký tự in HOA hay không.
4. Nhập từ bàn phím một ký tự ch bất kỳ, kiểm tra xem trong chuỗi a có chứa ký tự đó hay không?
5. Nhập từ bàn phím một chuỗi b bất kỳ, kiểm tra xem b có nằm trong a hay không? Kiểm tra xem b có
độ dài lớn hơn a hay không? Kiểm tra xem b có lớn hơn a hay không?
6. Kiểm tra xem chuỗi a có tính đối xứng hay không?
7. Chuỗi a có bao nhiêu từ?
8. Cắt tất cả dấu cách (space) ở cuối chuỗi.
9. Cắt tất cả dấu cách ở đầu chuỗi.
10. Hãy đảm bảo rằng giữa hai từ bất kỳ của chuỗi a chỉ có một dấu cách.
11. Tính giá trị trung bình của tất cả các ký tự của chuỗi a theo thứ tự ký tự trong bảng mã ASCII (ví dụ
nếu chuỗi là "123" thì ký tự '1' có vị trí 49, ký tự '2' có vị trí 50, ký tự '3' có vị trí 51, như vậy giá trị
trung bình là 50).
12. Đếm xem mỗi ký tự trong chuỗi a xuất hiện bao nhiêu lần. Ví dụ với chuỗi "V1StudyAll" thì ký tự
'l' xuất hiện 2 lần, các ký tự khác xuất hiện 1 lần.
13. Hãy chèn vào giữa ký tự có chỉ số 4 và 5 của chuỗi a một ký tự '\n'.
14. Hãy chèn vào giữa 2 ký tự in hoa bất kỳ của chuỗi a ký tự '\t';
Bài 15: Mảng chuỗi
1. Nhập N và nhập một mảng a gồm N chuỗi (0<N<=50 và mỗi chuỗi có kích thước tối đa 30).
2. Tìm những chuỗi có kích thước nhỏ nhất, lớn nhất.
3. Tính kích thước trung bình của các chuỗi.
4. Hiển thị những chuỗi có kích thước lớn hơn kích thước trung bình.
5. Sắp xếp các chuỗi tăng dần, giảm dần theo kích thước.
6. Tìm những chuỗi nhỏ nhất, lớn nhất theo thứ tự ký tự trong bảng mã ASCII.
7. Sắp xếp các chuỗi tăng dần, giảm dần theo thứ tự ký tự trong bảng mã ASCII.
8. Nhập vào từ bàn phím một chuỗi st có kích thước tối đa 30. Tìm những chuỗi trong mảng a có kích
thước bằng chuỗi st. Tìm những chuỗi trong mảng a có chứa chuỗi st.
9. Tìm những chuỗi có tính đối xứng trong mảng a.
10. Hiển thị những chuỗi là địa chỉ email chuẩn (ví dụ "abc@def.com").
11. Tìm những chuỗi có chứa ký tự số.
12. Tìm những chuỗi có chứa ký tự in HOA.
13. Nhập từ bàn phím một ký tự c bất kỳ. Tìm những chuỗi có chứa ký tự c.
14. Mỗi chuỗi trong mảng a có bao nhiêu từ?
15. Nhập vào một ký tự rồi chèn ký tự đó vào vị trí thứ 5 của chuỗi cuối cùng.
16. Nhập M chuỗi (0<M<N) sau đó đếm xem mỗi chuỗi trong M chuỗi xuất hiện bao nhiêu lần trong N
chuỗi.
17. Nối tất cả các chuỗi và in ra.
18. Hiển thị những chuỗi chứa chuỗi đầu tiên
19. Kiểm tra xem chuỗi đầu tiên có bắt đầu bằng chuỗi "hello" không.
20. Tính giá trị trung bình theo vị trí ký tự trong bảng mã ASCII của từng chuỗi.
21. Hiển thị những chuỗi có độ dài lớn hơn độ dài nhỏ nhất và nhỏ hơn độ dài lớn nhất trong mảng a
22. Nhập vào một độ dài xác định và in ra những chuỗi có độ dài bằng độ dài xác định đó.
23. Đếm số từ trong chuỗi thứ N-1
24. Chuyển chuỗi thứ hai thành chuỗi in hoa.
25. Cắt ký tự trắng ở cuối chuỗi cuối cùng
26. Cắt ký tự trắng ở đầu chuỗi cuối cùng
27. Cắt ký tự trắng thừa ở giữa chuỗi cuối cùng
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
35
BÀI THỰC HÀNH SỐ 8
Nội dung kiến thức thực hành:
- Cách tạo/ghi file chương trình, tạo thư mục lưu trữ file chương trình,
- Luyện tập về hàm,
- Bài tập về chuỗi, mảng.
Bài tập phần mảng số 1 chiều:
Bài tập 1:
Hãy tạo ngẫu nhiên một mảng a gồm N phần tử nguyên sau đó thực hiện:
Sắp xếp a theo thứ tự tăng dần
Loại bỏ bớt các phần tử có giá trị giống nhau sao cho mỗi giá trị chỉ xuất hiện trong a duy nhất 1
lần.
Bài tập 2:
Viết chương trình dạng Menu chọn thực hiện các công việc sau (lưu ý mỗi công việc được thực
hiện trên một hàm):
1. Nhập một số nguyên N (0<N<50).
2. Nhập một mảng gồm N số thực.
3. Tìm số lớn nhất trong mảng.
4. Tìm số nhỏ nhất trong mảng.
5. Tìm số dương chẵn lớn nhất trong mảng.
6. Tìm số âm lẻ nhỏ nhất trong mảng.
7. Tìm các số chính phương trong mảng.
8. Tính tổng mảng.
9. Tính trung bình cộng các phần tử mảng.
10. Tìm những phần tử lớn hơn trung bình cộng.
11. Sắp xếp mảng theo trật tự tăng dần.
12. Sắp xếp mảng theo trật tự giảm dần.
Bài tập mảng số 2 chiều:
Yêu cầu: Viết chương trình dưới dạng không dùng hàm và dùng hàm.
Cho mảng 2 chiều A, là ma trận vuông cấp n x n, lập chương trình:
a) Tính tổng tất cả các phần tử dương của mảng.
b) Tính tổng các phần tử A[i][j] trong đó (i + j) chia hết cho 5.
c) In ra các số nguyên tố theo từng hàng.
d) Sắp xếp tăng dần theo hàng.
e) Sắp xếp giảm dần theo cột .
f) Sắp xếp tăng dần theo hàng và cột.
g) Tính tổng các phần tử trên đường chéo chính (i = j) và trên đường biên.
h) Tìm phần tử max, phần tử min theo từng hàng, từng cột và toàn bộ ma trận.
Bài tập phần chuỗi:
1. Nhập một chuỗi a bất kỳ từ bàn phím có kích thước trong khoảng (0,50).
2. Kiểm tra xem trong chuỗi a có ký số hay không.
3. Kiểm tra xem trong chuỗi a có ký tự in HOA hay không.
4. Nhập từ bàn phím một ký tự ch bất kỳ, kiểm tra xem trong chuỗi a có chứa ký tự đó hay không?
5. Nhập từ bàn phím một chuỗi b bất kỳ, kiểm tra xem b có nằm trong a hay không? Kiểm tra xem b có
độ dài lớn hơn a hay không? Kiểm tra xem b có lớn hơn a hay không?
6. Kiểm tra xem chuỗi a có tính đối xứng hay không?
7. Chuỗi a có bao nhiêu từ?
8. Cắt tất cả dấu cách (space) ở cuối chuỗi.
9. Cắt tất cả dấu cách ở đầu chuỗi.
10. Hãy đảm bảo rằng giữa hai từ bất kỳ của chuỗi a chỉ có một dấu cách.
11. Tính giá trị trung bình của tất cả các ký tự của chuỗi a theo thứ tự ký tự trong bảng mã ASCII (ví dụ
nếu chuỗi là "123" thì ký tự '1' có vị trí 49, ký tự '2' có vị trí 50, ký tự '3' có vị trí 51, như vậy giá trị trung
bình là 50).
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
36
12. Đếm xem mỗi ký tự trong chuỗi a xuất hiện bao nhiêu lần. Ví dụ với chuỗi "V1StudyAll" thì ký tự
'l' xuất hiện 2 lần, các ký tự khác xuất hiện 1 lần.
13. Hãy chèn vào giữa ký tự có chỉ số 4 và 5 của chuỗi a một ký tự '\n'.
14. Hãy chèn vào giữa 2 ký tự in hoa bất kỳ của chuỗi a ký tự '\t';
Bài tập phần mảng chuỗi:
1. Nhập N và nhập một mảng a gồm N chuỗi (0<N<=50 và mỗi chuỗi có kích thước tối đa 30).
2. Tìm những chuỗi có kích thước nhỏ nhất, lớn nhất.
3. Tính kích thước trung bình của các chuỗi.
4. Hiển thị những chuỗi có kích thước lớn hơn kích thước trung bình.
5. Sắp xếp các chuỗi tăng dần, giảm dần theo kích thước.
6. Tìm những chuỗi nhỏ nhất, lớn nhất theo thứ tự ký tự trong bảng mã ASCII.
7. Sắp xếp các chuỗi tăng dần, giảm dần theo thứ tự ký tự trong bảng mã ASCII.
8. Nhập vào từ bàn phím một chuỗi st có kích thước tối đa 30. Tìm những chuỗi trong mảng a có kích
thước bằng chuỗi st. Tìm những chuỗi trong mảng a có chứa chuỗi st.
9. Tìm những chuỗi có tính đối xứng trong mảng a.
10. Hiển thị những chuỗi là địa chỉ email chuẩn (ví dụ "abc@def.com").
11. Tìm những chuỗi có chứa ký tự số.
12. Tìm những chuỗi có chứa ký tự in HOA.
13. Nhập từ bàn phím một ký tự c bất kỳ. Tìm những chuỗi có chứa ký tự c.
14. Mỗi chuỗi trong mảng a có bao nhiêu từ?
15. Nhập vào một ký tự rồi chèn ký tự đó vào vị trí thứ 5 của chuỗi cuối cùng.
16. Nhập M chuỗi (0<M<N) sau đó đếm xem mỗi chuỗi trong M chuỗi xuất hiện bao nhiêu lần trong N
chuỗi.
17. Nối tất cả các chuỗi và in ra.
18. Hiển thị những chuỗi chứa chuỗi đầu tiên
19. Kiểm tra xem chuỗi đầu tiên có bắt đầu bằng chuỗi "hello" không.
20. Tính giá trị trung bình theo vị trí ký tự trong bảng mã ASCII của từng chuỗi.
21. Hiển thị những chuỗi có độ dài lớn hơn độ dài nhỏ nhất và nhỏ hơn độ dài lớn nhất trong mảng a
22. Nhập vào một độ dài xác định và in ra những chuỗi có độ dài bằng độ dài xác định đó.
23. Đếm số từ trong chuỗi thứ N-1
24. Chuyển chuỗi thứ hai thành chuỗi in hoa.
25. Cắt ký tự trắng ở cuối chuỗi cuối cùng
26. Cắt ký tự trắng ở đầu chuỗi cuối cùng
27. Cắt ký tự trắng thừa ở giữa chuỗi cuối cùng
| 1/37

Preview text:

TRƯỜNG ĐẠI HỌC HỒNG ĐỨC THANH HÓA
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TRỊNH THỊ PHÚ
BÀI TẬP THỰC HÀNH LẬP TRÌNH CƠ BẢN 3TC (25, 0, 40)
Thanh Hóa, năm 2022
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
MỘT SỐ QUY ĐỊNH CHUNG
1. Sinh viên “bắt buộc” phải in bài thực hành và mang theo khi đến buổi thực hành. Không chấp
nhận cho sinh viên vào phòng máy nếu không có bài thực hành.
2. Sinh viên phải mang thêm bài giảng lý thuyết, tài liệu tham khảo của học phần.
3. Để thuận tiện cho các bạn trong thi giữa kì và cuối kì, các bạn lưu ý khi thực hành:
- Sử dụng môi trường lập trình Code::Block
- Đọc kỹ tài liệu, bài học.
- Lưu file chương trình theo yêu cầu. 1
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
BÀI THỰC HÀNH SỐ 1
Nội dung kiến thức thực hành:
- Làm quen với Code::Block: Hướng dẫn cài đặt và sử dụng
- Viết một chương trình đơn giản và thực thi,
- Cài đặt các bài tập với các câu lệnh vào ra cơ bản.
I. Cài đặt và viết chương trình C++ trên Code::Blocks
Trong phần này, ta sẽ đề cập về việc cài đặt và viết chương trình C++ trên Code::Blocks.
CodeBlocks là một ứng dụng ở dạng mã nguồn mở, hỗ trợ các nền tảng khác nhau như Windows,
Linux, MacOS và bao gồm IDE dành cho C/C ++ miễn phí. Nó hỗ trợ cho nhiều trình biên dịch, chẳng
hạn như GNU GCC (MinGW và Cygwin) và MS Visual C ++.
1. Cài đặt Code::Blocks
Bước 1: Tải phần mềm.
Các bạn truy cập vào đường link tại đây. Nhấp chuột vào "Download the binary release".
Sau đó, thực hiện chọn nền tảng điều hành mà bạn đang sử dụng ví dụ như Windows 2000 / XP / Vista / 7.
Tải xuống file xuống. Trong bài viết này, ta sẽ sử dụng codeblocks-20.03mingw-setup.exe. Bước 2: Cài đặt
Chạy file mà bạn đã tải xuống. Chấp nhận các tùy chọn mặc định và cuối cùng là nhấn vào "Install".
Và đợi nó chạy là xong.
Bước 3: Kiểm tra đường dẫn
Tiến hành kiểm tra đường dẫn của trình biên dịch và trình gỡ lỗi.
1. Kiểm tra đường dẫn của trình biên dịch.
Chọn "Settings""Compiler ..." ⇒ Trong "Selected Compiler", chọn "GNU GCC
Compiler" ⇒ Chọn tab "Toolchain Executables" ⇒ Kiểm tra "Compiler's Installation Directory".
Các bạn hãy đảm bảo nó có dạng như sau "E:\Programs\Programs\CodeBlocks\MinGW”. 2
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
2. Kiểm tra đường dẫn của trình gỡ lỗi.

"Settings""Debugger..." ⇒ Mở rộng "GDB/CDB debugger" ⇒ Chọn "Default"
Trong "Executable path", cung cấp đầy đủ tên đường dẫn của "gdb.exe", ví dụ như sau:
"E:\Programs\Programs\CodeBlocks\MinGW\gdb32.exe ".
Chú ý: Các bạn hãy đảm bảo kiểm tra đúng đường dẫn cho trình gỡ lỗi như trên để chúng ta có thể
sử dụng nó trong việc sửa lỗi (debug) trên Code::Blocks trong phần sau.
3
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH 4
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
2. Viết chương trình C++ trên codeblock
Bước 1:
Các bạn vào Codeblock. Chọn File → New → Empty File
Bước 2: Viết một đoạn mã Code. Ví dụ một đoạn mã như sau: #include using namespace std; int main() {
cout << "Xin chao!" << endl; return 0; }
Tiếp theo, các bạn lưu file lại với tên do bạn tự đặt.
Bước 3: Thực hiện xây dựng chương trình 5
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Các bạn nhấn vào biểu tượng bánh răng bên trên thanh menu công cụ.
Bước 4: Thực hiện chạy chương trình
Cuối cùng, chọn biểu tượng mũi tên màu xanh bên trên thanh menu công cụ.
3. Viết chương trình trình theo một Project
Ta có thể tạo một project cho một ứng dụng cần được lập trình. Một Project sẽ chứa các file liên
quan với nhau ví dụ như các đoạn mã nguồn, các header và các đoạn mã khác.
Bước 1: Chọn "File" "New"
"Project…"
"Console Application" "Go"
Bước 2: Sau khi chọn "Console Application", Thực hiện chọn "Next", Chọn "C++""Next"
Trong Project Titile, bạn có thể nhập tên Project theo ý của mình. Trong "Folder to create project in",
bạn có thể đặt thư mục mà mình muốn lưu. Sau đó chấp nhận các thiết lập mặc định và nhấn "Next". 6
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Trong trường "Compiler", chọn mặc định là "GNU GCC Compiler" và chọn "Finish".
Ở trong phần "Management" bên tay trái, chọn "Projects"
Các bạn nhấn vào dấu + và nhấn đúp chuột vào "main.cpp", là một chương trình mẫu có sẵn in ra chuỗi
ký tự "Hello, world!" 7
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Để xây dựng một chương trình, các bạn chọn vào biểu tượng bánh răng màu vàng trong menu công cụ. 8
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Và để thực hiện chương trình, các bạn nhấn mũi tên màu xanh trong menu công cụ.
Để tạo các file nguồn hoặc header file trong cùng một project.
Chọn "File"
"New" và tiếp theo chọn "File…" 9
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Tiếp theo, chọn "C/C++ source" hoặc "C/C++ header""Go". Sau đó chọn "Next"
Chọn "C++" ⇒ "Next" và màn hình hiện ra như sau:
Trong phần "Filename with full path", nhấn vào dấu Sau đó, tìm đến thư mục của Project và nhập tên
cho file mới. Nhấn vào "All" và nhấn "Finish" 10
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Các bạn có thể tạo nhiều Project khác nhau, do đó, để chạy được một Project cụ thể mà bạn muốn, các bạn
cần phải kích hoạt cho Project đó như sau. Giả sử có 2 Project là abc và abcd. Nhấn chuột phải vào Project
cần thực hiện và chọn "Activate project" 11
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH Mở một Project
Để mở một Project, ta có thể thực hiện như sau
Cách 1: Chọn "File" trên menu công cụ ⇒ "Recent Projects" ⇒ Chọn một Project cần mở.
Cách 2: Chọn "File" trên menu công cụ ⇒ "Open…" ⇒ Tìm đến thư mục mà lưu trữ Project của bạn ⇒ Chọn tên Project. 12
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
4. Sửa lỗi trong Codeblock
Giả sử chương trình bên dưới đây là một chương trình lỗi. Do đó, ta sẽ tìm lỗi theo từng bước. #include using namespace std; int main() { int a = 6; int b = 5; int i = 1; while (i <= a) { b = b * i; i++; }
cout << "Gia tri cua b la: "< return 0; }
Bước 1: Đặt điểm Breakpoint
Đặt điểm Breakpoint ban đầu tại hàm main () bằng cách nhấp vào bên lề trái của chương trình. Một
vòng tròn màu đỏ xuất hiện cho biết một điểm breakpoint đã được đặt tại dòng đó. Điểm breakpoint sẽ tạm
dừng thực hiện chương trình để cho phép người lập trình kiểm tra trạng thái bên trong.
Bước 2: Thực hiện kiểm tra lỗi

Từ "Debug" trên thanh menu công cụ, chọn "Start (F8)". Chương trình sẽ bắt đầu thực thi nhưng
sẽ tạm dừng lại tại điểm Breakpoint, trong ví dụ này ta đặt nó tại main(). Một mũi tên màu vàng sẽ xuất
hiện và trỏ vào câu lệnh sau main(), cho biết rằng đây là câu lệnh sẽ được thực thi tiếp theo. 13
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Bước 3: Thực hiện theo dõi hoạt động của chương trình
Nhấp vào "Debug" trên thanh menu công cụ và chọn "Debugging Windows" "Watches"
Nhấp vào nút "Next line" trên thanh công cụ "Debug" để thực hiện từng bước trong chương trình.
Tại mỗi bước, ta có thể kiểm tra trạng thái bên trong chương trình của mình, chẳng hạn như giá trị của các biến. 14
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Và ta thực hiện từng bước như vậy để kiểm tra lỗi trong chương trình. Như đã đề cập, một điểm
Breakpoint sẽ tạm dừng thực thi chương trình và cho phép kiểm tra các trạng thái bên trong của chương trình.
"Continue" sẽ tiếp tục thực hiện chương trình, cho đến điểm Breakpoint tiếp theo hoặc cho đến
khi kết thúc chương trình.
"Stop" sẽ kết thúc quá trình gỡ lỗi. Chúng ta có thể kết thúc phiên gỡ lỗi hiện tại bằng cách sử
dụng "Stop" hoặc "Continue" cho đến khi kết thúc chương trình.
Trên đây là Cài đặt và viết chương trình C++ trên Code::Blocks
II. CHƯƠNG TRÌNH MINH HỌA
Bài tập 1:
Viết chương trình in ra các dòng chữ sau đây: “Xin chao cac ban!
Chung toi la sinh vien khoa CNTT&TT!” #include using namespace std; 15
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH int main(){
cout<<”Xin chao cac ban! ”<
cout<<”Chung toi la sinh vien khoa CNTT&TT! ”< return 0; }
Bài tập 2:
Viết chương trình tính ra kết quả của phép trừ 15 cho 87, và xuất kết quả ra màn hình. #include using namespace std; int main(){ int x = 15; int y = 87; int z = x – y;
cout<< x <<” - ”<< y <<” = ”< return 0; }
Bài tập 3:
Viết đoạn chương trình sau đây và dự đoán kết quả của chương trình. Sau đó biên dịch và chạy
chương trình để xem kết quả chính xác. Nếu kết quả khác với mình dự đoán thì phân tích xem tại sao lại như vậy. #include using namespace std; int main(){ int answer, result; answer = 100; result = answer - 10;
cout<<"The result is "< return 0; } The result is 95
Bài tập 4: Viết chương trình tính giá trị biểu thức sau và giải thích kết quả. 3x3 - 5x2 + 6 Với x = 2.55. #include using namespace std; int main(){ float x = 2.55;
float y = 3*x*x*x - 5*x*x + 6; cout<< y; return 0; } 23.231623 16
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
III – BÀI TẬP TỰ LÀM
Bài 1:
Viết chương trình in lên màn hình như sau: ************************* * THAO CHUONG BANG * * NGON NGU C * *************************
Bài 2: Viết một chương trình nhập vào một số thực. Ðơn vị tính cho số này là centimet (cm). Hãy in ra số
tương đương tính bằng foot (số thực, có 1 số lẻ thập phân) và inch (số thực, có 1 số lẻ thập phân). Ðộ chính
xác của foot và inch là một số lẻ thập phân.
Hướng dẫn: 2.54 centimeters = 1 inch, và 12 inches = 1 foot.
Nếu giá trị nhập vào là 333.3, kết quả là:
333.3 centimeters tương đương 10.9 feet.
333.3 centimeters tương đương 131.2 inches.
Bài 3: Viết chương trình nhập vào một số a bất kỳ và in ra giá trị bình phương (a2), lập phương (a3) của a và giá trị a4
Bài 4: Viết chương trình đọc từ bàn phím 3 số nguyên biểu diễn ngày, tháng, năm và xuất ra màn hình
dưới dạng "ngay/thang/nam" (chỉ lấy 2 số cuối của năm)
Bài 5: Viết chương trình nhập vào số giây từ 0 đến 86399, đổi số giây nhập vào thành dạng
"gio:phut:giay", mỗi thành phần là một số nguyên có 2 chữ số.
Bài 6: Viết chương trình nhập vào năm sinh, in ra tuổi. Ví dụ nhập 2004 in ra:
Ban sinh nam 2004 vay ban 18 tuoi.
Bài 7: Nhập vào bán kính của hình tròn, tính và in ra chu vi, diện tích của hình tròn đó.
Bài 8: Nhập vào chiều dài, chiều rộng của hình chữ nhật, tính và in ra chu vi, diện tích của hình chữ nhật đó.
Bài 9: Nhập vào cạnh của hình vuông, tính và in ra chu vi, diện tích của hình vuông đó.
Bài 10: Tìm hiểu ý nghĩa các thông báo lỗi thường gặp 17
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
BÀI THỰC HÀNH SỐ 2 Nội dung thực hành:
- Cài đặt các bài tập với cấu trúc rẽ nhánh.
Nhắc lại cú pháp một số câu lệnh rẽ nhánh:
Mệnh đề if-else trong C được sử dụng để kiểm tra một biểu thức điều kiện nào đó có đúng hay
không, nếu đúng thì thực thi những câu lệnh bên trong khối lệnh if và ngược lại nếu sai thì nó sẽ bỏ qua
những câu lệnh đó. Có ba dạng của câu lệnh if trong C. Mệnh đề if. Mệnh đề if-else. Mệnh đề if-elseif-else.
Ngoài ra, còn có dạng mệnh đề if lồng nhau.
Mệnh đề if trong C
Mệnh đề if được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối lệnh sau if được
thực thi nếu giá trị của điều kiện là True. Cú pháp: if (condition) {
// khối lệnh này được thực thi nếu condition = true }
Mệnh đề if-else trong C
Mệnh đề if được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối lệnh sau if được
thực thi nếu giá trị của điều kiện là True, nếu là False thì chỉ có khối lệnh sau else được thực hiện. Cú pháp: if (condition) {
// khối lệnh này được thực thi nếu condition = true } else {
// khối lệnh này được thực thi nếu condition = false }
Mệnh đề if-else if-else trong C
Mệnh đề if-elseif-else cũng kiểm tra giá trị dạng boolean của điều kiện. Nếu giá trị điều kiện if là
True thì chỉ có khối lệnh sau if sẽ được thực hiện. Nếu giá trị điều kiện else if nào là True thì chỉ có khối
lệnh sau if else đó sẽ được thực hiện… Nếu tất cả điều kiện của if và if else là False thì chỉ có khối lệnh
sau else sẽ được thực hiện. Cú pháp: if (condition1) {
// khối lệnh này được thực thi nếu condition1 = true } else if (condition2) {
// khối lệnh này được thực thi nếu condition1 = false và condition2 = true ... } else {
// khối lệnh này được thực thi nếu nếu tất cả những điều kiện trên = false }
Mệnh đề switch trong C cho phép một biến được kiểm tra xem giá trị của nó có bằng một giá trị trong
một danh sách hay không. Mỗi giá trị được gọi là một trường hợp (case).
Cú pháp cho câu lệnh switch trong ngôn ngữ lập trình C như sau:
switch (bieu_thuc) { case gia_tri_1: // Khối lệnh 1 break; //tùy chọn case gia_tri_2: // Khối lệnh 2 break; //tùy chọn ...... case gia_tri_n: // Khối lệnh n break; //tùy chọn default:
// Khối lệnh này được thực thi
// nếu tất cả các điều kiện trên không thỏa mãn } 18
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH I. BÀI TẬP MINH HỌA
Bài tập 1:
Viết chương trình nhập vào một số x, nếu x = 100 thì xuất ra thông báo “Gia tri cua x la
100”, ngược lại, xuất ra thông báo “Gia tri của x khac 100”.
Bài tập minh hoạ sử dụng cấu trúc if #include using namespacestd int main(){ int x; cout<<"Nhap x = "; cin>>x; if(x == 100)
cout<<"Gia tri cua x la 100"; if(x != 100)
cout<<"\nGia tri cua x khac 100"; return 0; }
Bài tập minh hoạ sử dụng cấu trúc if ... else #include using namespace std int main(){ int x; cout<<"Nhap x = "; cin>>x; if(x == 100)
cout<<"Gia tri cua x la 100"; else
cout<<"\nGia tri cua x khac 100"; return 0; }
Bài tập 2: Giải phương trình bậc 1: ax + b = 0 #include using namespace std int main(){ float a, b; cout<<"Nhap a = "; cin>>a; cout<<"Nhap b = "; cin>>b; if(a == 0) { if(b == 0)
cout<<"\nPhuong trinh co vo so nghiem.\n"; else
cout<<"\nPhuong trinh vo nghiem.\n"; } else {
cout<<"\nPhuong trinh co nghiem duy nhat: x =", -b/a; } 19
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH return 0; } Bài tập 3
Nhập vào 1 tháng, năm, cho biết tháng đó có bao nhiêu ngày.
// Thang co 31 ngay: 1, 3, 5, 7, 8, 10, 12
// Thang co 30 ngay: 4, 6, 9, 11 // Thang 2 co 28 hoac 29 ngay #include using namespace std int main(){ //khai bao bien int ngay, thang, nam; int nhuan; //nhap du lieu
cout<<"Nhap vao mot thang: "; cin>>thang;
cout<<"Nhap vao mot nam: "; cin>>nam; //kiem tra nam nhuan nhuan = 0;
if ((nam%400 == 0) || (nam%4 == 0 && nam%100 != 0)) nhuan = 1; ngay = 0; switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: ngay = 31; break; case 4: case 6: case 9: case 11: ngay = 30; break; case 2: if (nhuan == 1) ngay = 29; else ngay = 28; break; }
cout<<"So ngay cua thang ”<< thang<<” cua nam “<} II. BÀI TẬP TỰ LÀM
Bài 1:
Viết chương trình nhập vào số nguyên dương, in ra thông báo số đó là số chẵn hay lẻ
Bài 2: Viết chương trình yêu cầu người dùng nhập vào tuổi của mình. Nếu tuổi nhỏ hơn 18 thì xuất ra câu
“Bạn là trẻ con”, nếu lớn hoặc bằng 18 và nhỏ hơn 65 thì xuất ra câu “Bạn là người lớn”, ngược lại xuất ra câu “Bạn già rồi”.
Bài 3: Một học viên được kiểm tra 3 môn học. Mỗi bài kiểm tra tối đa là 100 điểm. Điểm trung bình của
học viên được tính, và học viên được xếp loại tùy thuộc vào kết quả của điểm trung bình theo qui luật sau: Điểm trung bình Loại >= 90 E+ 80 - < 90 E 70 - < 80 A+ 20
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH 60 - < 70 A 50 - < 60 B+ < 50 RỚT Để thực hiện:
Bước 1: Nhập vào điểm của 3 môn học và lưu trong 3 biến khác nhau là M1, M2 và M3.
Bước 2: Tính điểm trung bình (avg = (M1 + M2 + M3)/3).
Bước 3: Xác định loại của học viên dựa trên điểm trung bình đã tính.
Bước 4: Hiển thị loại.
Bài 4: Khai báo hai biến x và y. Gán trị cho các biến này. Số x được in ra màn hình chỉ khi x nhỏ hơn
2000 hoặc lớn hơn 3000, và số y chỉ được in ra màn hình khi y nằm giữa 100 và 500.
Bài 5: Viết chương trình yêu cầu người dùng nhập vào một ký tự, kiểm tra nếu ký tự đó là chữ hoa thì đổi
thành chữ thường và ngược lại. Xuất kết quả ra màn hình.
Bài 6: Viết chương trình nhập vào 2 số thực. Kiểm tra xem chúng có cùng dấu hay không.
Bài 7: Viết chương trình nhập vào 2 số nguyên dương. Kiểm tra xem số này có chia hết cho số kia hay không.
Bài 8: Viết chương trình yêu cầu người dùng nhập vào 3 số nguyên. Xuất ra màn hình số có giá trị lớn nhất và nhỏ nhất.
Bài 9: Viết chương trình giải phương trình bậc hai: ax2 + bx +c = 0, với a,b,c được nhập vào từ bàn phím.
Bài 10: Nhập ba số a, b, c vào từ bàn phím. Đưa ra màn hình số lớn nhất và số bé nhất trong ba số đã nhập.
Áp dụng cho bài toán 4 số.
Bài 11: 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".
Bài 12: 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.
Bài 13: 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.
Bài 14: 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. 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.
Bài 15: 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.
Bài 16: 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.
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.
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"
Bài 17
: 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? Thông
báo ra màn hình trong các trường hợp. 21
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Bài 18: Viết chương trình nhập vào 3 số nguyên, kiểm tra xem 3 số đó có phải là độ dài của 3 cạnh của 1
tam giác hay không. Trong trường hợp là 3 cạnh của một tam giác, hãy tính chu vi và diện tích của tam giác đó.
Bài 19: Viết chương trình trình bày khả năng của máy tính của bạn. Người dùng nhập và một ký tự trong
bảng chữ cái và chương trình hiển thị ngôn ngữ lập trình tương ứng. Một vài ví dụ nhập và xuất như sau: Nhập Xuất A hoặc a Ada B hoặc b Basic C hoặc c Code::Block D hoặc d dBASE III F hoặc f Fortran P hoặc p Pascal V hoặc v Visual C++
Sử dụng lệnh ‘switch’ để chọn và hiển thị thông điệp thích hợp. Sử dụng nhãn default để hiển thị
thông điệp nếu ký tự nhập không nằm trong danh sách liệt kê trên.
Bài 20: Viết chương trình nhập vào ngày, tháng, năm. Hãy cho biết ngày kế tiếp và ngày trước của ngày
đó. (có code tham khảo bên dưới) 22
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
BÀI THỰC HÀNH SỐ 3
Nội dung kiến thức thực hành:
- Luyện tập các câu lệnh điều kiện,
- Các bài tập với cấu trúc lặp.
I. Nhắc lại cú pháp lệnh lặp:
1) Vòng lặp For trong C
là một cấu trúc điểu khiển lặp được sử dụng để thực thi số lần lặp cụ thể.
Cú pháp của vòng lặp for trong ngôn ngữ lập trình C là:
for (khoi_tao_bien ; check_dieu_kien ; tang/giam_bien) {
// Khối lệnh được thực thi }
Luồng điều khiển trong vòng lặp for:
Bước khoi_tao_bien được thực thi đầu tiên, và chỉ một lần. Bước này cho phép bạn khai báo và
khởi tạo bất kỳ biến điều khiển vòng lặp nào. Bạn cũng có thể không cần phải đặt một khai báo ở
đây, miễn là khai báo dấu chấm phảy (;).
Tiếp theo, check_dieu_kien được đánh giá. Nếu nó là true, phần thân của vòng lặp được thực thi.
Nếu nó là false, phần thân của vòng lặp không thực thi và luồng điều khiển nhảy đến câu lệnh kế
tiếp ngay sau vòng lặp for.
Sau khi phần thân của vòng lặp for được thực thi, luồng điều khiển nhảy ngược lại lên câu
lệnh tang/giam_bien. Câu lệnh này cho phép bạn cập nhật bất kỳ biến điều khiển vòng lặp nào.
Câu lệnh này có thể để trống, miễn là khai báo dấu chấm phảy (;)
check_dieu_kien được đánh giá lại. Nếu nó là true, vòng lặp thực hiện và quá trình lặp lại chính
nó (phần thân của vòng lặp, sau đó là bước tang/giam_bien, và sau đó lại check_dieu_kien). Sau
khi điều kiện là false, vòng lặp for kết thúc.
2) Vòng lặp while trong C được sử dụng để lặp một phần của chương trình một vài lần. Nếu số lần lặp
không được xác định trước thì vòng lặp lặp while được khuyến khích sử dụng trong trường hợp này. Cú pháp: while(condition) {
// Khối lệnh được lặp lại cho đến khi condition = False }
3) vòng lặp do-while trong C
Không giống như vòng lặp for và while, trong đó kiểm tra điều kiện lặp ở đầu vòng lặp, vòng lặp
do-while trong C kiểm tra điều kiện lặp của nó ở dưới cùng của vòng lặp.
Vòng lặp do-while tương tự như một vòng lặp while, ngoại trừ nó được đảm bảo để thực hiện ít nhất một lần.
Cú pháp của vòng lặp do-while trong ngôn ngữ lập trình C là: do {
// Khối lệnh được thực thi } while(condition);
4) Câu lệnh break trong C có hai cách sử dụng như sau:
Khi gặp câu lệnh break trong một vòng lặp, vòng lặp bị kết thúc ngay lập tức và câu lệnh kế tiếp
sau vòng lặp được thực thi.
Lệnh break có thể được sử dụng để kết thúc một case trong câu lệnh switch.
Nếu bạn sử dụng vòng lặp lồng nhau, câu lệnh break sẽ dừng việc thực hiện vòng lặp trong cùng
và bắt đầu thực hiện cấu lệnh kế tiếp sau vòng lặp trong cùng. Cú pháp: break;
5) Câu lệnh continue trong C hoạt động giống như câu lệnh break. Thay vì buộc kết thúc vòng lặp, nó
buộc trở về kiểm tra điều kiện để thực hiện vòng lặp tiếp theo và bỏ qua các lệnh bên trong vòn lặp hiện tại sau lệnh continue.
Đối với vòng lặp for, câu lệnh continue làm cho điều khiển chương trình tăng hoặc giảm biến đếm
của vòng lặp. Đối với vòng lặp while và do-while, câu lệnh continue làm cho điều khiển chương trình
quay về đầu vòng lặp và kiểm tra điều kiện của vòng lặp. Cú pháp: continue; 23
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
II. Bài tập tự luyện
Bài 1: Viết chương trình đưa ra màn hình các ký tự từ A .. Z
Bài 1’: Viết chương trình đưa ra màn hình các số từ 1 đến 500 và in thành các dòng
Bài 2: Khai báo một biến lưu tuổi của một người. In ra tên của người đó với số lần in bằng số tuổi.
Bài 3: Tính lãi suất tiền gửi
Vấn đề: Giả sử tiền gửi tiết kiệm được tính với lãi suất là m% mỗi tháng, sau n tháng thì tiền lãi
được cộng vào gốc. Viết chương trình cho phép tính và in ra màn hình số tiền có được sau K tháng gửi
tiết kiệm với số tiền gốc ban đầu là T.
Bài 4: Viết chương trình tính dân số của một thành phố sau 10 năm nữa, biết rằng dân số hiện nay là
6.000.000, tỉ lệ tăng dân số hàng năm là 1.8%.
Bài 5: Tìm giai thừa của một số nguyên nhập vào từ bàn phím.
Gợi ý: Xem công thức tính giai thừa của một số : •
n! = n * (n-1) * (n-2) * ... * 1 • 4! = 4 * 3 * 2 * 1 • 1! = 1 • 0! = 1 Gợi ý: • Nhập vào một số.
• Khởi đầu, thiết đặt giai thừa của một số là 1.
• Trong khi số còn lớn hơn 1.
• Tính giai thừa của một số bằng giai thừa nhân với số đó.
• Giảm số xuống một đơn vị. • In ra giai thừa.
Bài 6: Viết chương trình sinh dãy số theo dạng sau: 1 12 123 1234 12345 123456 1234567 12345678 123456789
Bài 7: Viết chương trình đếm số chữ số của một số nguyên nhập vào từ bàn phím.
Bài 8: Viết chương trình tính các tổng sau: a) Tổng S = 1+2+….+n
b) S(n) = 1.3.5…(2n+1) với n là một số nguyên dương được nhập từ bàn phím.
c) S(n) = 1 + 1.2 + 1.2.3 + … + 1.2.3..n với n<100 là một số nguyên dương được nhập từ bàn phím.
d) S(n) = 1 + (1+2) + (1+2+3) + … + (1+2+3+…+n) với n là một số nguyên dương được nhập từ bàn phím. e) 2 2 2 S 1 2 3 ... n
với n là một số nguyên dương được nhập từ bàn phím. 1 1 1 S 1 ... f) 2 3 n
với n là một số nguyên dương được nhập từ bàn phím. 1 1 1 S 1 ... g) 2 2 2 2 3 n
với n là một số nguyên dương được nhập từ bàn phím. 1 1 1 S 1 ... h) 3 3 3 2 3 n
với n là một số nguyên dương được nhập từ bàn phím. i) 3 3 3 S 1 2 3 ... n
với n > 0 và n được nhập từ bàn phím.
Bài 9: 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) 24
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH BCNN[a,b] = a*b/(b,r).
Bài 10: Viết chương trình kiểm tra một số nguyên dương n có phải là số nguyên tố hay không?
(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ó)
Bài 11: Viết chương trình nhập vào N rồi tính giai thừa của N.
Bài 12: Viết chương trình lặp lại nhiều lần công việc nhập một ký tự và in ra mã ASCII của ký tự đó, khi
nào nhập số 0 thì dừng.
Bài 14: Viết chương trình tìm các số nguyên gồm 3 chữ số sao cho tích của 3 chữ số bằng tổng 3 chữ số. Ví dụ: 1*2*3 = 1+2+3.
Bài 15: Viết chương trình tìm các số nguyên a, b, c, d khác nhau trong khoảng từ 0 tới 10 thỏa mãn điều kiện: a*d*d = b*c*c*c
Bài 16: Viết chương trình tính tổ hợp N chập K (với K <= N)
C=((N-k+1) * (N-k+2)*…N)/1*2*3*…*k
Bài 17: Viết chương trình giải bài toán cổ điển sau: Trăm trâu, trăm cỏ Trâu đứng ăn năm Trâu nằm ăn ba, Ba trâu già ăn một
Hỏi mỗi loại trâu có bao nhiêu con.
Bài 18: Viết chương trình giải bài toán cổ điển sau: Vừa gà vừa chó 36 con
Bó lại cho tròn, đếm đủ 100 chân
Hỏi có bao nhiêu gà, bao nhiêu chó
Bài 19: Viết chương trình in ra bảng cửu chương
Bài 20: Viết chương trình in ra màn hình tam giác vuông cân đặc có độ cao h (h nhập từ bàn phím). Ví dụ: Nhập h=4 * * * * * * * * * *
Bài 21: Viết chương trình in ra màn hình hình chữ nhật đặc có kích thước m hàng, n cột (m,n nhập từ bàn phím). Ví dụ: Nhập m=4, n=6 * * * * * * * * * * * * * * * * * * * * * * * *
Bài 22: Viết chương trình in ra màn hình hình chữ nhật rỗng có kích thước m hàng, n cột (m,n nhập từ bàn phím). Ví dụ: Nhập m=4, n=6 * * * * * * * * * * * * * * * * * * * * * * * *
Bài 23: Viết chương trình nhập vào các số nguyên dương và tính tổng của chúng, kết thúc khi số nhập vào là số 0.
Bài 24: Viết chương trình nhập vào một số nguyên n gồm ba chữ số. Cho biết chữ số lớn nhất ở vị trí nào?
Ví dụ: n=291. Chữ số lớn nhất nằm ở hàng chục (9).
Bài 25: Viết chương trình đếm số ước số không tầm thường (ước số tầm thường là số 1chính số đó) của số nguyên dương N.
Ví dụ: Nhập N=12. Đưa ra màn hình:
- Các ước của 12 là 2, 3, 4, 6
- Số ước số của 12 là 4
Bài 26: Đưa ra màn hình bảng cửu chương. 25
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Bài 27: 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.
Bài 28: Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình
một số đảo ngược có dạng cba.
Bài 29: 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
Bài 30: Viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) .
Tính tổng s = 1^2 + 2^2+.... + n^2 26
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
BÀI THỰC HÀNH SỐ 4
Nội dung kiến thức thực hành:
- Luyện tập các cấu trúc cơ bản, - Bài tập về hàm.
I. Bài tập tự luyện Bài 1: Viết hàm tính n! Bài 2: Viết hàm tính: a) tổng S = 1+2+….+n
b) S(n) = 1.3.5…(2n+1) với n là một số nguyên dương được nhập từ bàn phím.
c) S(n) = 1 + 1.2 + 1.2.3 + … + 1.2.3..n với n<100 là một số nguyên dương được nhập từ bàn phím.
d) S(n) = 1 + (1+2) + (1+2+3) + … + (1+2+3+…+n) với n là một số nguyên dương được nhập từ bàn phím. e) 2 2 2 S 1 2 3
... n với n là một số nguyên dương được nhập từ bàn phím. 1 1 1 f) S 1 ...
với n là một số nguyên dương được nhập từ bàn phím. 2 3 n 1 1 1 g) S 1 ...
với n là một số nguyên dương được nhập từ bàn phím. 2 2 2 2 3 n 1 1 1 h) S 1 ...
với n là một số nguyên dương được nhập từ bàn phím. 3 3 3 2 3 n i) 3 3 3 S 1 2 3
... n với n > 0 và n được nhập từ bàn phím. hàm số f(x): x với x<=-1 f(x) = arcsin x với -1< x <=1 cox(x)+ e x với x>1
j) trong đó x được nhập từ bàn phím. Viết chương trình có xây dựng hàm tính f(x). hàm số f(x): 2x với x<-1 f(x) = arccos x với -1<= x <=1 sin(x)+ e x với x>1
k) trong đó x được nhập từ bàn phím. Viết chương trình có xây dựng hàm tính f(x). l) hàm số f(x): 2x với x<-1 f(x) = arccos x với -1<= x <=1 sin(x)+ e x với x>1 m) hàm số f(x): 3 x k hi x 2 f (x) log (x ) k h i x 1 10 | 12x s - inx | 28cosx k hi - 2 x 1
Bài 3: a) Viết hàm kiểm tra một số có phải là số nguyên tố hay không?
b) Nhập số nguyên dương n (n >0). Liệt kê n số nguyên tố đầu tiên
Bài 4: a) Viết hàm kiểm tra xem một số nguyên dương n có phải là số chính phương hay không?
b) Nhập số nguyên dương n (n >0). Liệt kê n số chính phương đầu tiên.
Bài 5: Nhập số nguyên dương n (n >0). Viết hàm trả về số chính phương lớn nhất là số lẻ nhỏ hơn n. Nếu không có trả về -1.
Bài 6: a) Viết hàm tính số hạng thứ n trong dãy Fibonacci.
b) Đưa ra màn hình n số hạng đầu tiên của dãy Fibonacci, với n nhập vào từ bàn phím.
c) Nhập vào số M, đưa ra màn hình số Fibonacci lớn nhất bé hơn M 27
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
d) Nhập vào số M, đưa ra màn hình số Fibonacci bé nhất lớn hơn M.
Ví dụ: Dãy gồm 11 số Fibonacci đầu tiên: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
Nếu nhập M=50 thì ta có:
số Fibonacci lớn nhất bé hơn 50 là 34,
số Fibonacci bé nhất lớn hơn 50 là 55,
Bài 7: Viết hàm tìm số lớn nhất trong 2 số.
Bài 8: Viết hàm tìm ước chung lớn nhất của 2 số nguyên dương
Bài 9: Viết hàm tìm bội chung lớn nhất của 2 số nguyên dương
Bài 10: xây dựng hàm đếm xem n có bao nhiêu chữ số chẵn, với n gồm k chữ số (0 dương được nhập từ bàn phím.
Bài 11: Viết chương trình có xây dựng hàm nhập vào một số nguyên n gồm tối đa 5 chữ số. In ra màn
hình giá trị nhị phân của số trên.
Bài 12: Viết chương trình có xây dựng hàm in ra màn hình hình chữ nhật rỗng kích thước m x n (m,n nhập từ bàn phím)
Bài 13: Viết chương trình có xây dựng hàm in ra màn hình tam giác cân rỗng có độ cao h (h nhập từ bàn phím)
Bài 14: Viết chương trình có xây dựng hàm nhập vào ngày, tháng, năm, kiểm tra xem ngày, tháng năm đó
có hợp lệ không? In kết quả ra màn hình.
Bài 15: Viết chương trình có sử dụng hàm nhập vào 2 số a, b sao cho: số lớn nhất trong 2 số phải là một
số dương và chia hết cho 7. Nếu nhập sai phải yêu cầu nhập lại cho đến khi nhập đúng và in ra kết quả đúng
Bài 16: Viết chương trình nhập số nguyên dương n gồm k chữ số ) 5 0 ( ≤ < k , tính tổng các ước số dương của n. Ví dụ: Nhập n=6
Tổng các ước số từ 1 đến n: 1+2+3+6=12.
Bài 17: Viết chương trình nhập vào số nguyên dương n. Kiểm tra xem n có phải là số chính phương hay
không? (số chính phương là số khi lấy căn bặc 2 có kết quả là nguyên).
Bài 18: Viết chương trình nhập số nguyên dương n gồm k chữ số 0≤k≤5, đếm xem n có bao nhiêu chữ số
chẵn và bao nhiêu chữ số lẻ.
Bài 19: Viết chương trình nhập số nguyên dương n gồm k chữ số 0≤k≤5, đếm xem n có bao nhiêu chữ số là số nguyên tố.
Bài 20: Viết chương trình có xây dựng hàm nhập vào một số nguyên n gồm ba chữ số. Xuất ra màn hình
chữ số lớn nhất ở vị trí nào? Ví dụ: n=291. Chữ số lớn nhất nằm ở hàng chục (9).
Bài 21: Viết chương trình có xây dựng hàm nhập vào số nguyên n gồm ba chữ số. Xuất ra màn hình theo
thứ tự tăng dần của các chữ số. Ví dụ: n=291. Xuất ra 129. 28
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
BÀI THỰC HÀNH SỐ 5
Nội dung kiến thức thực hành:
- Luyện tập các cấu trúc cơ bản,
- Bài tập về hàm, viết các hàm theo kiểu đệ quy. Bài 1:
a) Viết hàm đệ qui và không đệ qui tính ước số chung lớn nhất của hai số tự nhiên.
b) Viết chương trình nhập vào một dãy gồm n số nguyên dương (1nhất của dãy số này. Bài 2:
a) Hãy viết hàm đệ quy và không đệ quy tìm số hạng thứ n của dãy được xác định như sau:
a1 = 1; và an = 2* an-1 với n = 2, 3, 4, 5, ….
b) Viết chương trình đưa ra màn hình dãy gồm n phần tử đầu tiên của dãy số trên (sử dụng hàm ở câu a). Bài 3:
a) Viết một hàm đệ quy và một hàm không đệ quy tính S(n) = 1 + 1.2 + 1.2.3 + … + 1.2.3….n
b) Viết chương trình nhập vào giá trị n (n ≥10), đưa ra màn hình giá trị S(n).
(Có sử dụng hàm ở câu a) Bài 4:
a) Viết hàm đệ quy tính số hạng thứ n của một cấp số cộng công sai r, có số hạng đầu là a.
b) Viết một chương trình có sử dụng hàm ở câu a) để đưa ra màn hình n số hạng đầu tiên của cấp số cộng này. Bài 5:
a) Viết các hàm đệ quy tính và không đệ quy để tính tổng các bình phương của n số nguyên dương đầu tiên. (Tính S 2 2 2 n = 1 + 2 + …. + n )
b) Viết một chương trình có sử dụng hàm ở câu a) Bài 6:
a) Viết các hàm đệ quy và không đệ quy cho biết giá trị lớn nhất trong n phần tử đầu tiên của một mảng.
b) Viết một chương trình có sử dụng hàm ở câu a) Bài 7:
a) Viết một hàm đệ quy và một hàm không đệ quy tính giá trị của tổ hợp chập k của n phần tử: k C (0 ≤ k n ≤ n).
b) Sử dụng hàm ở câu a) hãy đưa ra màn hình các hệ số của nhị thức (a+b)n, với giá trị n được nhập vào từ bàn phím.
(Gợi ý, ta có công thức: n 0 n 1 n 1 n 1 n 1 a b C a C a b ..... n n C ab C b ) n n n n Bài 8:
a) Hãy viết hàm đệ quy và không đệ quy tìm số hạng thứ n của dãy được xác định như sau:
a1 = 1; a2 = 2 và an = an-1* an-2 với n = 3, 4, 5, ….
b) Viết chương trình nhập vào giá trị n, đưa ra màn hình n phần tử của dãy số trên (có sử dụng hàm ở câu a)). Bài 9:
Dãy số Fibonacci được định nghĩa theo công thức truy hồi: F1 = F2 = 1, Fn = Fn-1 + Fn-2, với n=3,4,5,…
a) Viết một hàm đệ quy và một hàm không đệ quy tính số hạng thứ n của dãy Fibonacci.
b) Viết chương trình sử dụng hàm được viết ở câu a) để đưa ra màn hình n phần tử đầu tiên của dãy
Fibonacci, n được nhập vào từ bàn phím. 29
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH Bài 10:
a) Viết một hàm đệ quy và một hàm không đệ quy cho ra tổng của n phần tử đầu tiên của một mảng.
b) Viết chương trình sử dụng hàm được viết ở câu a. Bài 11: 1 1 1
a) Viết các hàm đệ quy và không đệ quy để tính tổng: S 1 ... . n 2 3 n
b) Viết một chương trình nhập vào từ bàn phím giá trị n, đưa ra màn hình tổng Sn, có sử dụng hàm ở câu a. Bài 12:
a) Viết hàm đệ quy và không đệ quy tính S(x,n) = x + x3 + x5 +....+ x2n+1
(x là số thực, n là số nguyên dương)
b) Viết một chương trình nhập vào giá trị x và n, tính và đưa ra màn hình giá trị của S(x,n). Bài 13:
a) Viết các hàm đệ quy và không đệ quy để tính tổng S(x,n) = x0 + x1 + x2 + x3+... + xn.
(b là số thực, n là số nguyên dương)
b) Viết một chương trình có sử dụng hàm ở câu a) Bài 14 :
a) Hãy viết một hàm đệ quy và một hàm không đệ quy tìm tổng n số nguyên dương lẻ đầu tiên.
b) Viết một chương trình có sử dụng hàm ở câu a) Bài 15:
a) Hãy viết hàm đệ quy và không đệ quy tìm số hạng thứ n của dãy được xác định như sau:
a1 = 1; a2 = 2 và an = 2*an-1+ an-2 với n = 3, 4, 5, ….
b) Viết chương trình nhập vào giá trị n, đưa ra màn hình n phần tử của dãy số trên (có sử dụng hàm ở câu a). 30
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
BÀI THỰC HÀNH SỐ 6
Nội dung kiến thức thực hành:
- Luyện tập các cấu trúc cơ bản - Luyện tập về hàm,
- Bài tập về mảng, chuỗi, con trỏ.
Bài 1: Viết chương trình thực hiện các công việc sau:
a) Nhập vào một dãy số
b) Đưa dãy số sau khi nhập ra màn hình
c) Tìm số lớn nhất trong dãy số
d) Tìm số bé nhất trong dãy số
e) Đếm số phần tử dương trong dãy số
f) Đếm số phần tử âm trong dãy số
g) Đếm số phần tử chia hết cho 3 trong dãy số
h) Sắp xếp dãy số theo thứ tự tăng dần. Đưa dãy sau khi sắp xếp ra màn hình.
i) Sắp xếp dãy số theo thứ tự giảm dần. Đưa dãy sau khi sắp xếp ra màn hình.
j) Đọc vào một số, chèn số đó vào dãy số đã sắp thứ tự sao cho không làm mất đi tính sắp xếp của
dãy số. Đưa dãy sau khi chèn ra màn hình.
k) Đọc vào một số, tìm xem trong dãy số đã cho có phần tử bằng giá trị vừa đọc vào hay không? Nếu
có, hãy cho biết vị trí của phần tử đó trong dãy số.
l) Đọc vào một số, hãy xóa phần tử đầu tiên có giá trị bằng số vừa đọc. Đưa dãy sau khi xóa ra màn hình.
m) Đọc vào một số, hãy xóa các phần tử có giá trị bằng số vừa đọc. Đưa dãy sau khi xóa ra màn hình.
Bài 2: Thực hiện xây dựng các hàm thực hiện các chức năng trong bài số 1
Bài 3: Viết chương trình nhập vào một dãy các số theo thứ tự tăng, nếu nhập sai quy cách thì yêu cầu
nhập lại. In dãy số sau khi đã nhập xong. Nhập thêm một số mới và chèn số đó vào dãy đã có sao cho dãy
vẫn đảm bảo thứ tự tăng. In lại dãy số để kiểm tra.
Bài 4: Viết chương trình nhập vào một ma trận (mảng hai chiều) các số nguyên, gồm m hàng, n cột. In ma
trận đó lên màn hình. Nhập một số nguyên khác vào và xét xem có phần tử nào của ma trận trùng với số
này không ? Ở vị trí nào ? Có bao nhiêu phần tử ?
Bài 5: Viết chương trình để chuyển đổi vị trí từ dòng thành cột của một ma trận (ma trận chuyển vị)
vuông 4 hàng 4 cột. Sau đó viết cho ma trận tổng quát cấp m*n.
Bài 6: Viết chương trình nhập vào một mảng số tự nhiên. Hãy xuất ra màn hình:
- Dòng 1 : gồm các số lẻ, tổng cộng có bao nhiêu số lẻ.
- Dòng 2 : gồm các số chẵn, tổng cộng có bao nhiêu số chẵn.
- Dòng 3 : gồm các số nguyên tố.
- Dòng 4 : gồm các số không phải là số nguyên tố.
Bài 7: Viết chương trình tính tổng bình phương của các số âm trong một mảng các số nguyên.
Bài 8: Viết chương trình thực hiện việc đảo một mảng một chiều.
Ví dụ : 1 2 3 4 5 7 9 10 đảo thành 10 9 7 5 4 3 2 1 . (Không dùng mảng phụ)
Bài 9: Viết chương trình nhập vào hai ma trận A và B có cấp m, n.
a) In hai ma trận lên màn hình.
b) Tính tổng của hai ma trận
c) Tính hiệu của hai ma trận
Bài 10: Viết chương trình nhập vào hai ma trận A có cấp m, k và B có cấp k, n.
a) In hai ma trận lên màn hình. b) Tính tích hai ma trận
Bài 11: Xét ma trận A vuông cấp n, các phần tử a[i, i] ( i= 1 ... n ) được gọi là đường chéo chính của ma
trận vuông A. Ma trận vuông A được gọi là ma trận tam giác nếu tất cả các phần tử dưới đường chéo
chính đều bằng 0. Định thức của ma trận tam giác bằng tích các phần tử trên đường chéo chính. Hãy biến
đổi ma trân A về ma trận tam giác. In kết quả từng bước lên màn hình.
Bài 12: Viết chương trình thực hiện việc trộn hai dãy có thứ tự thành một dãy có thứ tự. Yêu cầu không
được trộn chung rồi mới sắp thứ tự. Khi trộn phải tận dụng được tính chất đã sắp của hai dãy con.
Bài 13: Viết một chương trình C nhập một tập hợp số vào trong một mảng và đảo ngược mảng. 31
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Để thực hiện điều này:
Bước 1: Khai báo hai mảng.
Bước 2: Nhập các giá trị vào một mảng.
Bước 3: Thực hiện vòng lặp theo thứ tự ngược trên mảng này để sao chép các giá trị vào mảng
thứ hai. Dùng một chỉ số khác cho mảng thứ hai, chỉ số này chạy từ 0.
Bài 13: Viết một chương trình C để nối hai chuỗi bằng cách sử dụng các con trỏ.
Để thực hiện điều này,
- Khai báo ba biến chuỗi.
- Khai báo ba con trỏ kiểu ký tự.
- Nhập các giá trị của hai chuỗi.
- Tạo ba con trỏ để trỏ đến ba biến chuỗi. Chuỗi thứ ba hiện tại không có bất kỳ giá trị gì.
- Lặp qua chuỗi thứ nhất và sao chép nội dung của chuỗi đó vào chuỗi thứ ba. Sử dụng các biến
con trỏ để sao chép các giá trị.
- Sau khi sao chép chuỗi thứ nhất, lặp qua chuỗi thứ hai và chép nội dung của chuỗi vào cuối
chuỗi ba. Sử dụng các biến con trỏ để sao chép giá trị. - In ra chuỗi thứ ba.
Bài 14: Viết một chương trình C để đảo một mảng ký tự bằng cách sử dụng con trỏ.
Bài 15: Viết một chương trình để cộng hai ma trận sử dụng các con trỏ.
Bài 16: Hãy tạo ngẫu nhiên một mảng a gồm N phần tử nguyên sau đó thực hiện:
a) Sắp xếp a theo thứ tự tăng dần
b) Loại bỏ bớt các phần tử có giá trị giống nhau sao cho mỗi giá trị chỉ xuất hiện trong a duy nhất 1 lần.
Bài 17: Viết chương trình dạng Menu chọn thực hiện các công việc sau (lưu ý mỗi công việc được thực hiện trên một hàm):
1. Nhập một số nguyên N (02. Nhập một mảng gồm N số thực.
3. Tìm số lớn nhất trong mảng.
4. Tìm số nhỏ nhất trong mảng.
5. Tìm số dương chẵn lớn nhất trong mảng.
6. Tìm số âm lẻ nhỏ nhất trong mảng.
7. Tìm các số chính phương trong mảng. 8. Tính tổng mảng.
9. Tính trung bình cộng các phần tử mảng.
10. Tìm những phần tử lớn hơn trung bình cộng.
11. Sắp xếp mảng theo trật tự tăng dần.
12. Sắp xếp mảng theo trật tự giảm dần.
Bài 18: Yêu cầu: Viết chương trình dưới dạng không dùng hàm và dùng hàm.
Cho mảng 2 chiều A, là ma trận vuông cấp n x n, lập chương trình:
a) Tính tổng tất cả các phần tử dương của mảng.
b) Tính tổng các phần tử A[i][j] trong đó (i + j) chia hết cho 5.
c) In ra các số nguyên tố theo từng hàng.
d) Sắp xếp tăng dần theo hàng.
e) Sắp xếp giảm dần theo cột .
f) Sắp xếp tăng dần theo hàng và cột.
g) Tính tổng các phần tử trên đường chéo chính (i = j) và trên đường biên.
h) Tìm phần tử max, phần tử min theo từng hàng, từng cột và toàn bộ ma trận. 32
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
BÀI THỰC HÀNH SỐ 7
Nội dung kiến thức thực hành:
- Luyện tập các cấu trúc điều khiển cơ bản, - Luyện tập về hàm, - Bài tập về chuỗi.
Bài 1: Viết một chương trình C để hiển thị số lần xuất hiện của một ký tự nào đó trong một chuỗi. Dùng
một vòng lặp để thực hiện thao tác này 5 lần. Để làm điều này,
- Khai báo một biến ký tự và một mảng ký tự.
- Khai báo một hàm để nhận vào một mảng ký tự và một biến ký tự, và trả về một giá trị nguyên.
- Dùng một vòng lặp để nhập vào một chuỗi và một ký tự 5 lần.
- Nhận vào một chuỗi và một ký tự.
- Truyền chuỗi và ký tự vào hàm và nhận giá trị trả về bằng một biến nguyên. - In giá trị trả về.
- Hàm trên thực hiện so sánh từng kí tự trong chuỗi với kí tụ cần tìm. Tăng biến đếm lên
một mỗi khi tìm thấy kí tự đó trong chuỗi. Cuối cùng, trả về giá trị của biến đếm cho hàm main().
Bài 2: Viết chương trình nhập một chuỗi ký tự từ bàn phím, xuất ra màn hình mã ASCII của từng ký tự có trong chuỗi.
Bài 2: Viết chương trình nhập một chuỗi ký tự từ bàn phím, xuất ra màn hình chuỗi đảo ngược của chuỗi
đó. Ví dụ đảo của “abcdx_egh” là “hge_xdcba”.
Bài 3: Viết chương trình nhập một chuỗi ký tự và kiểm tra xem chuổi đó có đối xứng không. Ví dụ :
Chuỗi ABCDEDCBA là chuỗi đối xứng.
Bài 4: Nhập vào một chuỗi bất kỳ, hãy đếm số lần xuất hiện của mỗi loại ký tự.
Ví dụ: Chuoi1[] = “abcdeaabbdca” Chuoi2[]=”a b c d e”
Số lần xuất hiện[] = 4,3,2,2,1
Bài 5: Viết chương trình nhập vào một chuỗi. In ra màn hình từ bên trái nhất và phần còn lại của chuỗi.
Ví dụ: “Nguyễn Văn Minh” in ra thành: i. Nguyễn ii. Văn Minh
Bài 6: In ra màn hình từ bên phải nhất và phần còn lại của chuỗi. Ví dụ: “Nguyễn Văn Minh” in ra thành: i. Minh ii. Nguyễn Văn
Bài 7: Viết chương trình nhập vào một chuỗi rồi xuất chuỗi đó ra màn hình dưới dạng mỗi từ một dòng.
Ví dụ: “Nguyễn Văn Minh” in ra : i. Nguyễn ii. Văn iii. Minh
Bài 8: Viết chương trình nhập vào một chuỗi, in ra chuỗi đảo ngược của nó theo từng từ.
Ví dụ : chuỗi “Nguyễn Văn Minh” đảo thành “Minh Văn Nguyễn”
Bài 9: Viết chương trình đổi số tiền từ số thành chữ. Ví dụ: 123 thành chữ là “mot tram hai muoi ba”.
Bài 10: Viết chương trình nhập vào họ và tên của một người, cắt bỏ các khoảng trống không cần thiết
(nếu có), tách tên ra khỏi họ và tên, in tên lên màn hình. Chú ý đến trường hợp cả họ và tên chỉ có một từ.
Bài 10: Viết chương trình nhập vào họ và tên của một người, cắt bỏ các khoảng trắng bên phải, trái và các
khoảng trắng không có nghĩa trong chuỗi. In ra màn hình toàn bộ họ tên người đó dưới dạng chữ hoa, chữ thường.
Bài 11: Viết chương trình nhập vào một danh sách họ và tên của n người theo kiểu chữ thường, đổi các
chữ cái đầu của họ, tên và chữ lót của mỗi người thành chữ hoa. In kết quả lên màn hình.
Bài 12: Viết chương trình nhập vào một danh sách họ và tên của n người, tách tên từng người ra khỏi họ
và tên rồi sắp xếp danh sách tên theo thứ tự từ điển. In danh sách họ và tên sau khi đã sắp xếp.
Bài 13: Chuyển chuỗi nhập từ bàn phím thành chữ viết hoa, viết thường và viết hoa mỗi chữ cái đầu mỗi từ. 33
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
Bài 14: Viết một chương trình C để nhập vào 5 tên và một chức danh. Chèn chức danh đó vào phần đầu
mỗi tên trong mảng. Hiển thị các tên đã sửa đổi.
Bài 15: Viết một chương trình C nhập vào nhiệt độ trung bình hằng năm của 5 năm qua cho 5 thành phố.
Bài 16: Hiển thị nhiệt độ lớn nhất và nhỏ nhất của mỗi thành phố. Sử dụng hàm để xác định các nhiệt độ
lớn nhất và nhỏ nhất.
Bài 17: Bài tập phần chuỗi:

1. Nhập một chuỗi a bất kỳ từ bàn phím có kích thước trong khoảng (0-50).
2. Kiểm tra xem trong chuỗi a có ký tự là chữ số hay không.
3. Kiểm tra xem trong chuỗi a có ký tự in HOA hay không.
4. Nhập từ bàn phím một ký tự ch bất kỳ, kiểm tra xem trong chuỗi a có chứa ký tự đó hay không?
5. Nhập từ bàn phím một chuỗi b bất kỳ, kiểm tra xem b có nằm trong a hay không? Kiểm tra xem b có
độ dài lớn hơn a hay không? Kiểm tra xem b có lớn hơn a hay không?
6. Kiểm tra xem chuỗi a có tính đối xứng hay không?
7. Chuỗi a có bao nhiêu từ?
8. Cắt tất cả dấu cách (space) ở cuối chuỗi.
9. Cắt tất cả dấu cách ở đầu chuỗi.
10. Hãy đảm bảo rằng giữa hai từ bất kỳ của chuỗi a chỉ có một dấu cách.
11. Tính giá trị trung bình của tất cả các ký tự của chuỗi a theo thứ tự ký tự trong bảng mã ASCII (ví dụ
nếu chuỗi là "123" thì ký tự '1' có vị trí 49, ký tự '2' có vị trí 50, ký tự '3' có vị trí 51, như vậy giá trị trung bình là 50).
12. Đếm xem mỗi ký tự trong chuỗi a xuất hiện bao nhiêu lần. Ví dụ với chuỗi "V1StudyAll" thì ký tự
'l' xuất hiện 2 lần, các ký tự khác xuất hiện 1 lần.
13. Hãy chèn vào giữa ký tự có chỉ số 4 và 5 của chuỗi a một ký tự '\n'.
14. Hãy chèn vào giữa 2 ký tự in hoa bất kỳ của chuỗi a ký tự '\t'; Bài 15: Mảng chuỗi
1. Nhập N và nhập một mảng a gồm N chuỗi (02. Tìm những chuỗi có kích thước nhỏ nhất, lớn nhất.
3. Tính kích thước trung bình của các chuỗi.
4. Hiển thị những chuỗi có kích thước lớn hơn kích thước trung bình.
5. Sắp xếp các chuỗi tăng dần, giảm dần theo kích thước.
6. Tìm những chuỗi nhỏ nhất, lớn nhất theo thứ tự ký tự trong bảng mã ASCII.
7. Sắp xếp các chuỗi tăng dần, giảm dần theo thứ tự ký tự trong bảng mã ASCII.
8. Nhập vào từ bàn phím một chuỗi st có kích thước tối đa 30. Tìm những chuỗi trong mảng a có kích
thước bằng chuỗi st. Tìm những chuỗi trong mảng a có chứa chuỗi st.
9. Tìm những chuỗi có tính đối xứng trong mảng a.
10. Hiển thị những chuỗi là địa chỉ email chuẩn (ví dụ "abc@def.com").
11. Tìm những chuỗi có chứa ký tự số.
12. Tìm những chuỗi có chứa ký tự in HOA.
13. Nhập từ bàn phím một ký tự c bất kỳ. Tìm những chuỗi có chứa ký tự c.
14. Mỗi chuỗi trong mảng a có bao nhiêu từ?
15. Nhập vào một ký tự rồi chèn ký tự đó vào vị trí thứ 5 của chuỗi cuối cùng.
16. Nhập M chuỗi (0chuỗi.
17. Nối tất cả các chuỗi và in ra.
18. Hiển thị những chuỗi chứa chuỗi đầu tiên
19. Kiểm tra xem chuỗi đầu tiên có bắt đầu bằng chuỗi "hello" không.
20. Tính giá trị trung bình theo vị trí ký tự trong bảng mã ASCII của từng chuỗi.
21. Hiển thị những chuỗi có độ dài lớn hơn độ dài nhỏ nhất và nhỏ hơn độ dài lớn nhất trong mảng a
22. Nhập vào một độ dài xác định và in ra những chuỗi có độ dài bằng độ dài xác định đó.
23. Đếm số từ trong chuỗi thứ N-1
24. Chuyển chuỗi thứ hai thành chuỗi in hoa.
25. Cắt ký tự trắng ở cuối chuỗi cuối cùng
26. Cắt ký tự trắng ở đầu chuỗi cuối cùng
27. Cắt ký tự trắng thừa ở giữa chuỗi cuối cùng 34
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
BÀI THỰC HÀNH SỐ 8
Nội dung kiến thức thực hành:
- Cách tạo/ghi file chương trình, tạo thư mục lưu trữ file chương trình, - Luyện tập về hàm,
- Bài tập về chuỗi, mảng.
Bài tập phần mảng số 1 chiều: Bài tập 1:
Hãy tạo ngẫu nhiên một mảng a gồm N phần tử nguyên sau đó thực hiện:
Sắp xếp a theo thứ tự tăng dần
Loại bỏ bớt các phần tử có giá trị giống nhau sao cho mỗi giá trị chỉ xuất hiện trong a duy nhất 1 lần. Bài tập 2:
Viết chương trình dạng Menu chọn thực hiện các công việc sau (lưu ý mỗi công việc được thực hiện trên một hàm):
1. Nhập một số nguyên N (02. Nhập một mảng gồm N số thực.
3. Tìm số lớn nhất trong mảng.
4. Tìm số nhỏ nhất trong mảng.
5. Tìm số dương chẵn lớn nhất trong mảng.
6. Tìm số âm lẻ nhỏ nhất trong mảng.
7. Tìm các số chính phương trong mảng. 8. Tính tổng mảng.
9. Tính trung bình cộng các phần tử mảng.
10. Tìm những phần tử lớn hơn trung bình cộng.
11. Sắp xếp mảng theo trật tự tăng dần.
12. Sắp xếp mảng theo trật tự giảm dần.
Bài tập mảng số 2 chiều:
Yêu cầu: Viết chương trình dưới dạng không dùng hàm và dùng hàm.
Cho mảng 2 chiều A, là ma trận vuông cấp n x n, lập chương trình:
a) Tính tổng tất cả các phần tử dương của mảng.
b) Tính tổng các phần tử A[i][j] trong đó (i + j) chia hết cho 5.
c) In ra các số nguyên tố theo từng hàng.
d) Sắp xếp tăng dần theo hàng.
e) Sắp xếp giảm dần theo cột .
f) Sắp xếp tăng dần theo hàng và cột.
g) Tính tổng các phần tử trên đường chéo chính (i = j) và trên đường biên.
h) Tìm phần tử max, phần tử min theo từng hàng, từng cột và toàn bộ ma trận. Bài tập phần chuỗi:
1. Nhập một chuỗi a bất kỳ từ bàn phím có kích thước trong khoảng (0,50).
2. Kiểm tra xem trong chuỗi a có ký số hay không.
3. Kiểm tra xem trong chuỗi a có ký tự in HOA hay không.
4. Nhập từ bàn phím một ký tự ch bất kỳ, kiểm tra xem trong chuỗi a có chứa ký tự đó hay không?
5. Nhập từ bàn phím một chuỗi b bất kỳ, kiểm tra xem b có nằm trong a hay không? Kiểm tra xem b có
độ dài lớn hơn a hay không? Kiểm tra xem b có lớn hơn a hay không?
6. Kiểm tra xem chuỗi a có tính đối xứng hay không?
7. Chuỗi a có bao nhiêu từ?
8. Cắt tất cả dấu cách (space) ở cuối chuỗi.
9. Cắt tất cả dấu cách ở đầu chuỗi.
10. Hãy đảm bảo rằng giữa hai từ bất kỳ của chuỗi a chỉ có một dấu cách.
11. Tính giá trị trung bình của tất cả các ký tự của chuỗi a theo thứ tự ký tự trong bảng mã ASCII (ví dụ
nếu chuỗi là "123" thì ký tự '1' có vị trí 49, ký tự '2' có vị trí 50, ký tự '3' có vị trí 51, như vậy giá trị trung bình là 50). 35
LẬP TRÌNH CƠ BẢN – BÀI TẬP THỰC HÀNH
12. Đếm xem mỗi ký tự trong chuỗi a xuất hiện bao nhiêu lần. Ví dụ với chuỗi "V1StudyAll" thì ký tự
'l' xuất hiện 2 lần, các ký tự khác xuất hiện 1 lần.
13. Hãy chèn vào giữa ký tự có chỉ số 4 và 5 của chuỗi a một ký tự '\n'.
14. Hãy chèn vào giữa 2 ký tự in hoa bất kỳ của chuỗi a ký tự '\t';
Bài tập phần mảng chuỗi:
1. Nhập N và nhập một mảng a gồm N chuỗi (02. Tìm những chuỗi có kích thước nhỏ nhất, lớn nhất.
3. Tính kích thước trung bình của các chuỗi.
4. Hiển thị những chuỗi có kích thước lớn hơn kích thước trung bình.
5. Sắp xếp các chuỗi tăng dần, giảm dần theo kích thước.
6. Tìm những chuỗi nhỏ nhất, lớn nhất theo thứ tự ký tự trong bảng mã ASCII.
7. Sắp xếp các chuỗi tăng dần, giảm dần theo thứ tự ký tự trong bảng mã ASCII.
8. Nhập vào từ bàn phím một chuỗi st có kích thước tối đa 30. Tìm những chuỗi trong mảng a có kích
thước bằng chuỗi st. Tìm những chuỗi trong mảng a có chứa chuỗi st.
9. Tìm những chuỗi có tính đối xứng trong mảng a.
10. Hiển thị những chuỗi là địa chỉ email chuẩn (ví dụ "abc@def.com").
11. Tìm những chuỗi có chứa ký tự số.
12. Tìm những chuỗi có chứa ký tự in HOA.
13. Nhập từ bàn phím một ký tự c bất kỳ. Tìm những chuỗi có chứa ký tự c.
14. Mỗi chuỗi trong mảng a có bao nhiêu từ?
15. Nhập vào một ký tự rồi chèn ký tự đó vào vị trí thứ 5 của chuỗi cuối cùng.
16. Nhập M chuỗi (0chuỗi.
17. Nối tất cả các chuỗi và in ra.
18. Hiển thị những chuỗi chứa chuỗi đầu tiên
19. Kiểm tra xem chuỗi đầu tiên có bắt đầu bằng chuỗi "hello" không.
20. Tính giá trị trung bình theo vị trí ký tự trong bảng mã ASCII của từng chuỗi.
21. Hiển thị những chuỗi có độ dài lớn hơn độ dài nhỏ nhất và nhỏ hơn độ dài lớn nhất trong mảng a
22. Nhập vào một độ dài xác định và in ra những chuỗi có độ dài bằng độ dài xác định đó.
23. Đếm số từ trong chuỗi thứ N-1
24. Chuyển chuỗi thứ hai thành chuỗi in hoa.
25. Cắt ký tự trắng ở cuối chuỗi cuối cùng
26. Cắt ký tự trắng ở đầu chuỗi cuối cùng
27. Cắt ký tự trắng thừa ở giữa chuỗi cuối cùng 36