You are on page 1of 47

Khoa ðTVTHK

TÀI LIỆU THỰC HÀNH


MÔN KỸ THUẬT LẬP
TRÌNH C++
Phiên bản 2.0 Sep-2010
dtvt.hvhkvn

Lab 00: LÀM QUEN Dev-C++ ..................................................... 3


LAB 01: Biểu thức, tóan tử trong C++ .......................................11
LAB 02: Selection Structure .......................................................19
Lab 04: HÀM ..............................................................................33
Lab 05: Array .............................................................................42
10
VAA. ðTVTHK Tài Liệu Thực Hành

LAB00: HƯỚNG DẪN CÀI ðẶT VÀ SỬ


DỤNG DEV-CPP

NỘI DUNG CHÍNH


Lab 0: LÀM QUEN Dev-C++............................................................................................ 3
1. Giới thiệu .................................................................................................................. 3
2. Cài ñặt ...................................................................................................................... 3
3. Thao tác với Dev-C++ .............................................................................................. 3
3.1 Cấu hình Dev-C++ (Chỉ thực hiện lần ñầu) ......................................................... 3
3.2 Tạo chương trình mới hoặc dự án mới ............................................................... 4
4. Chương trình Hello World ........................................................................................ 6

Kỹ Thuật Lập Trình C++ Trang 2


VAA. ðTVTHK Tài Liệu Thực Hành

Lab 00: LÀM QUEN Dev-C++

1. Giới thiệu
Dev-C++ (Dev-Cpp, phiên bản hiện tại là 4.9.9.2) là một bộ công cụ phát triển tích hợp (IDE
Integrated Development Environment) các ứng dụng C/C++ thuộc dạng mã nguồn mở và có
thể download tại ñịa chỉ http://www.bloodshed.net. DevCpp dựa trên trình biên dịch mã
nguồn mở MinGW (Minimalist GNU* for Windows, http://www.mingw.org/). MinGW sử dụng
GCC (the GNU g++ compiler collection) sử dụng cho cả hệ thống Windows và Linux. Hiện nay
DevCpp là công cụ phát triển các ứng dụng C/C++ ñược sử dụng rộng rãi ñể dạy về lập
trình cũng như ñể phát triển các ứng dụng mã nguồn mở.
Mặc dù không có nhiều tính năng cao cấp như các công cụ IDE thương mại khác (Visual
Studio của Microsoft) nhưng DevCpp vẫn là một công cụ rất thích hợp trong môi trường giáo
dục ở bậc ñại học khi dạy và học các ngôn ngữ C/C++. Lý do là Dev-C++ hỗ trợ C/C++ chuẩn,
mã nguồn viết trên Dev-C++ có thể biên dịch trên các IDE khác, ñiều ngược lại có thể không
ñúng.
2. Cài ñặt
Có 2 phiên bản của dev-c++. Bản cài ñặt và bản portable.
• Bản cài ñặt: Tải file cài ñặt tại ñịa chỉ: http://www.bloodshed.net/devcpp.html sau ñó,
thực hiện cài ñặt theo hướng dẫn trên màn hình.
• Bản portable: Phiên bản portable không cần cài ñặt có thể tải về từ ñịa chỉ
http://sourceforge.net/projects/devcpp-portable/
• Trong phòng lab, Dev-CPP ñược cài ñặt và có tại ổ dĩa D:\Dev-CPP
3. Thao tác với Dev-C++
3.1 Cấu hình Dev-C++ (Chỉ thực hiện lần ñầu)
Chạy DEV-C++ (file devcpp.exe) màn hình sau xuất hiện như hình 1.
• Vào menu "Tools" chọn "Compiler Options".
• Vào tab "Settings" tab, nhấn vào "Linker" ở khung bên trái và thay ñổi thông số
"Generate debugging information" sang "Yes":
• Nhấn OK

Kỹ Thuật Lập Trình C++ Trang 3


VAA. ðTVTHK Tài Liệu Thực Hành

3.2 Tạo chương trình mới hoặc dự án mới


Các bước sử dụng Dev-CPP ñể tạo ra
chương trình C/C++ ñơn giản bao gồm các
bước chính như sau:
• B1. Tạo file/project
• B2. Sọan thảo mã nguồn
• B3. Biên dịch, sửa lỗi (nếu có)
• B4. Chạy thử và kiểm tra kết quả
• B5. Debug (nếu cần)
Bước 1: Tạo file hoặc project (dự án) mới
a. Trường hợp chương trình ñơn giản
Trong trường hợp chương trình ñơn giản,
chúng ta chỉ cần 1 file ñể lưu mã nguồn, khi ñó
chúng ta chọnmenu File | New | Source File
(Ctrl-N) . Nhập mã nguồn (Hầu hết các
trường hợp trong phòng lab sử dụng cách
này)
b. Trường hợp chương trình phức tạp
ðối với chương trình C/C++ phức tạp, 1 chương trình cần nhiều file ñể thực hiện thì DevCPP
có khái niệm dự án (project). Project là nơi cất giữ tất cả những thông tin liên quan ñến mã
nguồn, thư viện, tài nguyên,… ñể biên dịch thành chương trình.
• ðể tạo Project mới, vào menu "File" chọn "New", "Project...".
• Chọn "Console Application" và chọn "C project" nếu là lập trình C, Chọn “C++ Project”
nếu là C++. Nhập tên project, tên project cũng là tên của file thực thi (.exe) sẽ tạo ra khi
biên dịch.
• Nhấn "OK". Dev-C++ sẽ hỏi nơi lưu trữ project. Nhấn "OK".
Trong phòng Lab, phải lưu vào ổ dĩa D theo hướng dẫn của từng bài

Kỹ Thuật Lập Trình C++ Trang 4


VAA. ðTVTHK Tài Liệu Thực Hành

Bước 2: Sọan thảo mã nguồn


Nếu bước 1.a thì chúng ta bắt tay ngay vào việc nhập mã nguồn chương trình
Nếu là bước 1.b, chúng ta có 2 cách thêm mã nguồn vào dự án.
• Vào menu "File" chọn "New Source File" (CTRL+N) Hoặc
• Vào menu "Project" chọn "New File".
Dev-c++ sẽ không hỏi tên file cho ñến khi chúng ta thực hiện:
o Compile
o Save the project
o Save the source file
o Exit Dev-C++
Bạn cũng có thể thêm file nguồn có sẵn bằng 1 trong 2
phương pháp sau:
• Vào menu "Project" chọn "Add to Project"
Hoặc
• Nhấn phím phải chuột vào project name ở
khung bên trái và chọn "Add to Project".
Các quy tắc sọan thảo gần giống với chương
trình sọan thảo văn bản chuấn (Word,…). Một vài
tính năng như:
• Undo
• Redo
• Copy
• Paste
• Cut
• Select All
• …
Tham khảo menu Edit ñể biết chi tiết và các phím tắt trong khi

Kỹ Thuật Lập Trình C++ Trang 5


VAA. ðTVTHK Tài Liệu Thực Hành

sọan thảo
Bước 3: Biên dịch (Compile)
Sau khi nhập file nguồn xong, ñể biên dịch chúng ta thực
hiện:
• Vào menu "Execute" chọn "Compile"
(CTRL+F9).
Thông thường, khi biên dịch lần ñầu sẽ có lỗi về
Syntax. Lỗi Syntax sẽ hiển thị ở tab biên dịch ở phía dưới
màn hình. ðể biết lỗi xảy ra ở vị trí nào của source
code, double-click vào lỗi ñó và contrỏ màn hình sẽ trở
về vị trí có lỗi khi biên dịch.
Hình bên minh họa lỗi syntax (thiếu dấu ;) khi biên dịch
Trong trường hợp biên dịch thanh công, hộp thọai thông báo có status là “Done”.
Bước 4: Thực thi chương trình.
Bây giờ, bạn có thể chạy chương trình
• Vào menu "Execute" chọn "Run".
Chú ý 1: Bc 4 & 5 có th thc hin ñng thi b ng menu Execute, ch
n Compile &
Run (F9)
Chú ý 2: Màn hình kết quả không xuất hiện:
Nếu khi chạy chương trình, bạn thấy màn hình console DOS màu ñen xuất hiện, chớp sáng 1
hoặc vài lần và trở lại màn hình sọan thảo thì có nghĩa là chương trình cũa bạn ñã chạy xong.
ðiều này có nghĩa là chương trình thực thi xong và tự ñóng cửa sổ console sau khi chương
trình thóat. ðể giải quyết trường hợp này chúng ta có thể sử dụng lệnh system và thông số
lệnh của HðH. Thêm ñọan code sau trước lệnh return trong hàm main hoặc trước bất kỳ hàm
exit() hoặc abort():
system(“pause”);

Bước 5: Debug.
Trong trường hợp chương trình chạy không như ý của bạn, sử dụng công cụ debugger ñể xác
ñịnh cụ thể. Chức năng debug cơ bản có tại tab debug ở cuối màn hình. Nhiều chức năng
khác nhau có tại menu debug. Một vài tính năng chính của debug như:
• Chạy tới con trỏ màn hình (Run to cursor )
• Thêm cửa sổ theo dõi
• Theo dõi giá trị của biến,…
4. Chương trình Hello World
ðể kiểm tra họat ñộng của Dev-Cpp, sau ñây là chương trình in ra màn hình chữ “Hello World
“ sử dụng ngôn ngữ C hoặc C++. Bạn hãy thực hiện theo các bước trên, nhập mã nguồn và
chạy thử ñể kiểm tra kết quả.

Kỹ Thuật Lập Trình C++ Trang 6


VAA. ðTVTHK Tài Liệu Thực Hành

a) Ngôn ngữ C:
/* Chuong trinh C don gian
* In ra man hinh dong chu Hello World
* Nhan phim Enter de thoat
* luu file voi ten la hello.c
*/
# include <stdio.h>
# include <stdlib.h>
int main()
{
printf ("Hello World \n");
system(“pause”);
return 0;
}

b) Ngôn ngữ C++:


/* Chuong trinh C++ don gian
* In ra man hinh dong chu Hello World
* Nhan phim Enter de thoat
* luu file voi ten la hello.cpp
*/
# include <iostream.h>
int main()
{
std::cout <<"Hello World \n";
system(“pause”);
return 0;
}

