Professional Documents
Culture Documents
VHU-C1-Các Khái Niệm Cơ Bản
VHU-C1-Các Khái Niệm Cơ Bản
1
9/12/2022
2
9/12/2022
Condition
đúng
Code 1
3
9/12/2022
Ví dụ: if ((a>10)&&(a<20))
4
9/12/2022
5
9/12/2022
Bài tập 1: Viết chương trình với ngôn ngữ tự nhiên và ngôn ngữ C++
nhập điểm giữa kỳ và điểm cuối kỳ của môn học lập trình C++.
Xuất điểm trung bình của sinh viên đối với môn đó ra màn hình.
∗3+ ∗7
ℎ=
10
Nếu điểm trung bình sinh viên >= 4 điểm thì sinh viên đậu
Nếu điểm trung bình sinh viên < 4 điểm thì sinh viên không đậu
1. Cấu trúc điều khiển if: //Khai báo hàm thư viện
// Khai báo hàm xử lý chính
Ví dụ 1: start { //biến nhập
DiemGK, DiemCK kiểu số thực;
//biến xuất
Nhập DiemGK, DiemCK DiemTB kiểu số thực;
//nhập liệu
Xuất ra màn hình “Nhap diem GK”;
DiemGK = giá trị nhập từ bàn phím;
DiemTB=(DiemGK*3+DiemCK*7)/10
Xuất ra màn hình “Nhap diem GK”;
DiemGK = giá trị nhập từ bàn phím;
//xử lý
DiemTB>=4 DiemTB=(DiemGK*3+DiemCK*7)/10
sai //kết xuất
đúng Nếu (DiemTB>=4) thì
{ Xuất ra màn hình “SV dau”; }
Xuất ra MH “SV Xuất ra MH “SV
Còn không
đau” khong đau”
{
Xuất ra màn hình “SV khong dau”;
end }}
6
9/12/2022
Bài tập 1: Viết một chương trình C++ để nhập lương nhân viên, tính thuế thu nhập và lương ròng (số
tiền lương thực sự mà nhân viên đó nhận được). Với các thông số giả sử như sau (không theo luật
lương, chỉ là con số giả sử để dễ tính toán):
•30% thuế thu nhập nếu lương là 15 triệu.
•20% thuế thu nhập nếu lương từ 7 đến 15 triệu.
•10% thuế thu nhập nếu lương dưới 7 triệu.
Bài tập 2: Viết chương trình C++ để nhập tuổi và in ra kết quả nếu tuổi học sinh đó không đủ điều
kiện vào học lớp 10. Biết tuổi vào lớp 10 của học sinh là 16.
Bài tập 3: Viết chương trình C++ để nhập một số nguyên bất kỳ từ bàn phím và in kết quả ra màn
hình để thông báo cho người dùng biết số đó lớn hay nhỏ hơn 100
14
7
9/12/2022
15
16
8
9/12/2022
Bài tập 4: Viết chương trình C++ để người dùng nhập vào 3 số nguyên và tìm số lớn nhất trong
3 số đó.
Bài tập 5: Viết chương trình C++ xếp hạng học lực của học sinh dựa trên các điểm bài kiểm tra,
điểm thi giữa kỳ, điểm thi cuối kỳ. Nếu:
•Điểm trung bình >= 9.0 là hạng A.
•Điểm trung bình >=7.0 và < 9.0 là hạng B
•Điểm trung bình >=5.0 và < 7.0 là hạng C
•Điểm trung bình <5.0 là hạng F
Bài tập 6: Viết chương trình C++ để tìm nghiệm của phương trình bậc hai ax2 + bx + c = 0. Biết rằng:
•Nếu a và b cùng bằng 0 thì phương trình vô nghiệm.
•Nếu a=0 thì phương trình có một nghiệm là (-c/b).
•Nếu b2-4ac < 0, thì phương trình vô nghiệm.
•Nếu không, phương trình có hai nghiệm, dùng công thức tính nghiệm để tính.
17
Bài tập 7: Cửa hàng của bạn nhận gửi bán sản phẩm cho một công ty khác và hưởng hoa hồng, với
mức hoa hồng theo doanh số bán như sau:
•5% nếu tổng doanh số nhỏ hơn hoặc bằng 100 triệu.
•10% nếu tổng doanh số nhỏ hơn hoặc bằng 300 triệu.
•20 % nếu tổng doanh số là lớn hơn 300 triệu.
Hãy viết chương trình C++ để tính hoa hồng bạn sẽ nhận được dựa trên doanh số bán hàng.
Bài tập 8: Viết chương trình C++ để tính cước điện thoại bàn cho một hộ gia đình với các thông số như
sau:
•Phí thuê bao bắt buộc là 25 nghìn.
•600 đồng cho mỗi phút gọi của 50 phút đầu tiên.
•400 đồng cho mỗi phút gọi của 150 phút tiếp theo.
•200 đồng cho bất kỳ phút gọi nào sau 200 phút đầu tiên.
18
9
9/12/2022
Bài tập 7: #include <iostream>#include <conio.h>using namespace std;int main(){long int doanhso;float
hoahong;cout << "Tổng doanh số bán hàng: " <<
endl;cin>>doanhso;if(doanhso<=100){hoahong=doanhso*5/100;cout << "Với tổng doanh số là " <<
doanhso << ", ";cout << "thì hoa hồng nhận được là " << hoahong;}else
if(doanhso<=300){hoahong=doanhso*10/100;cout << "Với tổng doanh số là " << doanhso << ", ";cout <<
"thì hoa hồng nhận được là " << hoahong;}else if(doanhso>300){hoahong=doanhso*20/100;cout << "Với
tổng doanh số là " << doanhso << ", ";cout << "thì hoa hồng nhận được là " << hoahong;}cout <<"\n";
return 0;}
19
Nhập số giờ làm của nhân viên. Viết chương trình với ngôn ngữ tự nhiên và ngôn ngữ
C++ tính lương nhân viên.
10
9/12/2022
11
9/12/2022
if(Condition)
{ Luong = X; }
Luong = (Condition) ? X : Y;
else
{ Luong = Y; }
1. Cấu trúc điều khiển if: //Khai bao ham thu vien
#include <iostream>
Toán tử điều kiện #include <iomanip>
Bài tập 2: using namespace std;
// Khai bao ham xu ly chinh
int main()
{ //bien nhap, bien xuat
float GioLam,Luong;
//nhap lieu
cout<<"Nhap gio lam cua nhan vien: ";
cin>> GioLam;
//xu ly
Luong = (GioLam<=8)? GioLam*200000: GioLam*250000;
//ket xuat
cout << fixed;
cout << setprecision(0);
cout<<"Luong nhan vien la: "<<Luong<<" vnd";
return 0;
}
12
9/12/2022
Phương trình tuyến tính (hay còn gọi là phương trình bậc
một hay phương trình bậc nhất) là một phương trình đại số có dạng: f(x)
= ax + b = 0. Trong đó:
•b là một hằng số (hay hệ số bậc 0).
•a là hệ số bậc một.
Tìm nghiệm của phương trình bậc một như sau:
•x = -b/a (Nếu a khác 0)
•Vô số nghiệm nếu a = 0 và b = 0
•Vô nghiệm nếu a = 0 và b khác 0.
13
9/12/2022
đúng
1. Cấu trúc điều khiển if:
Condition 1 Code 1
Cấu trúc if else if ladder
Cú pháp sai
if (Biểu thức điều kiện – condition 1)
{ Condition 2 Code 2
// Code 1
}
sai
else if (Condition 2) {//Code 2}
else if (Condition 3) {//code 3}
…………….. Condition 3 Code 3
else
{ sai
// Code n
}
Code n
đúng
1. Cấu trúc điều khiển if:
Condition 1 Code 1
Cấu trúc if else if ladder
Cú pháp
if (Biểu thức điều kiện – condition 1)
{ Condition 2 Code 2
// Code 1
}
14
9/12/2022
Viết một chương trình đánh giá xếp hạng học sinh dựa vào các điểm (điểm kiểm tra miệng
(ktm), điểm kiểm tra 15 phút (kt15), điểm kiểm tra 1 tiếng (kt60), điểm kiểm tra cuối kỳ
(ktck)). Công thức tính xếp hạng học sinh như sau:
DTB = (ktm + kt15 + kt60*2 + ktck*2)/6.
•Nếu DTB lớn hơn hoặc bằng 9, xếp loại giỏi
•Nếu DTB nhỏ hơn 9 và lớn hơn hoặc bằng 7, xếp loại khá
•Nếu DTB lớn hơn 5 và nhỏ hơn hoặc bằng 7, xếp loại trung bình
•Nếu DTB nhỏ hơn 5 xếp loại yếu
5 điểm 7 điểm 9 điểm
15
9/12/2022
Câu hỏi : Tính tiền sản phẩm cho khách hàng trong siêu thị biết:
Nếu số lượng sản phẩm mua lớn hơn bằng 50 thì khách hàng giảm 30%
Nếu số lượng sản phẩm mua từ 30 đến 50 sản phẩm thì khách hàng giảm 10%
Nếu số lượng sản phẩm mua nhỏ hơn 30 thì áp dụng đơn giá cũ
case constant_2:
{
Statements;
break;
}
…………………………………………………..
case constant_n:
{
Statements;
break;
}
default:{Statements;}
}
16
9/12/2022
Start
End
17
9/12/2022
Ví dụ như sau:
Cách nào khai báo một biến và gán giá trị số nguyên là đúng trong
các câu lệnh C++ sau?
a. int 1x=10;
b. int x=10;
c. float x=10.0f;
d. string x=″10″;
Chọn ký tự để trả lời: c
Lựa chọn không đúng!
18
9/12/2022
Bài tập 7: Cach nao khai bao mot bien va gan gia tri so nguyen la dung trong
cac cau lenh C++ sau?
a.int 1x=10;
b. int x=10;
c. float x=10.0f;
d. string x=”10″;
Chon ky tu de tra loi: c
Lua chon khong dung!
19
9/12/2022
Bài tập 1: phân loại sinh viên dựa vào kết quả điểm học tập. Nếu điểm A thì
phân loại là sinh viên xuất xắc, điểm B là sinh viên loại giỏi, điểm C là sinh
viên loại khá, điểm D là sinh viên loại trung bình, điểm F là sinh viên loại yếu.
Bài tập 2: kiểm tra một háng hợp lệ từ 1 đến 12, nếu khác các giá trị này thì
tháng nhập không hợp lệ.
39
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{
20
9/12/2022
Bài tập 3: Viết một chương trình in ra màn hình số ngày của một tháng bất kỳ được nhập từ bàn phím
Một năm chúng ta có 12 tháng, mỗi tháng sẽ có số ngày khác nhau, được liệt kê trong bảng dưới đây:
Tháng Số ngày
Tháng 1, 3, 5, 7, 8, 10, 12 31 ngày
Tháng 2 28 hoặc 29 ngày
Tháng 4, 6, 9, 11 30 ngày
Hướng dẫn:
#include <iostream>
using namespace std; case 2:
cout << "Thang " << thang << " co 28 hoac 29 ngày" <<
int main() endl;
{ break;
int thang; case 4:
case 6:
cout << "Thang: "; case 9:
cin >> thang; case 11:
cout << "Thang " << thang << " co 30 ngày" << endl;
switch(thang) { break;
case 1: default:
case 3: cout << "Thang khong hop le" << endl;
case 5: }
case 7: return 0;
case 8: }
case 10:
case 12:
cout << "Thang " << thang << " co 31 ngày" << endl;
break;
42
21
9/12/2022
Bài tập: Viết một chương trình tạo một máy tính đơn giản có các phép tính như cộng, trừ, nhân, chia.
43
#include <iostream>
using namespace std; case '/':
if (so2 != 0) {
int main() ketQua = so1 / so2;
{ } else {
char toanTu;
kt = false;
float so1, so2, ketQua;
bool kt = true; }
44
22
9/12/2022
Bài tập : Viết chương trình kiểm tra một ký tự trong bảng chữ cái tiếng anh là nguyên âm hay phụ âm.
Ký tự là bất kỳ được nhập từ bàn phím
Hướng dẫn giải: Trong bảng chữ cái tiếng anh các ký tự nguyên âm là 'o', 'u', 'i','a', 'e' (không phân biệt
ký tự hoa hoặc ký tự thường), các ký tự còn lại là phụ âm.
45
46
23
9/12/2022
Bài tập: VIết chương trình kiểm tra một số nguyên bất ký được nhập từ bàn
phím là số chẵn hay số lẻ.
Hướng dẫn: Một số được gọi là số chẵn khi nó chia hết cho 2, còn số lẻ thì
không chia hết cho 2
Nhập số từ bàn phím, ta gọi đó là biến so
Sử dụng cấu trúc điều khiển switch case cho so chia 2 lấy phần dư, như là
switch(so%2)
Có 2 giá tri cho so đó là 0 và 1
Nếu số dư là 0 thì in ra màn hình là số chẵn
Nếu số dư là 1 thì in ra màn hình là số lẻ
47
#include <iostream>
using namespace std;
int main()
{
char so;
cout << "Nhap so: ";
cin >> so;
switch(so % 2)
{
case 0:
cout << so << " la so chan" << endl;
break;
case 1:
cout << so << " la so le" << endl;
break;
}
return 0;
}
48
24
9/12/2022
Bài tập: Hãy sử dụng lệnh switch case trong C++ để xây dựng menu cho
một chương trình đơn giản.
Tạo một menu cho ứng dụng quản lý sinh viên, cho phép người dùng chọn
bốn hành động: Xem danh sách, thêm, xóa, sửa, thoát khỏi ứng dụng.
49
return 1;
}
50
25
9/12/2022
while(dieu_kien) { cac_lenh; }
Chú ý: vòng lặp while có thể không chạy phần code block.
Bởi vì khi kiểm tra điều kiện và kết quả là false, phần thân
vòng lặp được bỏ qua và lệnh đầu tiên ngay sau vòng lặp
sẽ được thực thi
26
9/12/2022
27
9/12/2022
Bài tập 1: Hãy sử dụng vòng lặp while và do while để in ra các số từ 1 đến
100.
55
#include <iostream>
using namespace std; #include <iostream>
using namespace std;
int main()
{
int i = 1; int main()
{
// Vong lap while int i = 2;
while (i <= 100){
cout << i << endl;
i++; // Vong lap while
} while (i <= 100){
cout << i << endl;
// Vong lap do while
i = 1; i += 2;
do { }
cout << i << endl; }
i++;
}
while (i <= 100);
}
56
28
9/12/2022
Bài tập 3: Hãy viết chương trình yêu cầu người dùng nhập vào một số nằm trong khoảng từ 1 đến 100.
Nếu người dùng nhập số khác thì yêu cầu nhập lại.
57
while (true){ do {
cout << "Vui long nhap trong khoang 1 den 100: "; cout << "Vui long nhap trong khoang 1 den 100: ";
cin >> num; cin >> num;
if (num >= 1 && num <= 100){ if (num >= 1 && num <= 100){
break; break;
} }
else { else {
cout << "Ban nhap sai roi, hay nhap lai ..." << endl; cout << "Ban nhap sai roi, hay nhap lai ..." << endl;
} }
} } while (true);
cout << "So ban vua nhap la " << num << endl; cout << "So ban vua nhap la " << num << endl;
} }
58
29
9/12/2022
Bài tập: Cho một mảng có độ dài 10 phần tử các số nguyên. Hãy viết chương
trình C++ bằng cách sử dụng vòng lặp while để yêu cầu người dùng nhập dữ
liệu cho mảng đó, sau đó sử dụng do while để in các phần tử lên màn hình.
Bài tập: Hãy viết chương trình yêu cầu người dùng nhập vào một số bất kì
và in số đó lên màn hình. Nếu người dùng nhập vào số 0 thì thoát chương
trình, ngược lại thì nhập liên tục.
59
return 1;
}
60
30
9/12/2022
#include <iostream>
using namespace std;
int main () {
int num;
while (true){
cout << "Vui long nhap vao so bat ki, nhap 0 de thoat: ";
cin >> num;
if (num == 0){
break;
}
else {
cout << "So ban vua nhap la " << num << endl;
}
}
return 1;
}
61
1 4 7 10 ……………31
Bài tập 2: Viết chương trình nhập vào 1 số, xét số đó là số nguyên dương, nguyên âm hay
là số 0
Bài tập 3: Viết chương trình ràng buộc người dùng phải nhập giá trị từ bàn phím là con số
nguyên.
Nếu là ký tự thì xuất ra màn hình là “phải nhập lại giá trị “
String Chuoi; 1
Int.TryParse (Chuoi) 0
31
9/12/2022
i start
1 2 3 4 5
1 2 3 4 5
j int j = 1;
2. Cấu trúc lặp: 1 2 3 4 5
int i;
2.1 Vòng lặp while 1 2 3 4 5
Bài tập 10: Xuất ra màn hình cụm số sau
#include <iostream> Sai
j<=4
using namespace std;
int main () Đúng
{ int j = 1;
while (j <= 4)
{ int i = 1; i = 1 // int i=1
while (i <= 5)
{ cout << i << " "; Sai
i++; i<=5
}
Đúng
cout << endl;
j++; In số i
Tăng i lên 1
}
In “endl” xuống hàng
return 0; Tăng j lên 1 end
}
32
9/12/2022
start
i int j = 1;
2. Cấu trúc lặp:
2.1 Vòng lặp while 1 2 3 4 5 int i;
Bài tập 11: Xuất ra màn hình cụm số sau 1 2 3 4
1 2 3
#include <iostream> Sai
j 1 2 j<=5
using namespace std; 1
int main () Đúng
{ int j = 1;
while ((j <= 5)
{ int i = 1; i=1; //int i = 1
while (i <= (5-j))
{ cout << i << " "; Sai
i++; i<=(6-j)
}
Đúng
cout << “/n”;
In số i
j++;
Tăng i lên 1
}
In “/n” xuống hàng
return 0; Tăng j lên 1 end
}
2. Cấu trúc
lặp:
2.1 Vòng lặp #include <iostream> start
while using namespace std;
Bài tập 12: int main () int So = Nhap tu ban phim;
Viết chương { // Khai bao bien cuc bo: int Tong = 0;
trình tính tổng int So ; int Tong = 0
các số nguyên cout<<“Nhap so can tinh tong:”;
Sai
được nhập từ cin>> So; So!=0
bàn phím cho //xử lý
đến khi nhập while ( So!=0 ) Đúng
số 0 thì dừng {
Tong=Tong + So;
Tong = Tong + So;
S=1+….+n cout<<“Nhap so can tinh tong:”; Xuất Tong ra màn hình
So = Nhap tu ban phim;
cin>> So;
}
cout<<“Tong chuoi so tren la:”; end
return 0; }
Câu hỏi suy nghĩ:làm sao lưu lại dãy số đã nhập để kết xuất lại:
33
9/12/2022
(3)
(4)
34
9/12/2022
#include <iostream>
using namespace std; Xuất chuỗi (3)
int main ()
{ // vong lap for
for( int a = 1; a <=100 ; a = a + 1 ) //a++
a=a+1 (4)
{ cout << " Em se khong vi pham nhu vay nua!" << endl; }
return 0;
}
end
5 7 9 11 13 ……. 93 95
#include <iostream>
using namespace std; (3)
int main ()
Xuất giá trị của a
{ // vong lap for
for( int a = 5; a < 96; a = a + 2 ) (4)
{ cout << "Gia tri cua a la: " << a << endl; } a=a+2
return 0;
}
5 7 9 11 13 ……. 93 95
35
9/12/2022
int i = 1;
while (i <= n)
{
…;
}
int i = 1;
do {
…;
} while (i > n);
36
9/12/2022
37
9/12/2022
if ( n > 0) {
for(int i = 1; i <=n; i++) {
giaithua = giaithua * i;
}
}
cout << " Giai thua cua " << n << " la: " << giaithua << endl;
}
return 0;
2. Cấu trúc lặp: Lệnh continue trong C++ làm việc hơi giống với lệnh break. Thay vì bắt buộc kết
thúc, nó bắt buộc vòng lặp tiếp theo diễn ra, bỏ qua bất kỳ đoạn code nào ở giữa.
2.4 Các lệnh điều khiển vòng lặp
Lệnh continue #include <iostream>
continue; using namespace std;
int main ()
{ // Khai bao bien cuc bo: int a = 10; // vong lap do...while
do { if( a == 15) { // nhay qua buoc lap. a = a + 1; continue; }
cout << "Gia tri cua a la: " << a << endl;
a = a + 1; }
while( a < 20 );
return 0; }
38
9/12/2022
2. Cấu trúc lặp: Ghi chú: Sử dụng lệnh goto gây khó khăn cho bất kỳ ngôn
2.4 Các lệnh điều khiển vòng lặp
Lệnh goto
ngữ chương trình nào bởi vì nó gây khó khăn cho việc theo
dấu dòng điều khiển của một chương trình, làm cho chương
trình khó để hiểu và khó để chỉnh sửa. Bất kỳ chương trình
nào sử dụng một lệnh goto có thể được viết lại để có thể
không cần lệnh goto này
goto label;
.. .
label: lenh;
39
9/12/2022
• Trong đó
• <kiểu trả về> : kiểu bất kỳ của C (char, int, long, float,…). Nếu không trả về thì là void.
• <tên hàm>: theo quy tắc đặt tên định danh. (viết không dấu, dính liền, không có ký tự đặc
biệt)
• <danh sách tham số> : tham số hình thức đầu vào giống khai báo biến, cách nhau bằng dấu ,
• <giá trị> : trả về cho hàm qua lệnh return.
40
9/12/2022
41
9/12/2022
42
9/12/2022
43
9/12/2022
Bài tập 2* (thu hoạch 1): Viết chương trình tính diện tích hình chữ nhật
-Sử dụng 3 chương trình con
Float
Float Float String
1. Định nghĩa hàm và gọi hàm Bài tập 4: Viết chương trình tính tổng hai phân số: sử dụng hàm con
//Khai báo hàm thư viện NhapSoNguyen, TinhTong
#include <iostream> . + . // Khai báo hàm xử lý chính
using namespace std; + = int main ()
//khai báo hàm con . { //biến nhập
int NhapSoNguyen(string Chuoi) int Tuso1, Mauso1,Tuso2, Mauso2;
{ int Kq; //biến xuất
cout<<Chuoi; int Tusotong, Mausotong;
cin>> Kq; //nhập liệu
return Kq; Tuso1=NhapSoNguyen(“Nhap tu so phan so thu nhat “);
} Mauso1=NhapSoNguyen(“Nhap mau so phan so thu nhat”);
int TinhTongTu(int Ts1,int Ms1,int Ts2,int Ms2) Tuso2=NhapSoNguyen(“Nhap tu so phan so thu hai”);
{ int Kq; Mauso2=NhapSoNguyen(“Nhap mau so phan so thu hai”);
Kq = Ts1 * Ms2 + Ts2 * Ms1; //xử lý
return Kq;} Tusotong = TinhTongTu(Tuso1, Mauso1,Tuso2, Mauso2);
int TinhTongMau(int Ms1,int Ms2) Mausotong = TinhTongMau(Mauso1,Mauso2);
{ int Kq;; //kết xuất
Kq = Ms1 * Ms2; cout<<“Tich hai phan so tren la”<<Tusotong << “/” <<Mausotong;
return Kq;} }
44
9/12/2022
Bài tập 5: Viết chương trình tính khoảng cách 2 điểm (x1,y1) và (x2,y2)
Sử dụng hàm con nhập điểm và tính khoảng cách điểm
Y
B
yB
A
= − + −
yA C
xA 0 xB x
Bài tập 5: Viết chương trình tính khoảng cách 2 điểm (x1,y1) // Khai báo hàm xử lý chính
và (x2,y2) int main()
Sử dụng hàm con nhập điểm và tính khoảng cách điểm { //biến nhập
//Khai báo hàm thư viện int xA,yA,xB,yB;
#include <iostream> //biến xuất
#include <math.h> float Khoangcach;
using namespace std; //nhập liệu
//khai báo hàm con
xA= NhapDiem(“Nhap hoanh do toa do A“);
int NhapDiem(string Chuoi)
{ int Kq; yA=NhapDiem(“Nhap tung do toa do A”);
cout<<Chuoi; xB=NhapDiem(“Nhap hoanh do toa do B”);
cin>> Kq; yB=NhapDiem(“Nhap tung do toa do B”);
return Kq; //xử lý
}
Khoangcach = TinhKC(xA,yA,xB,yB);
float TinhKC( int xA,int yA,int xB,int yB)
{ float Kq; //kết xuất
Kq= sqrt((xA-xB)*(xA-xB)+(yA-yB)*(yA- cout<<" Khoang cach hai diem AB la: "<< Khoangcach;
yB)); return 0;
return Kq;} }
45
9/12/2022
Bài tập 7:Nhập vào ba cạnh a, b, c của tam giác. Tính diện tích tam giác.
ℎ= . ( − ). ( − ). ( − )
p : nửa chu vi + +
=
2
( Công thức Heron)
Theo Wikipedia
Bài tập 7:Nhập vào ba cạnh a, b, c của tam giác. Tính diện tích
tam giác.Viết hàm con nhập cạnh ,tính diện tích và hàm kết xuất
//Khai báo hàm thư viện // Khai báo hàm xử lý chính
#include <iostream> int main()
#include <math.h> { //biến nhập
using namespace std; float a,b,c;
//khai báo hàm con //biến xuất
float NhapCanh(string Chuoi) float Dientich;
{ float Kq; //nhập liệu
cout<<Chuoi; a=NhapCanh(“Nhap canh a: ”);
cin>> Kq; b=NhapCanh(“Nhap canh b: ”);
return Kq; c=NhapCanh(“Nhap canh c: ”);
} //xử lý
float TinhKC( float Canha, float Canhb, float Canhc) Dientich=TinhKC(a,b,c);
{ float Kq; //kết xuất
float p=(a+b+c)/2; cout<<" Khoang cach hai diem AB la: "<< Dientich;
Kq= sqrt(p*(p-a)*(p-b)*(p-c)); return 0;
return Kq; }
}
46
9/12/2022
47
9/12/2022
Câu 8: Trình bày thuật toán và viết chương trình C++ tính n!. Biết n!=1.2.3.4…..n
Ví dụ: 5! = 1.2.3.4.5
Tich=1 ;
i=1; Xuất ra màn hình Tich end
Câu 2-KTGK: Trình bày thuật toán và viết chương trình C++ tính n!. Biết n!=1.2.3.4…..n
Ví dụ: 5! = 1.2.3.4.5
start
đ Lưu ý khi chạy thử nghiệm nên nhập số n<10.
Gợi ý:
Tich = Tich * i ; Tich = 1;
//Biến nhập, xuất For()
int n, Tich; {
Tich = Tich * i;
……………..}
Tich=1 ;
Xuất ra màn hình Tich end
48
9/12/2022
//Khai báo hàm thư viện //Khai báo hàm thư viện
#include <iostream> #include <iostream>
using namespace std; using namespace std;
// Khai báo hàm xử lý chính // Khai báo hàm xử lý chính
int main() int main()
{ //biến nhập { //biến nhập
int n, i=1; int n ;
//biến xuất //biến xuất
int Tich=1; int Tich;
//nhập liệu //nhập liệu
cout<<“Nhap n“; cout<<“Nhap n“;
cin>> n; cin>> n;
//xử lý //xử lý
while (i<=n) for(int i =1 ; i<=n ; i++ )
{ {
Tich = Tich*i; Tich = Tich*i;
i=i+1; //i++ }
} cout<<“Ket qua la: ”<<Tich; cout<<“Ket qua la: ”<<Tich; return 0;
return 0; }
}
Bài tập 9: Một giải bóng đá có 12 đội tham gia thi đấu , đấu vòng tròn 2 lượt gồm
lượt đi và lượt về . Hỏi cả giải có bao nhiêu trận đấu ?
Xây dựng chương trình cho người dùng nhập số đội thi đấu vòng tròn 2 lượt và cho
biết kết quả có bao nhiêu trận đấu?
49
9/12/2022
Toán học tổ hợp (hay giải tích tổ hợp, đại số tổ hợp, lý thuyết tổ hợp) là một ngành toán học rời rạc, nghiên cứu
về các cấu hình kết hợp các phần tử của một tập hợp có hữu hạn phần tử. Các cấu hình đó là các hoán vị, chỉnh
hợp, tổ hợp,... các phần tử của một tập hợp.
Nó có liên quan đến nhiều lĩnh vực khác của toán học, như đại số, lý thuyết xác suất, lý thuyết ergod (ergodic theory)
và hình học, cũng như đến các ngành ứng dụng như khoa học máy tính và vật lý thống kê.
Toán học tổ hợp liên quan đến cả khía cạnh giải quyết vấn đề lẫn xây dựng cơ sở lý thuyết, mặc dù nhiều phương
pháp lý thuyết vững mạnh đã được xây dựng, tập trung vào cuối thế kỷ XX (xem trang Danh sách các chủ đề trong
toán học tổ hợp). Một trong những mảng lâu đời nhất của toán học tổ hợp là lý thuyết đồ thị, mà bản thân lý thuyết này
lại có nhiều kết nối tự nhiên đến các lĩnh vực khác ( Wikipedia)
Bài tập 9: Một giải bóng đá có 12 đội tham gia thi đấu , đấu vòng tròn 2 lượt gồm
lượt đi và lượt về . Hỏi cả giải có bao nhiêu trận đấu ?
HD: -Mỗi trận bóng đá gồm 2 đội lấy từ 12 đội Vậy số trận diễn ra từ 12 đội coi như là số tổ hợp
chập 2 của 12 phần tử , vậy có = 66 trận.
- vì có lượt đi và lượt về nên số trận đấu là 66.2=132 trận.
50
9/12/2022
Bài tập 9: Xây dựng chương trình cho người dùng nhập số đội thi đấu vòng tròn 2
lượt và cho biết kết quả có bao nhiêu trận đấu?
start Sodoi = nhập giá trị từ bàn phím Xuất Sotrandau ra
//xử lý
màn hình
SoTranDau = ToHopChap(2,k)*2
end
Giá trị đầu vào Giá trị đầu ra Kq
2,n
Giá trị đầu vào n
Hàm ToHopChap Hàm GiaiThua
Bài tập 9: Xây dựng chương trình cho người dùng nhập số đội thi đấu vòng tròn 2
lượt và cho biết kết quả có bao nhiêu trận đấu?
end
Giá trị đầu vào Giá trị đầu ra Kq
n
Hàm ToHopChap
Kq = Giaithua(n)/(2*Giaithua(n-2))
51
9/12/2022
52
9/12/2022
53
9/12/2022
#include<stdio.h>
Kết quả:
void Tanglen(int num) { Truoc khi goi phuong thuc x = 100
num = num + 1; Sau khi goi phuong thuc x = 100
}
int main() {
int x = 100; 100
cout<<“Truoc khi goi phuong thuc x = “<<x);
TangLen(x); // truyen tham tri vao phuong thuc
cout<<“Sau khi goi phuong thuc x = “<<x;
return 0; }
#include<stdio.h>
int main() {
int x = 100; 100 Biến (Tên biến , Giá trị biến)
cout<<“Truoc khi goi phuong thuc x “<<x);
TangLen(&x); // truyen tham chieu vao phuong thuc
100
cout<<“Sau khi goi phuong thuc x = “<<x);
return 0; } X : tên chính
num : tên bí danh, tên ở nhà
54
9/12/2022
8 -2 3
Bien1 Bien2
-2 8 3 5 1
BienTam
-2 3 8 ……
55
9/12/2022
56
9/12/2022
8 -2 3
Bien1 Bien2
5 1
BienTam
……
5.Bài tập nâng cao kỹ năng: Gợi ý: Toán tử số học trong C++
Bài 1: Nhập vào 1 số nguyên kiểm tra tính chẵn lẻ
Giả sử biến A giữ giá trị 10, biến B giữ 20 thì:
Toán tử Miêu tả Ví dụ
+ Cộng hai toán hạng A + B kết quả là 30
- Trừ toán hạng thứ hai từ toán hạng đầu A - B kết quả là -10
* Nhân hai toán hạng A * B kết quả là 200
/ Phép chia B / A kết quả là 2
% Phép lấy số dư B % A kết quả là 0 ; 3%2 = 1
Toán tử tăng (++), tăng giá trị toán hạng
++ A++ kết quả là 11
thêm một đơn vị <=> a= a+1 ;
Toán tử giảm (--), giảm giá trị toán hạng đi
-- A-- kết quả là 9
một đơn vị <=> a=a-1;
57
9/12/2022
start
đúng Xuất ra màn hình “So
chan”
//biến nhập
So kiểu số nguyên
end
58
9/12/2022
start
đúng Xuất ra màn hình “So
duong”
//biến nhập
So kiểu số nguyên
end
14 5
So1 So2
Bientam
59
9/12/2022
Bientam kiểu số
start nguyên
//biến nhập
So1,So2 kiểu số Bientam =So1;
nguyên So1=So2;
So2=Bientam;
So1,So2 = giá trị nhập
từ bàn phím
end
60
9/12/2022
Bài 4: Tìm ước chung lớn nhất của 2 số nhập từ bàn phím
start
8 14
8 6 UocSoChungLN end
2 6
2 4
2 2
61
9/12/2022
5.Bài tập nâng cao kỹ năng: Bài 4: Tìm ước chung lớn nhất của 2 số nhập từ bàn phím
Cách 1. Tìm UCLN sử dụng phép trừ
start
//Xử lý
while (a!=b)
sai {
a!=b UocSoChungLN end
if ( a>b)
Đúng {
a=a-b;}
else
{ b=b-a;}
}
//Kết xuất
Cout<<“USCLN la: ”<<a;
int UocSoCLN; // __
UocSoCLN=__gcd(SoThuNhat,SoThuHai);
cout<<"Uoc So Chung Lon Nhat la: "<<UocSoCLN;
}
62
9/12/2022
Trong số học, bội số chung nhỏ nhất (hay còn gọi tắt là bội chung nhỏ nhất, viết tắt là BCNN,
tiếng Anh: least common multiple hoặc lowest common multiple (LCM) hoặc smallest common
multiple) của hai số nguyên a và b là số nguyên dương nhỏ nhất chia hết cho cả a và b.[1] Tức là
nó có thể chia cho a và b mà không để lại số dư. Nếu a hoặc b là 0, thì không tồn tại số nguyên
dương chia hết cho a và b, khi đó quy ước rằng LCM(a, b) là 0.
C1. Lặp tăng dần cho tới khi tìm được BCNN
//Xử lý
c=a; d=b; //Tich =a.b;
5.Bài tập nâng cao kỹ năng: while (a!=b)
Bài 5: Tìm bội số chung nhỏ nhất của 2 số nhập từ bàn phím {
if ( a>b)
{
C4. Tìm BCNN của 2 số dựa vào UCLN a=a-b;}
else
8 14 { b=b-a;}
8 6 }
kq = (c*d)/a;//tính BSCNN
2 6 //Kết xuất
2 4 cout<<“BSCNN la: ”<<kq;
2 2
8x14 =112
112:2 = 56
63
9/12/2022
//biến nhập
So1,So2 kiểu số
nguyên đ
Max > So2
//Bien xuat s
Max kiểu số nguyên;
Max=So2 end
cout<<“Nhap vao 2 so bat ky”;
cin>> So1 >> So2;
int main()
{
Cách 2: Sử dụng hàm có sẵn của C++ int a = 3;
int b = 4;
int SoNhoNhat, SoLonNhat;
SoNhoNhat = min(a, b) ;
SoLonNhat = max(a, b);
64
9/12/2022
Max=So4
Max < So4 đ
cout<<“Nhap vao 3 so bat ky”;
cin>> So1 >> So2 >> So3 >> So4 ; s Xuất ra Max
65
9/12/2022
Xuất ra MH “Khong la
So % i== 0 break
so nguyen to”
66
9/12/2022
Bài 9: Viết chương trình C++ để tính cước điện thoại bàn cho một hộ gia đình với các
thông số như sau:
•Phí thuê bao bắt buộc là 25,000.
•600 đồng cho mỗi phút gọi của 50 phút đầu tiên.
•400 đồng cho mỗi phút gọi của 150 phút tiếp theo.
•200 đồng cho mỗi phút gọi của 200 phút tiếp theo
đúng
start Phut<=50 Tien = 25000 + 600*Phut
sai
đúng
Phut<=200 Tien = 25000 + 600*50
+400*(Phut -50) ;
//biến nhập
Int Phut; sai
//Biến xuất Long , Float, Int Tien = 25000 + 600*50 + 400
Double Tien; *150 + 200*(Phut-150-50) end
Int Tich = So * I;
Xuất ra màn hình So + “+” +i+”=”+Tich ;
Cout<<So<<”+”<<i<<”=”<<Tich;
int Tich ;
for (int i=1 ; i<=10 ; i++)
{
Tich = So * i;
cout<<So<<”+”<<i<<”=”<<Tich;
67
9/12/2022
}
System(“cls”);//clear
Một biến trong C++ là tên của vị trí bộ nhớ. Nó được sử dụng để lưu trữ dữ
liệu. Giá trị của nó có thể được thay đổi và nó có thể được sử dụng lại nhiều
lần. Mỗi biến trong C++ có một loại dữ liệu cụ thể, xác định kích thước của bộ
nhớ của biến; phạm vi các giá trị có thể được lưu trữ trong bộ nhớ đó.
Biến là một cách để thể hiện vị trí bộ nhớ thông qua một cái tên để nó có thể
được xác định một cách dễ dàng. Tên của một biến có thể bao gồm các chữ
cái, chữ số và ký tự gạch dưới. Nó phải bắt đầu bằng một chữ cái thư hoặc
một gạch dưới. Biến trong C++ có phân biệt chữ hoa và chữ thường
136
68
9/12/2022
137
Một biến có thể có các chữ cái, chữ số và dấu gạch dưới.
Tên biến chỉ có thể bắt đầu bằng bảng chữ cái và dấu gạch dưới. Nó không thể
bắt đầu bằng chữ số.
Không có khoảng trắng trong tên biến.
Tên biến không phải là bất kỳ từ hoặc từ khóa dành riêng như int, float, vv.
int a; int 2;
int _ab; int a b;
int a30; int long;
138
69
9/12/2022
139
void function1() {
int x = 10; // bien local
}
140
70
9/12/2022
void function1() {
int x = 10; // bien local
}
141
int main() {
function1();
x = 11, y = 11
function1();
x = 11, y = 12
function1();
x = 11, y = 13
return 0;
}
142
71
9/12/2022
4. Biến external.
Chúng ta có thể chia sẻ một biến trong nhiều tập tin mã nguồn C bằng cách sử
dụng biến external. Để khai báo biến bên ngoài, bạn cần sử dụng từ khóa
extern
File: myfile.h File: test.cpp
#include <iostream>
#include "myfile.h"
extern int x = 10;
using namespace std;
// bien external variable (cung la bien global)
void printValue() {
cout << "x: " << x;
}
int main() {
printValue();
} 143
144
72
9/12/2022
145
146
73
9/12/2022
147
148
74
9/12/2022
149
150
75