QUY ƯỚC KHI VIẾT MÃ NGUỒN C/C++


1. Các quy tắc ñặt tên trong chương trình
Quy tắc 1: Tên các ñịnh danh (hằng, biến, hàm, mảng, cấu trúc, lớp, …) trong chương trình
phải thể hiện ñược ý nghĩa của nó.
Quy tắc 2: Tên hằng ñược viết hoa toàn bộ, các từ cách nhau bằng ký tự ‘_’.
const int NUMBER_OF_ELEMENTS 100
Quy Tắc 3: Tên biến phải thể hiện ñược ý nghĩa của nó, viết bằng chữ thường, các từ cách
nhau bằng ký tự ‘_’.
int tu_so, mau_so;
Quy Tắc 4: Tên hàm phải là ñộng từ thể hiện hành ñộng cần thực hiện.
int check_bad_value (long value) \

Kỹ Thuật Lập Trình C++ Trang 7


VAA. ðTVTHK Tài Liệu Thực Hành

int kiem_tra_so_nguyen_to (int n)


2. Quy tắc viết câu lệnh
Quy Tắc 5: Mỗi câu lệnh ñược viết riêng trên một dòng.
Ví dụ sai Ví dụ ñúng
x = 3; y = 5; x = 3;
y = 5;
if (a > b) cout << "a lon hon b"; // ðúng.
else cout << "a nho hon b"; if (a > b)
cout << "a lon hon b";
else
cout << "a nho hon b";
for (int i = 0; i < n; i++) x = x + 5; for (int i = 0; i < n; i++)
x = x + 5;
Quy Tắc 6: Các dấu ‘{‘, ‘}’ ñược viết riêng trên một dòng.
Ví dụ sai Ví dụ ñúng
void Swap(int &a, int &b) { void Swap(int &a, int &b)
int c = a; {
a = b; int c = a;
b = c; a = b;
} b = c;
}
Quy Tắc 7: Các câu lệnh if, switch, while, for, do ñược viết riêng trên một ñoạn.
Ví dụ sai Ví dụ ñúng
if (a > b) if (a > b)
cout << "a lon hon b"; cout << "a lon hon b";
for (int i = 0; i < n; i++)
x = x + 5; for (int i = 0; i < n; i++)
k = k * x; x = x + 5;

k = k * x;

Quy Tắc 8: Các câu lệnh cùng thực hiện một công việc ñược viết riêng trên một ñoạn.
Ví dụ sai Ví dụ ñúng
int c = a; int c = a;
a = b; a = b;
b = c; b = c;
k = k * a;
x = b + c; k = k * a;
x = b + c;
3. Quy Tắc về khỏang trắng (space)
Quy Tắc 9: Các câu lệnh nằm giữa dấu ‘{‘, ‘}’ ñược viết cách vào một khoảng tab. Các câu
lệnh con của if, else, while, for, switch ñược viết cách vào một khoảng tab
Ví dụ sai Ví dụ ñúng

Kỹ Thuật Lập Trình C++ Trang 8


VAA. ðTVTHK Tài Liệu Thực Hành

if (a > b) if (a > b)
cout << "a lon hon b"; cout << "a lon hon b";
else else
cout << "a nho hon b"; cout << "a nho hon b";

for (int i = 0; i < n; i++) for (int i = 0; i < n; i++)


x = x + 5; x = x + 5;
Quy Tắc 10: Xung quanh các toán tử 2 ngôi (+, -, *, >=,…) viết cách một khoảng trắng.
Ví dụ sai Ví dụ ñúng
x=x+5*a-c; x = x+5 * a - c;
if (a>=b) if (a >= b)
4. Quy Tắc viết chú thích
Quy Tắc 11: Chú thích phải rõ ràng, dễ hiểu và diễn giải ñược ý nghĩa của ñoạn lệnh. ðầu
mỗi hàm, struct, class, hàm phải có chú thích diễn giải ý nghĩa của nó.
Quy Tắc 12: Sử dụng // cho chú thích 1 dòng; sử dụng /* */ cho các chú thích từ 2 dòng trở
lên. Dùng /* */ ñể tạm thời comment out các ñoạn chương trình ñể test và debug.
Mỗi file nguồn, cả .CPP và .H, ñều phải bắt ñầu bằng một khối chú thích ñủ ñể người ñọc có
thể hiểu mục ñích của file. Mẫu như sau:
/***************************************************************
* Tên/Name: Họ tên Lớp/Class: Lớp
* Project: mô tả/tên dự án (một dòng, giống nhau tại mọi file)
* Purpose: Mục ñích sử dụng của mã chương trình hoặc các khai báo trong
* file này (một vài dòng)
**************************************************************/
Mỗi lớp, hàm, phương thức phải có một khối chú thích mô tả ngắn gọn lớp, hàm, phương thức
ñó làm gì; ñối với hàm/phương thức: liệt kê tất cả các tham số, nêu rõ ý nghĩa của tham số; và
mô tả ñiều kiện trước và sau của hàm/phương thức ñó.
Có thể chú thích các ñoạn code bên trong hàm, tuy nhiên chỉ nên chú thích ñủ hiểu. Quá nhiều
chú thích và chú thích thừa làm code trông rối. Tất cả các chú thích phải ñược lùi ñầu dòng
cùng ñoạn code quanh nó.

5. Quy Tắc Thiết kế


Quy Tắc 13: Mỗi phương thức/hàm (kể cả hàm main()) không vượt quá 30 dòng tính từ dấu
mở hàm ({) tới ngoặc kết thúc hàm (}) trừ những trường hợp ngọai lệ phải ghi giải thích rõ
ràng.
Hạn chế việc dùng biến tòan cục.
Chú ý:Nếu vi phạm các quy tắc trên, phải ghi chú rõ ràng lý do trong tài liệu chương trình. Các
bài tập/Project/kiểm tra sẽ bị trừ ñiểm nếu không tuân theo các quy ñịnh này.

Kỹ Thuật Lập Trình C++ Trang 9


VAA. ðTVTHK Tài Liệu Thực Hành

LAB01: BIỂU THỨC, TÓAN TỬ C++


Nội Dung Chính
LAB 01: Biểu thức, tóan tử trong C++ ................................................................................... 11
0. Mục tiêu .......................................................................................................................... 11
1. Yêu cầu .......................................................................................................................... 11
2. Kiểm tra kiến thức lý thuyết (15 phút)............................................................................. 11
2.1 Cho biết kết quả màn hình khi chạy ñọan code sau:................................................. 11
2.2 Cho biết kết quả màn hình khi chạy ñọan code sau:................................................. 11
2.3 Cho biết kết quả màn hình khi chạy ñọan code sau:................................................. 12
2.4 Cho biết kết quả màn hình khi chạy ñọan code sau:................................................. 12
2.5 Cho biết kết quả màn hình khi chạy ñọan code sau:................................................. 12
3. Phần Bài Tập.................................................................................................................. 13
3.0 Test chương trình sau, sửa lỗi nếu có? cho biết kết quả màn hình khi chạy? .......... 13
3.1 Test chương trình sau: .............................................................................................. 13
3.2 Tính tổng, hiệu, tích, thương 2 số nhập vào từ bàn phím ......................................... 14
3.3 Biểu thức logic .......................................................................................................... 14
3.4 Tính kết quả biểu thức .............................................................................................. 15
3.5 Tính kết quả biểu thức .............................................................................................. 15
3.6 Tính kết quả biểu thức .............................................................................................. 15
3.7 Phân biệt cin và getline ............................................................................................. 16
3.8 Chạy chương trình sau, giải thích kết quả ................................................................ 16
3.9 Tính tiền sản phẩm ................................................................................................... 17
3.10 Tính ñiểm trung bình ............................................................................................... 17
3.11 Viết chương trình chuyển ñổi từ ñộ C(Celsius) sang ñộ F(Fahrenheit)................... 17
3.12 Viết chương trình chuyển ñổi từ ñộ F(Fahrenheit) sang ñộ C(Celsius)................... 17

Kỹ Thuật Lập Trình C++ Trang 10


VAA. ðTVTHK Tài Liệu Thực Hành

LAB 01: Biểu thức, tóan tử trong C++

0. Mục tiêu
• Sử dụng môi trường sọan thảo và chạy một chương trình C++ ñơn giản
• Làm quen với các kiểu dữ liệu và tóan tử cơ bản của C++
• Làm quen với biến và lệnh gán, ñối tượng xuất nhập: cout, cin
• Hòan tất Lab01 tại lớp trong vòng 120 phút
1. Yêu cầu
• ðọc tài liệu hướng dẫn sử dụng DEV-CPP (Lab0)
• Kiểm tra ñã có phần mềm DEV-CPP (C:\Dev-Cpp) trên máy tính của phòng lab chưa?
o Chưa có: liên hệ giảng viên hướng dẫn phòng lab ñể copy & cài ñặt
o ðã có: Chạy chương trình devcpp.exe trong thư mục Dev-Cpp
• Ôn lại kiến thức về hằng, biến, kiểu dữ liệu, biểu thức, tóan tử trong C++
• Hiểu rõ tóan tử: +, -, *, /, %, ++, --, +=, -=, *=, /=, &&, ||, !, !=, >, <, <=, >=,…
• ðộ ưu tiên của tóan tử
• Biến , hằng, lệnh gán, ñối tượng xuất nhập: cout, cin
• Làm trước các bài 2.1~2.5 và 3.1~3.12 trước khi vào phòng Lab. Mỗi SV phải có 1 bản
copy của bài Lab này
2. Kiểm tra kiến thức lý thuyết (15 phút)
2.1 Cho biết kết quả màn hình khi chạy ñọan code sau:
#include <iostream.h>
int main() {
float a=1.2 ;
int b=a ;
std::cout <<b ;
return 0 ;
}
a) Chương trình có lỗi khi biên dịch
b) Kết quả không xác ñịnh ñược
c) Màn hình hiển thị (ñiền vào ô trống bên)
2.2 Cho biết kết quả màn hình khi chạy ñọan code sau:
# include <iostream>
int main()
{
int a = 5, b = 10, c = 15, d = 0;
std::cout << (a+b || c == d);
std::cout << (c >= 6) || (a+c <= 20);
std::cout << !(b <= 12) && a % 2 == 0;
std::cout << !(a >5) || c < a+b;
return 0 ;

Kỹ Thuật Lập Trình C++ Trang 11


VAA. ðTVTHK Tài Liệu Thực Hành

}
a) Chương trình có lỗi khi biên dịch
b) Kết quả không xác ñịnh ñược
d) Màn hình hiển thị (ñiền vào ô trống bên)
2.3 Cho biết kết quả màn hình khi chạy ñọan code sau:
int main()
{
int x=5, y=-10, a=4, b=2;
int z = x++ - --y * b / a;
cout << z ;
return 0;
}
a) Chương trình có lỗi khi biên dịch
b) Kết quả không xác ñịnh ñược
e) Màn hình hiển thị (ñiền vào ô trống bên)
2.4 Cho biết kết quả màn hình khi chạy ñọan code sau:
int main()
{
int a = 2, b = 3;
int c = a++, d = ++b;
cout << (c-b || d-b);
cout << (a > c) || (d < b) ;
cout << !(c == 2) && a % 2 == 0 ;
return 0 ;
}
A. 001 B. 010 C. 011 D.100
E. 101 F. 110 G. 111 H. Khác
2.5 Cho biết kết quả màn hình khi chạy ñọan code sau:
int main()
{
int a=3, b=4, c=5, d;
d = a * b + c/2;
cout << d ;
d = a % b;
cout << d ;
d = a / b + c;
cout << d ;
return 0;
}
a) Chương trình có lỗi khi biên dịch
b) Kết quả không xác ñịnh ñược
f) Màn hình hiển thị (ñiền vào ô trống bên)

Kỹ Thuật Lập Trình C++ Trang 12


VAA. ðTVTHK Tài Liệu Thực Hành

3. Phần Bài Tập


LƯU Ý QUAN TRỌNG:
• Các ñọan mã nguồn trong các bài sau có thể có lỗi khi biên dịch. Hãy sửa lại và
thêm các file header phù hợp nếu cần.
• Mỗi bài tóan sau, ghi chú theo mẫu sau:
/****************************************************************
* Lab 01, Bai 01
* Tac gia: Nguyen X , MSSV: 123456789
* Lop: XX, Khoa Y.
* Lab01b01: Hien thi thong diep "hello world!"
* Created date: dd/mm/yyyy ; Modified date:
*****************************************************************/
3.0 Test chương trình sau, sửa lỗi nếu có? cho biết kết quả màn hình khi chạy?
#include <iostream.h>
# define MAX 4.0
int main()
{
int a = 10, b= 5
double c = 4.0, f = 0.0;
f = MAX + c * (b / a);
cout << f;
system(“pause”);
return 0 ;
}

3.1 Test chương trình sau:


#include <iostream.h>
int main()
{
const float PI=3.14159;
float radius = 5;
float area;
area = radius * radius * PI; // Circle area calculation
cout << “The area is “ << area << “ with a radius of 5.\n”;
radius = 20; // Compute area with new radius.
area = radius * radius * PI;
cout << “The area is “ << area << “ with a radius of 20.\n”;
system(“pause”);
return 0;
}
a) Chạy chương trình trên
b) Sử dụng #define ñể ñịnh nghĩa hằng số PI
c) Sửa lại chương trình trên, cho phép nhập bán kính từ bàn phím.

Kỹ Thuật Lập Trình C++ Trang 13


VAA. ðTVTHK Tài Liệu Thực Hành

3.2 Tính tổng, hiệu, tích, thương 2 số nhập vào từ bàn phím
#include <iostream.h>
int main()
{
short int x , y, tong, hieu, tich;
float thuong;
cout << "Nhap so thu nhat: ";
cin >> x;
cout << "Nhap so thu hai:";
cin >> y;
tong = x + y ;
hieu = x – y ;
tich = x * y ;
thuong = x / y ;
cout << "Tong hai so la " << tong << endl;
cout << "Tong hai so la " << hieu << endl;
cout << "Tong hai so la " << tich << endl;
cout << "Tong hai so la " << thuong << endl;
}
a. Chạy thử chương trình trên, nhập giá trị x, y như bảng sau, cho biết kết quả và nhận
xét? Sửa lại code ñể chương trình chạy ñúng?
b. Giới hạn của x, y ñể kết quả của các phép tính vẫn còn ñúng?

x y x+y x-y x*y x/y

100 100

2000 2000

c. Thay thế 4 dòng lệnh cout cuối bằng các dòng lệnh sau? Nhận xét?
cout << x << “ + ” << y <<” = “ << tong << endl;
…..
3.3 Biểu thức logic
#include <iostream>
using namespace std;
int main()
{
int i , j;
cout << "Enter an integer: ";
cin >> i;
cout << "Enter another integer: ";
cin >> j;
cout << "i > j is " << (i > j) << endl;
cout << "i < j is " << (i < j) << endl;
cout << "i >= j is " << (i >= j) << endl;

Kỹ Thuật Lập Trình C++ Trang 14


VAA. ðTVTHK Tài Liệu Thực Hành

cout << "i <= j is " << (i <= j) << endl;


cout << "i == j is " << (i == j) << endl;
cout << "i != j is " << (i != j) << endl;
cout << "i && j is " << (i && j) << endl;
cout << "i || j is " << (i || j) << endl;
cout << " (i < 10) && (j < 10) is “ << ((i < 10) && (j < 10)) << endl;
system(“pause”);
return 0;
}
a) Chạy thử chương trình trên, nhập i=6, j=4
b) Thử lại với bỏ <<endl ở các dòng cout trên
3.4 Tính kết quả biểu thức
Xác ñịnh giá trị của những biểu thức sau, viết chương trình kiểm chứng lại kết quả:
a) x= 7+3*6/ 2-1
b) x= 2%2+2*2-2/2
c) x= (3*2*(3+(4*(3/3))));
d) x= (7%2)*2+4/2*3-8
e) x= 7%2*2+4/2*3-8
f) x=(7%2*(2+4)/2*3)-8
3.5 Tính kết quả biểu thức
Xác ñịnh giá trị của những biểu thức sau, viết chương trình kiểm chứng lại kết quả. Giả sử a =
6, b = 5
a) (a>5) && (b<=6)
b) (a!=b) || (b==4)
c) ! (b>6)
d) ! (a==4) && (b<3)
e) (a>2) && ((b<3) || (a>4)))
f) y=a+b
g) y = ++a + b++
h) y = a++ + b
i) y = --a + b
j) y = a-- + b
k) y= ++a*3
3.6 Tính kết quả biểu thức
Xác ñịnh giá trị của những biểu thức sau, viết chương trình kiểm chứng lại kết quả.
a) i=3; j=4;
b) i=++j;
c) i=j++;
d) i++;
e) i=++i+5;
f) i=i+ ++5;
g) ((i>5) && (j<=6));

Kỹ Thuật Lập Trình C++ Trang 15


VAA. ðTVTHK Tài Liệu Thực Hành

h) ((i!=i) || (j==6));
i) ( !(i>10));
j) (! ((i/6==3) && (j<8)));
k) ((i>11) && ((j<15) || (i>4))));
l) k= i+j%8;
m) k=i%3+4-2*j/5;
n) k=(i+j)/3*2%8*100;
o) k= ++i+j++;
p) k=i*8*3*(j%7);
q) k=i+j/3-2*++j/19;
r) k=++(i++ +j++);
3.7 Phân biệt cin và getline
#include <iostream>
using namespace std;
int main()
{
const int SIZE=100;
char buffer[ SIZE ];
cout << "Enter your fullname:\n“;
cin >> buffer ;
cout << "\nHello " << buffer << endl;
system(“pause”);
return 0;
}
a) Chạy thử chương trình trên, nhập họ và tên cách nhau bởi khỏang trắng sau ñó nhấn
enter, cho biết kết quả? Nhận xét
b) Thay thế dòng cin>> buffer ; bằng dòng lệnh cin.getline( buffer, SIZE ); thử lại và nhận xét?
3.8 Chạy chương trình sau, giải thích kết quả
a. Chương trình 1
int main()
{
short i = -3;
unsigned short u;
cout<< sizeof(i)<< &i;
cout<<sizeof(u)<<&u;
cout << (u = i) << "\n";
}
b. Chương trình 2
int main() {
char i = 125*4/10;
cout << i << "\n";
}

Kỹ Thuật Lập Trình C++ Trang 16


VAA. ðTVTHK Tài Liệu Thực Hành

3.9 Tính tiền sản phẩm


Nhập tên sản phẩm, số lượng và ñơn giá. Tính tiền và thuế giá trị gia tăng phải trả, biết:
• tiền = số lượng * ñơn giá
• thuế giá trị gia tăng = 10% tiền
3.10 Tính ñiểm trung bình
Nhập ñiểm thi và hệ số 3 môn Toán, Lý, Hóa của một sinh viên. Tính ñiểm trung bình của sinh
viên ñó. Kết quả xuất ra màn hình theo ñịnh dạng sau:

Toan: 9.3
Ly: 7.5

3.11 Viết chương trình chuyển ñổi từ ñộ C(Celsius) sang ñộ F(Fahrenheit)


3.12 Viết chương trình chuyển ñổi từ ñộ F(Fahrenheit) sang ñộ C(Celsius)
• Biết F = (9/5)*C + 32 ; C = (5/9)*(F-32)
• Chú ý sử dụng chuyển ñổi kiểu trong phép chia 5/9, 9/5

Kỹ Thuật Lập Trình C++ Trang 17


VAA. ðTVTHK Tài Liệu Thực Hành

LAB02: Selection Structure


Nội Dung Chính
LAB 02: Selection Structure................................................................................................... 19
0. Mục tiêu .......................................................................................................................... 19
1. Yêu cầu .......................................................................................................................... 19
2. Kiểm tra kiến thức lý thuyết (15 phút)............................................................................. 19
2.1 Kết quả khi chạy ñọan code sau: .............................................................................. 19
2.2 Kết quả khi chạy ñọan code sau: .............................................................................. 19
2.3 Kết quả khi chạy ñọan code sau: .............................................................................. 19
2.4 Kết quả khi chạy ñọan code sau: .............................................................................. 19
2.5 Kết quả khi chạy ñọan code sau: .............................................................................. 19
3. Nội dung ......................................................................................................................... 20
3.1 Nhập vào 1 số nguyên. Và kiểm tra số ñó có chẵn không? ...................................... 20
3.2 Nhập vào 2 số nguyên a, b. Kiểm tra xem a có chia hết cho b không....................... 20
3.3 Nhập vào 2 số nguyên a, b. Tìm số lớn nhất, nhỏ nhất ............................................ 20
3.4 Nhập vào 3 số nguyên a, b, c. Tìm số lớn nhất, nhỏ nhất. ........................................ 20
3.5 ðiểm trung bình và xếp hạng .................................................................................... 20
3.6 Beep.......................................................................................................................... 21
3.7 In số ngược ............................................................................................................... 21
3.8 Tính cước taxi ........................................................................................................... 21
3.9 Chương trình máy tính ñơn giản ............................................................................... 22
3.10 Giải và biện luận phương trình bậc nhất: ax+b=0 ................................................... 22
3.11 Giải và biện luận phương trình bậc 2: ax2 + bx + c = 0 .......................................... 22
3.12 Tính tiền thuê phòng Dựa vào số ngày thuê và lọai phòng ..................................... 22
3.13 Nhập vào ngày, tháng của năm hiện tại. ................................................................. 22
3.14 ðổi chữ hoa – thường ............................................................................................. 23
3.15 Kiểm tra chữ hoa, chữ thường ................................................................................ 23

Kỹ Thuật Lập Trình C++ Trang 18


VAA. ðTVTHK Tài Liệu Thực Hành

LAB 02: Selection Structure

0. Mục tiêu
• Sử dụng thành thạo cấu trúc rẽ nhánh
o If, if…else, switch
• Hòan tất Lab02 tại lớp trong vòng 90 phút
1. Yêu cầu
• Hiểu rõ cấu trúc lệnh if, if…else, switch
• Kiến thức tóan học cơ bản: số nguyên tố, uscln, giải phương trình
• ðối tượng cout, cin và bảng mã ASCII
• Làm trước các bài trong mục 2 và 3 trước khi vào phòng Lab. Mỗi SV phải có 1 bản
copy của bài Lab này
2. Kiểm tra kiến thức lý thuyết (15 phút)
2.1 Kết quả khi chạy ñọan code sau: cout << f ;
return 0;
int main()
{ 2.4 Kết quả khi chạy ñọan code sau:
int x=1, t = x--;
int main()
if (x <= 0) {
t += 5 ; int x=0;
t += 10 ; switch(x) {
std::cout << t; case 1: cout << "One" ;
return 0 ; case 0: cout << "Zero" ;
}
case 2: cout << "Hello" ;
2.2 Kết quả khi chạy ñọan code sau: }
int main() { return 0;
}
int i=4, j=6;
float x;
2.5 Kết quả khi chạy ñọan code sau:
# include <iostream>
x = i/j;
int main() {
std::cout << x; int x = 5, y = x++;
char op = '*';
return 0 ;
switch (op) {
} default : x += 1;
case '+' : x += y;
2.3 Kết quả khi chạy ñọan code sau: case '-' : x -= y;
int a = 5, b = 6, c = 7, f; }
std::cout <<x<<y;
f = a*b != c*c; return 0 ;
if (f) a++;
}
else b--;
cout << f ;
f = (a>6) && (b<5);
cout << f ;
f = a>100 || b<50;

Kỹ Thuật Lập Trình C++ Trang 19


VAA. ðTVTHK Tài Liệu Thực Hành

3. Bài Tập
3.1 Viết chương trình nhập vào 1 số nguyên. Và kiểm tra số ñó có chẵn không?
Giải thuật: Số chẵn là số chia hết cho 2.
Mô tả: Nếu số A chia cho 2 có phần dư = 0 thì A là số chẵn
Thực hiện trong c++: (a % 2)
3.2 Viết chương trình nhập vào 2 số nguyên a, b. Kiểm tra xem a có chia hết cho b
không
Giải thuật: Nhập 2 số nguyên a, b
Kiểm tra: if (a % b) ==0  printf ( Số a chia hết cho số b)
3.3 Viết chương trình Nhập vào 2 số nguyên a, b. Tìm số lớn nhất, nhỏ nhất
Gợi ý: Khai báo biến max và min ñể chứa giá trị lớn nhất và nhỏ nhất tương ứng.
Tìm số lớn nhất: Tìm số nhỏ nhất:
max = b min = a
Nếu (a > b) then max = b Nếu ( a > b) then min = b
3.4 Viết chương trình Nhập vào 3 số nguyên a, b, c. Tìm số lớn nhất, nhỏ nhất.
Giải thuật:
Số lớn nhất Số nhỏ nhất
Giả sử Max = a Giả sử Min = a
IF ( B > Max) Then Max = B IF ( Min > B) Then Min = B
IF (C > Max) Then Max = C IF (Min > C Then Min = C
3.5 ðiểm trung bình và xếp hạng
Nhập vào ñiểm trung bình của sinh viên (Thang ñiểm 100) và Hiển thị xếp loại theo tiêu chí
sau:
90 <= A
80 <= B < 90
70 <= C < 80
60 <= D < 70
E < 60
Gợi ý: Biến average chứa ñiểm trung bình của SV. Mã nguồn như sau:
if (average >= 90)
grade = 'A';
else if (average >= 80)
grade = 'B';
else if (average >= 70)
grade = 'C';
else if (average >= 60)
grade = 'D';
else
grade = 'E';

Kỹ Thuật Lập Trình C++ Trang 20


VAA. ðTVTHK Tài Liệu Thực Hành

3.6 Beep
// BEEP : ‘\x07’
#include <iostream.h>
#define BEEP cout << “\a \n”
int main()
{
int num;
cout << “Please enter a number “;
cin >> num;
if (num == 1)
{ BEEP; }
else if (num == 2)
{ BEEP; BEEP; }
else if (num == 3)
{ BEEP; BEEP; BEEP; }
else if (num == 4)
{ BEEP; BEEP; BEEP; BEEP; }
else if (num == 5)
{ BEEP; BEEP; BEEP; BEEP; BEEP; }
else
cout <<”Invalid number!”;
return 0;
}
a) Chạy chương trình trên
b) Viết lại chương trình trên sử dụng lệnh switch
3.7 In số ngược
Viết chương trình nhập số nguyên có 3 chữ số và hiển thị các chữ số theo thứ tự ngược lại.
VD: Nếu số nhập là a = 356 thì hiển thị là 653.

Gợi ý:
Giải thuật Mã nguồn C++
Giả sử số nhập là n có ba chữ số. tram = n;
Số hàng ñơn vị = n % 10 donvi = tram % 10;
Số hàng chục = ( n / 10 ) % 10 tram = tram / 10;
Số hàng ñơn vị = n / 100 chuc = tram % 10;
tram = tram /10;
3.8 Tính cước taxi
Viết chương trình tính giá cước taxi theo công thức sau:
a. 1 km ñầu giá 15000ñ
b. Từ km thứ 2 ñến km thứ 5 giá 13000ñ
c. Từ km thứ 6 ñến km thứ 100 giá 11000ñ
d. Nếu trên 100km giá 9000ñ

Kỹ Thuật Lập Trình C++ Trang 21


VAA. ðTVTHK Tài Liệu Thực Hành

Chương trình cho phép người sử dụng nhập vào số km (bao gồm số lẻ VD: 2.5km) và in ra số
tiền phải trả.
Gợi ý:
• Khai báo hằng: GIA1 = 15000; GIA2 = 13000; GIA3=…
• Chú ý: km = 1.1 sẽ tính tiền là 2km. Sử dụng hàm ceil (double) thực hiện round-up
value. VD: ceil(4.3) = 5
3.9 Chương trình máy tính ñơn giản
Nhập vào 2 số a, b và một phép toán p, thực hiện tính kết quả trả về dựa vào dữ liệu nhập
vào. Ví dụ a = 5, p = '+', b = 6, Kết quả hiển thị là 5 + 6 = 11.
Gợi ý:
• Phép tóan p: +, -, *, /
• Trường hợp phép chia: nhớ kiểm tra (≠0)
3.10 Giải và biện luận phương trình bậc nhất: ax+b=0
3.11 Giải và biện luận phương trình bậc 2: ax2 + bx + c = 0
• Gợi ý: sử dụng thư viện tóan math: # include <math.h> tính delta sử dụng hàm: double
sqrt(double x); Căn bậc 2 của x, trả về giá trị double

3.12 Tính tiền thuê phòng Dựa vào số ngày thuê và lọai phòng
Lọai A: 250 /ngày
Lọai B: 200 /ngày
Lọai C: 150 /ngày
Nếu số ngày thuê nhiều hơn 10 ngày thì giảm giá % trên tổng số tiền như sau: A: 10%,
B,C: 5%
Chương trình cho phép nhập số ngày thuê, lọai phòng và in ra giá tiền phải trả.
3.13 Nhập vào ngày, tháng của năm hiện tại.
Viết chương trình thực hiện:
• Kiểm tra tính hợp lệ ngày, tháng nhập.
• Cho biết tháng nhập có bao nhiêu ngày.
• Cho biết ngày hôm sau của ngày ñã nhập là ngày nào.

Kỹ Thuật Lập Trình C++ Trang 22


VAA. ðTVTHK Tài Liệu Thực Hành

• Cho biết ngày hôm trước của ngày ñã nhập là ngày nào.
VD: Nếu ngày nhập là 1/12/2009 thì ngày trước ñó là 30/11/2009.
Gợi ý:
Tháng 1, 3, 5, 7, 8, 10, 12: 31 ngày
Tháng: 3, 4, 6, 9, 11: 30 ngày
Tháng 2: Nhuận/Không nhuận: 29/28 ngày
Năm nhuận là (những năm chia hết cho 400) hoặc (chia hết cho 4 và không chia hết cho 100). Ví dụ
2000 là năm nhuận nhưng 2100 không phải là năm nhuận. Code C++ như sau: if ( year % 400 ==0 ||
( year %100 != 0 && year % 4 == 0))
3.14 ðổi chữ hoa – thường
Nhập một chữ cái, nếu là chữ thường thì ñổi thành chữ hoa, ngược lại, nếu là chữ hoa thì ñổi
thành chữ thường. Ví dụ : nhập A in ra a, nhập b thì in ra B. (Không sử dụng thư viện string)
3.15 Kiểm tra chữ hoa, chữ thường
Nhập một ký tự bất kỳ, cho biết ký tự ñó thuộc loại nào: là chữ hoa, là chữ thường, là chữ số
hay các ký tự khác. (Không sử dụng thư viện string)

Kỹ Thuật Lập Trình C++ Trang 23


VAA. ðTVTHK Tài Liệu Thực Hành

LAB03: Repetition Structure


Nội Dung Chính
Lab 03: Vòng Lặp ...................................................................................................................... 25
0. Mục tiêu .............................................................................................................................. 25
1. Yêu cầu trước khi vào buổi thực hành này ........................................................................ 25
2. Kiểm tra kiến thức lý thuyết (3 phút/câu) ............................................................................ 25
2.1 Kết quả khi chạy ñọan code sau: .................................................................................. 25
2.2 Kết quả khi chạy ñọan code sau: .................................................................................. 25
2.3 Kết quả khi chạy ñọan code sau: .................................................................................. 25
2.4 Kết quả khi chạy ñọan code sau: .................................................................................. 25
2.5 Kết quả khi chạy ñọan code sau: .................................................................................. 25
2.6 Kết quả khi chạy ñọan code sau: .................................................................................. 26
3. Chương trình ...................................................................................................................... 27
3.1 Hiển thị số nguyên từ 1 ñến 1000 chia hết cho 2 và 3 .................................................. 27
3.2 Xác ñịnh kết quả của ñọan code sau, giải thích? .......................................................... 27
3.3 Xác ñịnh kết quả của ñọan code sau? Viết chương trình kiểm tra lại kết quả? ............ 27
3.4 Tính giá trị pi ................................................................................................................. 28
3.5 Tính giá trị e .................................................................................................................. 28
3.6 Tính N! , N nhập từ bàn phím. ...................................................................................... 29
3.7 Số Nguyên tố ................................................................................................................ 29
3.8 Số chính phương .......................................................................................................... 29
3.9 Chuyển ñổi nhiệt ñộ C-F ............................................................................................... 29
3.10 Tính lãi xuất tiết kiệm. ................................................................................................. 30
3.11 Tìm số lớn nhất, nhỏ nhất ........................................................................................... 30
3.12 Tìm số dương nhỏ nhất .............................................................................................. 30
3.13: In bảng cửu chương .................................................................................................. 30
3.14: Viết chương trình in ra tam giác sau .......................................................................... 30
3.15: Viết chương trình in ra tam giác cân từ chiều cao h .................................................. 31

Kỹ Thuật Lập Trình C++ Trang 24


VAA. ðTVTHK Tài Liệu Thực Hành

Lab 03: Vòng Lặp


0. Mục tiêu
• Sử dụng thành thạo cấu trúc lặp trong C++, bao gồm:
o for
o while
o do…while
• Lệnh break, continue, …
• Hòan tất Lab03 tại lớp trong vòng 120 phút
1. Yêu cầu trước khi vào buổi thực hành này
• Hòan thành và hiểu rõ Lab01, Lab02
• Nắm vững cú pháp lặp: for, while, do-while
• Kiến thức tóan học: số nguyên tố, số chính phương, số hòan hảo, USCLN, …
• Làm trước các bài trong mục 2 và 3 trước khi vào phòng Lab. Mỗi SV phải có 1 bản
copy của bài Lab này
2. Kiểm tra kiến thức lý thuyết (3 phút/câu)
2.1 Kết quả khi chạy ñọan code sau: int main ()
#include <iostream> {
int main () int x = 3, counter = 0;
{ while ((x-1))
int i=1, sum=0, N=6; {
++counter;
while (i <= N)
x--;
{
}
sum += i;
std::cout << counter;
i++;
return 0;
}
}
std::cout << sum <<i;
return 0; 2.4 Kết quả khi chạy ñọan code sau:
} int main()
2.2 Kết quả khi chạy ñọan code sau: {
int i = 0, j, sum = 0;
#include <iostream>
do
int main ()
{
{
if (i%2 ==0)
int i=1, j=10;
sum += i;
for (i=0; i<=j; i+=2)
} while (++i <=6) ;
std::cout << i ;
std::cout << j ; cout << sum ;
return 0; return 0;
} }
2.5 Kết quả khi chạy ñọan code sau:
2.3 Kết quả khi chạy ñọan code sau:
int main()
#include <iostream>
{

Kỹ Thuật Lập Trình C++ Trang 25


VAA. ðTVTHK Tài Liệu Thực Hành

int k, N=8;
for (k = 2; k <= N; k += 2)
cout << k;
k++;
cout << k;
return 0;
}
2.6 Kết quả khi chạy ñọan code sau:
# define MAX 2
int main() {
int i=0, j=0 ;
for (i=0; i<=MAX; j++) {
cout << i ;
i = j;
}
cout << j ;
return 0;
}

Kỹ Thuật Lập Trình C++ Trang 26


VAA. ðTVTHK Tài Liệu Thực Hành

3. Chương trình
3.1 Hiển thị số nguyên từ 1 ñến 1000 chia hết cho 2 và 3
int main()
{
int i = 0;
for (i = 0; i <=1000; i++)
if ( i % 2 == 0 ) && ( i % 3 == 0 )
cout << i<< endl;
}
a) Chạy ñọan chương trình trên, nhận xét ?
b) Sửa chương trình trên ñể hiển thị số nguyên trong khỏang [A, B] chia hết cho 2 số x, y
với A, B, x, y ñược nhập vào từ bàn phím
3.2 Xác ñịnh kết quả của ñọan code sau, giải thích?
int a = 1;
while (a < 4)
{
cout <<“This is the outer loop\n” ;
a++;
while (a <= 25)
{
break;
cout << “This prints 25 times\n”;
}
}
a. Nếu bỏ lệnh break; ñi thì kết quả màn hình như thế nào?
b. Thay thế lệnh break bằng lệnh continous, cho biết kết quả?
3.3 Xác ñịnh kết quả của ñọan code sau? Viết chương trình kiểm tra lại kết quả?
ðọan code Kết quả màn hình/giải thích
a for (ctr=10; ctr>=1; ctr-=3)
cout <<ctr <<endl ;
b n =10;
i=1;
for (i = 0 ; i < n ; i++)
cout << ++i << endl ;
c for (i=1; i<=10; i++);
for (j=1; j<=5; j++)
{
if ( i == j )
continue;
else ( i>j)
break;

Kỹ Thuật Lập Trình C++ Trang 27


VAA. ðTVTHK Tài Liệu Thực Hành

else
cout << i << j << endl ;
}
hd i=1;
start=1;
end=5;
step=1;
for (; start>=end;)
{
cout << i << “\n”;
start+=step;
end--;
}
3.4 Tính giá trị pi
Viết chương trình tính giá trị của số pi, sử dụng dãy xấp xỉ sau:
pi/4 = (1-1/3+1/5-1/7+ ... + (-1)n/(2*n+1).
Chương trình sẽ ngừng khi sự chênh lệch giữa hai lần xấp xỉ là nhỏ hơn 1.0E-6
int main()
{
float pi=0;
int i=0;
float saiso = 4.0/(2.0*i+1.0);
while(saiso >= pow(10.0,-6.0))
{
pi = pi + 4.0 * pow(-1.0, i ) / (2.0 * i+1);
i = i+1;
saiso = 4.0/(2.0*i+1);
}
cout << "pi = " << pi ;
}
a) Biên dịch và chạy chương trình trên, sửa lỗi nếu có.
b) Sửa lại chương trình cho phép nhập giá trị sai số từ bàn phím
3.5 Tính giá trị e
Viết chương trình tính giá trị của số Euler e, sử dụng dãy xấp xỉ sau:
e = 1 + 1/1! + ½! + 1/3! + ¼! + … +1/n!
Chương trình sẽ ngừng khi sự chênh lệch giữa hai lần xấp xỉ là nhỏ hơn 1.0E-6
int main()
{
float e = 0;
float gt=1;
int i=1;
float saiso = 1;

Kỹ Thuật Lập Trình C++ Trang 28


VAA. ðTVTHK Tài Liệu Thực Hành

while(saiso >= pow(10.0,-6.0))


{
for(int j=1; j<=i; j++) gt = gt*j;
e = e + 1.0/gt;
saiso = 1.0/gt;
i = i+1;
gt = 1;
}
cout <<"e = " << e <<endl ;
}
3.6 Tính N! , N nhập từ bàn phím.
Gợi ý: N! = 1*2*...*N ; Ví dụ: 5! = 5*4*3*2*1 = 120
a. Viết chương trình tính N!
b. Chương trình có thể thực hiện với giá trị lớn nhất của N là bao nhiêu?
3.7 Số Nguyên tố
a) Viết chương trình nhập vào số A. Kiểm tra xem A có phải là số nguyên tố không?
b) In ra các số nguyên tố từ 1 ñến 1000
Gợi ý: A là số nguyên tố nếu nó chỉ chia hết cho 1 và chính nó. VD: 7 là số nguyên tố
3.8 Số chính phương
Nhập vào số N. Kiểm tra N có phải là số chính phương không?
Gợi ý: Nếu tồn tại số a ñể N = a^2 thì N là số chính phương. VD: 9 = 3^2 nên 9 là số chính
phương
3.9 Chuyển ñổi nhiệt ñộ C-F
Viết chương trình chuyển ñổi nhiệt ñộ từ ñộ C (Celsius ) sang ñộ F (Fahrenheit). ðộ C biến
thiên từ 0 ñến 100, với ñộ tăng là 5, kết quả in ra bảng như sau:
Celsius degrees Fahrenheit degrees
-------------- -----------------
5 xxxx
10 xxxx
15 xxxx
20 xxxx
… …
Gợi ý: Công thức: Fahrenheit = (9.0 / 5.0) * Celsius + 32.0;
a. Viết chương trình như trên
b. Sửa lại chương trình trên cho phép nhập khỏang cần chuyển ñổi, step tăng sau ñó in ra
kết quả

Kỹ Thuật Lập Trình C++ Trang 29


VAA. ðTVTHK Tài Liệu Thực Hành

3.10 Tính lãi xuất tiết kiệm.


Khi gửi vào ngân hàng một số tiền P, với lãi suất thường niên ñược biểu diễn qua số thực R
(ví dụ, lãi suất 7.5% sẽ ñược biểu diễn là 0.075), số tiền thu ñược (Amount on deposit) sau khi
gửi N năm sẽ là P*(1 + R)N. Viết chương trình ñọc các giá trị P, R, N từ bàn phím và in số tiền
thu ñược tương ứng ra màn hình theo từng năm như bảng sau:
Year Amount on deposit
1 xxxx.xx
2 xxxx.xx
3 xxxx.xx
4 xxxx.xx
5 xxxx.xx
6 xxxx.xx
7 xxxx.xx
8 xxxx.xx
9 xxxx.xx
10 xxxx.xx
Gợi ý: Hàm double pow(double x, double y); = xy trong thư viện math.h
3.11 Tìm số lớn nhất, nhỏ nhất
Viết chương trình nhập N số nguyên sau ñó in ra số lớn nhất và số nhỏ nhất. N ñược nhập từ
bàn phím.
3.12 Tìm số dương nhỏ nhất
Viết chương trình nhập N số nguyên và in ra số dương nhỏ nhất. Nếu dãy số nhập vào toàn
số âm thì phải in ra thông báo "Khong co so duong"
• ví dụ dãy 5, -3, 2, 7, 9, 4 thì số dương nhỏ nhất là 2 mặc dù số nhỏ nhất là -3
• ví dụ dãy -4, -3, -7, -9 không có số dương nhỏ nhất vì dãy toàn số âm
3.13: In bảng cửu chương
Viết chương trình in ra bảng cửu chương từ 1 ñến 10
3.14: Viết chương trình in ra tam giác sau
*
**
***
****
*****
******
*******
********
*********
**********

Kỹ Thuật Lập Trình C++ Trang 30


VAA. ðTVTHK Tài Liệu Thực Hành

3.15: Viết chương trình in ra tam giác cân từ chiều cao h


Ví dụ h = 4
*
* *
* *
* * * * * * *

Kỹ Thuật Lập Trình C++ Trang 31


VAA. ðTVTHK Tài Liệu Thực Hành

LAB04: Hàm

Nội Dung Chính


Lab 04: HÀM................................................................................................................................ 33
0. Mục tiêu ................................................................................................................................ 33
1. Yêu cầu trước khi vào buổi thực hành này .......................................................................... 33
2. Kiểm tra kiến thức lý thuyết (3 phút/câu) .............................................................................. 33
3. Chương trình ........................................................................................................................ 35
3.1 Khai báo và sử dụng hàm ............................................................................................... 35
3.2 Phạm vi biến và truyền tham số ...................................................................................... 35
3.3 Tham số hàm .................................................................................................................. 36
3.4 Biến tòan cục và cục bộ .................................................................................................. 36
3.5 Storage class .................................................................................................................. 36
3.6 Viết hàm tính số nút của 1 số nguyên dương ................................................................. 37
3.7 Ước số chung lớn nhất giữa hai số nguyên .................................................................... 37
3.8 Hàm tính N! ..................................................................................................................... 38
3.9 Kiểm tra dãy số duy nhất ................................................................................................ 38
3.10 Viết các hàm sau, Mỗi ý (a), (b),… là 1 hàm ................................................................. 38
3.11 Hàm in_nghiem_pt_bac1 ñược viết như sau: ............................................................... 38
3.12 Viết hàm giải phương trình bậc 2: ax2+bx+c=0 bao gồm các hàm như sau: ................ 39
3.13 Viết hàm trả vể số lớn nhất của 4 số a, b , c, d. ............................................................ 40
3.14 Viết hàm trả vể số nhỏ nhất của 4 số a, b , c, d ............................................................ 40
3.15 Viết hàm trả về giá trị True nếu ñối số là số nguyên tố. Viết chương trình sử dụng
hàm trên ñể in ra các số nguyên tố từ 1 ñến N, N nhập vào từ bàn phím............................. 40
3.16 Viết lại các bài 3.12, 3.13, 3.14, 3.15 trong lab03 sử dụng hàm ................................... 40

Kỹ Thuật Lập Trình C++ Trang 32


VAA. ðTVTHK Tài Liệu Thực Hành

Lab 04: HÀM

0. Mục tiêu
• Sử dụng thành thạo hàm trong C++, bao gồm:
• Khai báo và ñịnh nghĩa hàm
• Phạm vi biến: Tòan cục, cục bộ, …
• Truyền tham số: trị, biến
• Gọi hàm
1. Yêu cầu trước khi vào buổi thực hành này
• Hòan tất Lab01, La02, Lab03.
• ðịnh nghĩa hàm, gọi hàm
• Biến tòan cục, biến cục bộ
• Truyền tham chiếu, tham trị
• Làm trước các bài trong mục 2 và 3 trước khi vào phòng Lab. Mỗi SV phải có 1 bản
copy của bài Lab này.
2. Kiểm tra kiến thức lý thuyết (3 phút/câu)
1. Cho biết kết quả màn hình khi chạy ñọan code sau: int main()
int foo(int j) {
{ int a = 3, b = 2;
int x = 5 ; swap(a,b);
if( j == 0 ) cout << a << b ;
{ return 0;
int x ; }
x=3; 3. Cho biết kết quả màn hình khi chạy ñọan code sau:
} # define MAX 5
return (x) ; int main()
} {
int main() int i = 0, sum = 0;
{ while (i++<MAX)
int x = 0, y; if (i%2 ) sum += i;
y = foo(x); cout << sum ;
cout << y ; return 0;
return 0; }
} 4. Cho biết kết quả màn hình khi chạy ñọan code sau:
2. Cho biết kết quả màn hình khi chạy ñọan code sau: void foo(int a, int &b)
void swap(int a, int b) {
{ a += 2; b += 4;
int t = a; }
a = b; int main ()
b = t; {
} int x=4, y=2;

Kỹ Thuật Lập Trình C++ Trang 33


VAA. ðTVTHK Tài Liệu Thực Hành

foo(x, y); {
cout << x << y ; int s=2, t=3;
return 0; Twist(s,t);
} Twist(t,s);
5. Cho biết kết quả màn hình khi chạy ñọan code sau: std:: cout << s << t;
int check_prime(int n) return 0;
{ }
int j ;
if (n<2) return 0;
for ( j=2 ; j<= n/2 ; j++)
if (!(n%j)) break;
if (j>n/2)
return (1);
else
return (0);
}
int main()
{
int i, count = 0;
for (i=1 ; i<10; i++)
if (check_prime(i))
count++;
cout << count ;
return 0;
}
6. Cho biết kết quả màn hình khi chạy ñọan code
sau:
# include <iostream>
void increment( int i )
{ // i=i+1
i++;
}
int main()
{
int i;
for( i = 0; i < 10; increment( i ) )
std::cout << i;
return 0 ;
}
7. Cho biết kết quả màn hình khi chạy ñọan code
sau:
#include <iostream>
void Twist(int a, int & b)
{
a = a*2; b = b + 2;
}
int main ()

Kỹ Thuật Lập Trình C++ Trang 34


VAA. ðTVTHK Tài Liệu Thực Hành

3. Chương trình
3.1 Khai báo và sử dụng hàm
Cho hàm sau
int square(int a)
{
a = a*a;
return a;
}
a) Viết chương trình nhập giá trị N và in ra N2 sử dụng hàm trên
b) Viết thêm hàm square2 truyền tham số by reference.
c) Viết chương nhập giá trị N, hiển thị giá trị N, sau ñó gọi hàm square, in ra giá trị N, gọi
hàm square2, in ra giá trị N . Giải thích kết quả
3.2 Phạm vi biến và truyền tham số
Cho chương trình sau:
#include <iostream>
using namespace std;
int xyz; // xyz là toàn cuc
int add1 (int xyz) // xyz la bien cuc bo trong than cua ham add1
{
if (xyz > 0)
{
int xyz; // xyz là cac bien cuc bo cua khoi nay
xyz = 5;
cout <<"xyz thuoc khoi: "<<xyz <<endl;
}
xyz = xyz+1;
cout <<"xyz cua ham: "<<xyz <<endl;
return (xyz);
} //end add1
// start main
int main()
{
xyz=3;
cout<<"Bien xyz toan cuc:"<<xyz<<endl;
cout<<"Truyen xyz cho tester:"<<add1(xyz)<<endl;
cout<<"Bien xyz toan cuc:"<<xyz<<endl;
return 0;
}
a) Chạy chương trình trên, giải thích kết quả
b) Sửa lại dòng int add1 (int xyz) thành int add1 (int & xyz) chạy lại chương trình, giải
thích kết quả

Kỹ Thuật Lập Trình C++ Trang 35


VAA. ðTVTHK Tài Liệu Thực Hành

3.3 Tham số hàm


Cho chương trình sau
// passing parameters by reference
#include <iostream>
void duplicate (int& a, int& b,int& c)
{
a*=2;
b*=2;
c*=2;
}

// start main
int main ()
{
int x=1, y=3, z=7;
duplicate (x, y, z);
cout << "x=" << x << ", y=" << y << ", z=" << z;
return 0;
}
a) Chạy chương trình trên, giải thích kết quả?
b) Nếu bỏ dấu & trong khai báo hàm duplicate thì kết quả thực hiện như thế nào? Giải
thích?
3.4 Biến tòan cục và cục bộ
#include <iostream.h>
float number = 21.3; // a global variable
int main()
{
float number = 26.4; // a local variable
cout << "The value of global number is " << ::number << endl;
cout << "The value of local number is " << number << endl;
return 0;
}
a) Chạy chương trình trên, cho biết kết quả? Giải thích?
3.5 Storage class
#include <iostream>
using namespace std;
int add2step (int); // function prototype

// start main
int main()
{
int count, value; // count is a local auto variable
for(count = 1; count <= 10; count++)

Kỹ Thuật Lập Trình C++ Trang 36


VAA. ðTVTHK Tài Liệu Thực Hành

value = add2step (count);


cout << count << ‘\t’ << value << endl;
return 0;
}
// function
int add2step ( int x)
{
int sum = 100; // sum is a local auto variable
sum += x;
return sum;
}
a) Chạy thử chương trình trên và cho biết kết quả?
b) Trong hàm add2step, thay thế dòng int sum = 100; bằng static int sum = 100; chạy lại
chương trình, cho biết kết quả, nhận xét?
3.6 Viết hàm tính số nút của 1 số nguyên dương
// Tính số nút của số nguyên dương. VD: n=567, số nút là 8,
// n= 45698, số nút = 2
int tinh_so_nut (unsigned long n)
{
// code here
}
a) Hòan chỉnh hàm trên
b) Viết một chương trình C++, ñọc vào hai số nguyên dương N, sau ñó gọi hàm ñã viết ở
phần a ñể in ra số nút của số ñã nhập
3.7 Ước số chung lớn nhất giữa hai số nguyên
 PP 1:
Cho 1 biến i chạy từ Min(a,b) ñến 1, nếu cả a và b ñều chia hết cho i thì dừng và i
chính là uscln.
VD: uscln của 8 và 12: 8, 7, 6, 5, 4 => USCLN của 12 và 8 là 4.
//code
if (a < b)
uscln = a;
else
uscln = b;
while (a % uscln != 0 || b % uscln != 0)
uscln--;

 PP 2:
USCLN của a & b (a khác b), ký hiệu (a, b) là:
1. (a – b, b) nếu a > b
2. (a, b – a) nếu b > a
3. Lặp lại bước 1, 2 cho ñến khi a=b
VD: uscln của 8 và 12: (12, 8) = (12-8, 8) = (4, 4) =>uscln là 4
//code

Kỹ Thuật Lập Trình C++ Trang 37


VAA. ðTVTHK Tài Liệu Thực Hành

while (a <> b)
{
if (a > b)
a = a – b;
else
b = b – a;
}

Khai báo như sau: int uscln(int a, int b)


a) Hòan tất ñọan mã nguồn hàm uscln trên
b) Viết một chương trình C++ ñể kiểm tra hàm trên?
3.8 Hàm tính N!
Viết hàm tính N! sử dụng vòng lặp: unsinged long giai_thua (int n)
a) Viết một chương trình C++ sử dụng vòng lặp while ñọc vào nhiều số N và gọi hàm trên
ñể in ra kết quả N!. Vòng lặp sẽ chấm dứt khi người sử dụng nhập vào số âm.
b) Viết thêm hàm giai_thua2 sử dụng kỹ thuật gọi ñệ quy, thử lại kết quả?
3.9 Kiểm tra dãy số duy nhất
Viết một hàm kiểm tra xem tất cả mọi phần tử của một dãy số nguyên có duy nhất hay không
(tức là dãy sẽ không có hai phần tử riêng biệt nào có cùng giá trị). Ví dụ dãy {1,2,3,4,5} là duy
nhất, còn dãy {1,2,3,2,5} là không duy nhất vì lặp lại giá trị 2. Viết chương trình sử dụng hàm
trên ñể kiểm tra.
3.10 Viết các hàm sau, Mỗi ý (a), (b),… là 1 hàm
Hàm nhận vào một số nguyên dương n và thực hiện
a) Trả về số ñảo của số ñó. VD: N=243  trả về 342
b) Có phải là số ñối xứng. VD: N= 121  trả về TRUE, N=123  FALSE
c) Có phải là số nguyên tố. VD: N=13  trả về TRUE, N=8  FALSE
d) Tổng các chữ số lẻ. VD: N=1235  Trả về 8
e) Tổng các chữ số chẵn. VD: N=1235  Trả về 2
f) Có phải số chính phương hay không?
Viết chương trình nhập vào số nguyên dương N, sau ñó sử dụng các hàm trên ñể in ra kết
quả
3.11 Hàm in_nghiem_pt_bac1 ñược viết như sau:
void in_nghiem_pt_bac1(int so_nghiem)
{
switch (so_nghiem)
{
case 0:
cout << “ Phuong trinh “<<a<<”x +” <<b<<” =0 Vo Nghiem\n”
break;
case 1:
cout << “ Phuong trinh “<<a<<”x +” <<b<<” =0 “

Kỹ Thuật Lập Trình C++ Trang 38


VAA. ðTVTHK Tài Liệu Thực Hành

cout << “Co Nghiem la: x = <<-b/a << endl;


break;
case -1:
cout << “ Phuong trinh “<<a<<”x +” <<b<<” =0 Co Vo So Nghiem\n”
break;
} // end switch
} // end function

int giai_pt_bac1 (float a, float b)


{
// code here
}
Giá trị trả về: 0: Vô Nghiệm; 1 Có 1 Nghiệm, -1: Vô số nghiệm
Hòan tất hàm trên, sau ñó viết chương trình nhập 2 số a, b, sử dụng 2 hàm trên ñể in ra kết
quả.
3.12 Viết hàm giải phương trình bậc 2: ax2+bx+c=0 bao gồm các hàm như sau:
// Hàm Tính delta = b*b - 4*a*c
float tinh_delta ( float a, float, b, float c)

void in_nghiem_pt_bac1(int so_nghiem)


int giai_pt_bac1 (float a, float b)

/* Hàm giải phương trình bậc 2.


Giá trị trả về: (Gợi ý)
0 : vô Nghiệm;
1 : No Kép: -b/2a,
2 : có 2 nghiệm:
-1 : Pt bậc 1
-2 : vô số nghiệm
*/

int giai_pt_bac2 (float a, float b, float c)

/*Hàm in ra nghiệm số:


Tham số truyền vào là giá trị ở trên
*/

void in_nghiem_pt_bac2(int i)
{
// code here
}
Hòan tất các hàm trên, sau ñó viết chương trình sử dụng các hàm trên ñể giải và biện luận
nhiều lần phương trình bậc 2. Có nhắc dấu hiệu ñể thoát sau mỗi lần nhập.
Ví dụ màn hình kết quả khi thực hiện như sau:

Kỹ Thuật Lập Trình C++ Trang 39


VAA. ðTVTHK Tài Liệu Thực Hành

• Nhập 3 số a, b, c: 1 2 1
• Phương trinh 1*x*x + 2*x + 1 = 0 co 1 nghiem kep: -1
• Ban muon tiep tuc (Nhan Y: tiep tuc; N: thoat)?: Y
• Nhap 3 so a, b, c: 0 0 0
• Phương trinh 0*x*x + 0*x + 0 = 0 co vo so nghiem
• Ban muon tiep tuc (Nhan Y: tiep tuc; N: thoat)?: N
3.13 Viết hàm trả vể số lớn nhất của 4 số a, b , c, d.
3.14 Viết hàm trả vể số nhỏ nhất của 4 số a, b , c, d
3.15 Viết hàm trả về giá trị True nếu ñối số là số nguyên tố. Viết chương trình sử dụng
hàm trên ñể in ra các số nguyên tố từ 1 ñến N, N nhập vào từ bàn phím
3.16 Viết lại các bài 3.12, 3.13, 3.14, 3.15 trong lab03 sử dụng hàm

Kỹ Thuật Lập Trình C++ Trang 40


VAA. ðTVTHK Tài Liệu Thực Hành

LAB05: Mảng - Array

Nội Dung Chính


Lab 05: Array ............................................................................................................................... 42
0. Mục tiêu ................................................................................................................................ 42
1. Yêu cầu trước khi vào buổi thực hành này .......................................................................... 42
2. Kiểm tra kiến thức lý thuyết (3 phút/câu) .............................................................................. 42
3. Chương trình ........................................................................................................................ 44
3.1 Sắp xếp mảng ................................................................................................................. 44
3.2 Mảng số nguyên.............................................................................................................. 44
3.3 Nhập dãy số tăng, chèn số mới ...................................................................................... 44
3.4 Viết chương trình nhập 1 mảng số nguyên sau ñó ......................................................... 44
3.5 Mảng và số nguyên tố ..................................................................................................... 44
3.6 Nhập chuỗi ...................................................................................................................... 45
3.7 Thao tác chuỗi................................................................................................................. 45
3.8 Tính tóan trên mảng ........................................................................................................ 45
3.9 Cấu trúc .......................................................................................................................... 45
3.10 Cấu trúc ngày tháng ...................................................................................................... 46
3.11 Chương trình thống kê chuỗi ........................................................................................ 47
3.12 Số phức ........................................................................................................................ 47

Kỹ Thuật Lập Trình C++ Trang 41


VAA. ðTVTHK Tài Liệu Thực Hành

Lab 05: Array

0. Mục tiêu
• Sử dụng thành thạo mảng trong C++, bao gồm:
o Khai báo, truy cập mảng 1, 2 chiều
o Hàm và mảng
o Giải thuật cơ bản về mảng: sort, search,…
o Tách/gộp mảng
o Xóa, chèn phần tử vào mảng
o Cấu trúc và mảng
• Hòan tất Lab05 tại lớp trong vòng 90 phút
1. Yêu cầu trước khi vào buổi thực hành này
• Hòan tất Lab01, La02, Lab03, Lab04
• Nắm vững kiến thức về mảng, cấu trúc, mảng và hàm
• Hiểu rõ các ví dụ trong bài giảng Chương 5: Array
• Làm trước các bài trong mục 2 và 3 trước khi vào phòng Lab. Mỗi SV phải có 1 bản
copy của bài Lab này.
• Lưu ý: Các ñọan mã nguồn trong bài sau có thể có lỗi khi biên dịch. Hãy sửa lại và
thêm các file header phù hợp nếu cần.
2. Kiểm tra kiến thức lý thuyết (3 phút/câu)
2.1 Trả lời các câu hỏi sau: return 0;
a) Có bao nhiêu phần tử trong khai báo }
sau? Phần từ thứ nhất và phần tử sau 2.3 Cho biết kết quả màn hình khi chạy ñọan code
cùng? sau:
int a[5]; # define MAX 5
b) Tìm chỗ sai trong ñọan code sau, void bubbleSort(int a[ ], int n)
sửa lại cho ñúng: {
int a[5]; int i, j;
for(i = 1; i <= 5; i = i + 1) for (i = 0; i < n - 1; i++)
a[i] = 0; for (j = i + 1; j < n; j++)
c) Tìm chổ sai trong ñọan code sau, sửa lại if (a[i] > a[j])
cho ñúng {
int a[10] = { 0 }, b[10]; int t = a[i] ;
b = a; a[i] = a[j] ;
a[j] = t;
2.2 Cho biết kết quả màn hình khi chạy ñọan code
sau:
}
# define MAX 5 } //end function
int main() int main()
{ {
int a[MAX] = {0}, i, j = 2; int a[MAX] = {3, 7, 4, 6, 9};
for (i = 0; i < 3; i++) bubbleSort(a, MAX);
a[i] = j+i; cout << a[0] << a[3];
cout << a[0] << a[3]; return 0

Kỹ Thuật Lập Trình C++ Trang 42


VAA. ðTVTHK Tài Liệu Thực Hành

} 2.8 Cho biết kết quả màn hình khi chạy


2.4 Cho biết kết quả màn hình khi chạy ñọan code ñọan code sau:
sau: # define MAX 5
# define MAX 5 void swap (int &x, int &y)
int main() {
{ int t = x;
int a1[MAX] = {0}, a2[MAX]={1, 2, 3, x = y;
4, 5}; y = temp;
a1 = a2 ; }
cout << a1[0] << a1[3]; void bubbleSort(int a[ ], int n)
return 0; {
} int i, j;
2.5 Cho biết kết quả màn hình khi chạy ñọan code for (i = 0; i < n - 1; i++)
sau: for (j = i + 1; j < n; j++)
int main() if (a[i] > a[j])
{ swap(a[i], a[j]) ;
int a [ ]={1, 3, 4, 2, 5}, i, min; }
min = a[1]; int main()
for ( i = 1; i <5 ; i++) {
if (a[i] < min) min =a[i] ; int a[MAX] = {3, 7, 4, 6, 9};
cout << min; bubbleSort(a, MAX);
return 0; cout << a[0] << a[3];
} return 0;
2.6 Cho biết kết quả màn hình khi chạy ñọan code }
sau:
void swap(int a, int b)
{
int t = a;
a = b;
b = temp;
}
int main()
{
int a = 3, b = 2;
swap(a,b);
cout << a << b;
return 0;
}
2.7 Kết quả biểu thức
Cho khai báo như sau:
int grades[3][5] = {80, 90, 96, 73,
65, 67, 90, 68, 92, 84, 70, 55, 95, 78, 100};
Xác ñịnh biểu thức không hợp lệ (nếu có) và
tính giá trị của biểu thức nếu hợp lệ:
a) grades[2][3]
b) grades[2][4]
c) grades[0][1]

Kỹ Thuật Lập Trình C++ Trang 43


VAA. ðTVTHK Tài Liệu Thực Hành

3. Chương trình
3.1 Sắp xếp mảng
Chương trình nhập ñiểm trung bình của N SV và in ñiểm theo thứ tự từ lớn ñến nhỏ.
a) Nhập ñiểm của N sinh viên vào mảng diem_sv
b) Tạo bản sao của mảng diem_sv là diem_sv_sorted
c) Sắp xếp mảng diem_sv_sorted theo thứ tự tăng/giảm
In ra danh sách ñiểm theo thứ tự tăng/giảm
3.2 Mảng số nguyên
Viết Hàm thực hiện
a. Nhập N số nguyên vào mảng a, N ñược nhập vào từ bàn phím
b. In ra chuổi số nguyên ñã nhập.
c. Copy nội dung mảng a sang mảng b, sau ñây, thao tác trên b.
d. In ra chuỗi số nguyên theo thứ tự tăng dần
e. In ra chuỗi số nguyên theo thứ tự nhỏ dần
f. In ra số lớn nhất, nhỏ nhất trong chuỗi ñã nhập
g. Nhập thêm 1 số sau ñó chèn vào ñúng vị trí ñã sắp xếp trong mảng
h. Nhập vào vị trí cần xóa, sau ñó xóa phần tử mảng tại vị trí ñó
i. Nhập vào giá trị, tìm kiếm giá trị ñó trong mảng ñã nhập
j. Nhập số k (k<N), tách mảng b thành 2 mảng b1, b2
k. Tách mảng b thành 2 mảng: mảng b1: chứa số nguyên âm, b2: chứa số nguyên dương
Viết chương trình ñể kiểm tra lại các hàm trên.
Gợi ý: Xem lại giải thuật trong phần bài giảng, viết mỗi câu b, c, … k là 1 hàm
3.3 Nhập dãy số tăng, chèn số mới
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.
3.4 Viết chương trình nhập 1 mảng số nguyên sau ñó
a. Kiểm tra mảng có bao nhiêu số chẵn
b. Mảng có bao nhiêu số lẻ
c. Bao nhiêu số chia hết cho 5 nhưng không chia hết cho 7
d. Bao nhiêu số nguyên tố
e. Bao nhiêu số chính phương
f. Bao nhiêu số hòan hảo
Sử dụng hàm cho mỗi câu. Viết chương trình ñể kiểm tra lại các hàm trên.
3.5 Mảng và số nguyên tố
Viết chương trình bao gồm:
1. Hàm kiểm tra 1 số có phải là số nguyên tố hay không

Lab01: Biểu thức, tóan tử trong C++ Page 44


VAA. ðTVTHK Tài Liệu Thực Hành

2. Hàm nhập mảng


Chương trình chính sử dụng 2 hàm trên nhập vào N số nguyên dương, sau ñó in ra các số
nguyên tố có trong mảng. Tính tổng của các số nguyên tố này
3.6 Nhập chuỗi
Ví dụ về nhập chuỗi string có khỏang trắng sử dụng getline.
#include <iostream.h>
int main ()
{
char mybuffer [100];
cout << "What's your name? ";
cin.getline (mybuffer,100);
cout << "Hello " << mybuffer << ".\n";
cout << "Which is your favourite team? ";
cin.getline (mybuffer,100);
cout << "I like " << mybuffer << " too.\n";
return 0;
}
a) Chạy ñọan chương trình trên, nhập họ tên, cách nhau bởi khỏang trắng
b) Thay thế cin.getline bằng lệnh cin >> cho biết kết quả
3.7 Thao tác chuỗi
Viết một chương trình nhập vào N chuỗi từ bàn phím (N cũng ñược nhập vào từ bàn phím)
sau ñó
a) In N chuỗi này theo thứ tự alphabet
b) Tìm số khỏang trắng có trong N chuỗi trên
G i ý: s d ng hàm trong th vin string.h
3.8 Tính tóan trên mảng
Viết chương trình nhập vào N số nguyên dương từ bàn phím sau ñó in ra tần xuất xuất hiện
của các chữ số từ 0 ñến 9 của N số trên dưới dạng biểu ñồ như hình sau:
0: ***************** (10)
1: *********** (8)
2: * (1)

3.9 Cấu trúc
Cho chương trình có cấu trúc như sau:
#include<iostream.h>
#include<string.h>
const int MAX = 100
struct student{
char name[20];
long int rollno;

Lab01: Biểu thức, tóan tử trong C++ Page 45


VAA. ðTVTHK Tài Liệu Thực Hành

char sex;
float height;
float weight;
};
int main()
{
student cls[MAX];
int i, n;
cout << “ How many names do you want to input? \n“;
cin >> n;
for( i = 0; i <= n-1; ++i)
{
cout << “record = “<< i+1 << endl;
cout << “name : “; cin>> cls[i].name;
cout << “rollno : “; cin>> cls[i].rollno;
cout << “sex : “; cin>> cls[i].sex;
cout << “height : “; cin>> cls[i].height;
cout << “weight : “; cin>> cls[i].weight;
cout >> endl;
}
……
}
Thêm các phát biểu cần thiết vào chương trình trên ñể thực hiện các công việc sau:
a. Hiển thị dữ liệu của n sinh viên theo ñịnh dạng sau:
Name Rollno Sex Height Weight
------ -------- ---- ------- --------
------ -------- ---- ------- --------
b. Tính toán và hiển thị chiều cao (height) trung bình và cân nặng (weight) trung
bình của các sinh viên.
3.10 ðiểm thi
ðiểm tri IELTS của 1 SV bao gồm 4 phần: ðiểm Nghe (L), Nói (S), ðọc (R), Viết (W), các ñiểm
này ñược tính theo thang ñiểm 10, thấp nhất là 1 ñiểm, nhiều nhất là 10ñ. ðiểm IELTS là ñiểm
trung bình của 4 ñiểm nói trên ñược làm tròn ñến 1 con số.
Một phòng thi IELTS có tối ña 40 thí sinh. Mỗi thí sinh sẽ có báo danh từ 100 ñến 999. Viết
chương trình cho phép nhập số báo danh, ñiểm thi của 4 môn của các thí sinh tại 1 phòng thi,
sau ñó:
1) In ra ñiểm trung bình của 1 phòng thi
2) In ra danh sách thí sinh theo ñiểm trung bình từ cao ñến thấp
3) In ra thí sinh có ñiểm cao nhất của từng môn
4) In ra thí sinh có ñiểm thấp nhất của từng môn

Màn hình khi in ra câu (4) như sau:


SV L S R W Mean Rank

Lab01: Biểu thức, tóan tử trong C++ Page 46


VAA. ðTVTHK Tài Liệu Thực Hành

103 5 7 6 8 6.5 1
….
Màn hình khi in ra câu (5, 6) như sau:
Maximum of Listening:
SV L S R W Mean Rank
103 9 7 6 8 X.5 4
Maximum of Speaking:
SV L S R W Mean Rank
103 5 8 6 8 6.5 3
3.11 Chương trình thống kê chuỗi
a. Viết chương trình nhập vào một chuỗi ñếm xem chuỗi có bao nhiêu từ. Các từ cách
nhau bằng khoảng trắng, dấu chấm câu: dấu chấm (.), dấu phẩy (,), dấu chấm phẩy (;),
dấu hỏi (?) và dấu chấm than (!).
b. Thêm chức năng ñổi những ký tự ñầu tiên của mỗi từ thành chữ in hoa
3.12 Số phức
Viết chương trình khai báo kiểu dữ liệu thể hiện một số phức, sử dụng khai báo này ñể viết
chương trình nhập 2 số phức, in ra tổng, hiệu, tích của hai số phức.

Lab01: Biểu thức, tóan tử trong C++ Page 47

You might also like